Buggy code:
public abstract class Manipulator { public Marker marker ( ) { } public PipedInput < QCAVector > execute ( QCAVector vector , Node node ) throws IOException { } public final PipedInput < QCAVector > execute ( Relationship op ) throws IOException { } public final PipedInput < QCAVector > execute ( QCAVector vector ) throws IOException { } public final PipedInput < QCAVector > execute ( QCAVector vector , Subscribable < PFlow > sub , final boolean fullEval ) throws IOException { final PipedOutput < QCAVector > out = new PipedOutput < QCAVector > ( ) ; PipedInput < QCAVector > in = out . getInputStream ( ) ; Relationship op = vector . getClosest ( ) ; if ( sub == null ) { sub = onQuestion ( op ) ; } if ( sub == null ) { if ( op instanceof Relationship ) { vector . setAnswer ( op ) ; out . write ( vector ) ; } else System . out . println ( ( "UNHANDLED<seq2seq4repair_space>op<seq2seq4repair_space>" + op ) ) ; out . close ( ) ; return in ; } final PFlow pf = new PFlow ( vector ) ; try { pf . cyclingDetection ( ) ; } catch ( AnimoException e ) { e . printStackTrace ( ) ; throw new IOException ( e ) ; } <START_BUG> pf . questionChannel ( ) . subscribe ( Executor . getFiber ( ) , sub ) ; <END_BUG> Subscribable < QCAVector > onAnswer = new OnContext ( Executor . getFiber ( ) ) { public void onMessage ( QCAVector context ) { super . onMessage ( context ) ; try { if ( context == null ) { pf . countDown ( out ) ; } else if ( ( context . getAnswer ( ) ) != null ) { Statement s = null ; Relationship msg = context . getAnswer ( ) ; if ( context . getUnrelaxedAnswer ( ) . isType ( RESULT ) ) { Statement qS = Statements . relationshipType ( context . getQuestion ( ) ) ; if ( qS instanceof Shift ) { out . write ( context ) ; return ; } else if ( ! fullEval ) { out . write ( context ) ; return ; } try { s = Statements . name ( ( ( String ) ( _ . reference ( msg ) ) ) ) ; } catch ( Exception e ) { } } if ( ( msg . isType ( org . animotron . statement . operator . REF . _ ) ) || ( msg . isType ( REF ) ) ) { s = Statements . name ( ( ( String ) ( _ . reference ( msg ) ) ) ) ; } if ( ( s != null ) && ( s instanceof Evaluable ) ) { PipedInput < QCAVector > in = execute ( context , ( ( Evaluable ) ( s ) ) . onCalcQuestion ( ) , fullEval ) ; for ( QCAVector v : in ) { out . write ( v ) ; } } else if ( s == null ) { s = Statements . relationshipType ( msg ) ; Statement qS = Statements . relationshipType ( context . getQuestion ( ) ) ; if ( ( s instanceof Evaluable ) && ( ! ( qS instanceof Shift ) ) ) { PipedInput < QCAVector > in = Evaluator . _ . execute ( context ) ; for ( QCAVector v : in ) { out . write ( v ) ; } } else { out . write ( context ) ; } } else { out . write ( context ) ; } } else { } } catch ( IOException e ) { pf . sendException ( e ) ; } } } ; pf . answerChannel ( ) . subscribe ( onAnswer . getQueue ( ) , onAnswer ) ; pf . questionChannel ( ) . publish ( pf ) ; return in ; } public Subscribable < PFlow > onQuestion ( final Relationship op ) { } public static void sendQuestion ( final PipedOutput < QCAVector > out , final QCAVector vector , final Node node ) throws IOException { } public static void sendQuestion ( final OnContext onAnswer , final QCAVector vector , final Node node ) { } }

Fix:
pf . questionChannel ( ) . subscribe ( sub ) ;