Actualmente la comunicación con el intérprete Coq está hecha sin encapsular la
creación del proceso ni la lectura de la salida del mismo. La salida es colocada en
un buffer de salida que luego es consumido por clases suscriptoras al mismo.
Esta arquitectura dificulta considerablemente la depuración de fallas y además
presenta en ocasiones problemas de condición de carrera al no tenerse siempre en cuenta
la manera en que el intérprete indica que efectivamente se ha tenido una salida
(mediante la presencia de un prompt) y utilizando en su lugar un timer para estimar
que se ha tenido una respuesta.
Sería recomendable refactorizar el modelo actual en uno que encapsule en una clase
tanto el manejo del ciclo de vida del intérprete como la comunicación con el mismo
mediante métodos sincrónicos de uso sencillo para el resto de los componentes. La
idea es delegar la dificultades inherentes al manejo de procesos nativos a este
componente de manera de lograr una mejor mantenibilidad del plugin.