Buggy code:
@ Override public void visit ( UnaryExpr expr ) { } @ Override public void visit ( ConditionalExpr expr ) { } @ Override public void visit ( ConstantExpr expr ) { } public String constantToString ( Object cst ) { } public static String typeToClsString ( NamingStrategy naming , ValueType type ) { } public static String escapeString ( String str ) { } @ Override public void visit ( VariableExpr expr ) { } @ Override public void visit ( SubscriptExpr expr ) { } @ Override public void visit ( UnwrapArrayExpr expr ) { } @ Override public void visit ( InvocationExpr expr ) { try { if ( ( expr . getLocation ( ) ) != null ) { pushLocation ( expr . getLocation ( ) ) ; } Injector injector = getInjector ( expr . getMethod ( ) ) ; if ( injector != null ) { injector . generate ( new Renderer . InjectorContextImpl ( expr . getArguments ( ) ) , expr . getMethod ( ) ) ; } else { if ( ( expr . getAsyncTarget ( ) ) != null ) { writer . append ( "return<seq2seq4repair_space>" ) ; } if ( ( expr . getType ( ) ) == ( InvocationType . DYNAMIC ) ) { expr . getArguments ( ) . get ( 0 ) . acceptVisitor ( this ) ; } String className = naming . getNameFor ( expr . getMethod ( ) . getClassName ( ) ) ; String name = naming . getNameFor ( expr . getMethod ( ) ) ; String fullName = naming . getFullNameFor ( expr . getMethod ( ) ) ; DeferredCallSite callSite = prevCallSite ; boolean shouldEraseCallSite = ( lastCallSite ) == null ; if ( ( lastCallSite ) == null ) { lastCallSite = callSite ; } boolean virtual = false ; switch ( expr . getType ( ) ) { case STATIC : writer . append ( fullName ) . append ( "(" ) ; prevCallSite = debugEmitter . emitCallSite ( ) ; for ( int i = 0 ; i < ( expr . getArguments ( ) . size ( ) ) ; ++ i ) { if ( i > 0 ) { writer . append ( "," ) . ws ( ) ; } expr . getArguments ( ) . get ( i ) . acceptVisitor ( this ) ; } break ; case SPECIAL : writer . append ( fullName ) . append ( "(" ) ; prevCallSite = debugEmitter . emitCallSite ( ) ; expr . getArguments ( ) . get ( 0 ) . acceptVisitor ( this ) ; for ( int i = 1 ; i < ( expr . getArguments ( ) . size ( ) ) ; ++ i ) { writer . append ( "," ) . ws ( ) ; expr . getArguments ( ) . get ( i ) . acceptVisitor ( this ) ; } break ; case DYNAMIC : writer . append ( "." ) . append ( name ) . append ( "(" ) ; prevCallSite = debugEmitter . emitCallSite ( ) ; for ( int i = 1 ; i < ( expr . getArguments ( ) . size ( ) ) ; ++ i ) { if ( i > 1 ) { writer . append ( "," ) . ws ( ) ; } expr . getArguments ( ) . get ( i ) . acceptVisitor ( this ) ; } virtual = true ; break ; case CONSTRUCTOR : writer . append ( className ) . append ( "." ) . append ( name ) . append ( "(" ) ; prevCallSite = debugEmitter . emitCallSite ( ) ; for ( int i = 0 ; i < ( expr . getArguments ( ) . size ( ) ) ; ++ i ) { if ( i > 0 ) { writer . append ( "," ) . ws ( ) ; } expr . getArguments ( ) . get ( i ) . acceptVisitor ( this ) ; } break ; } if ( ( expr . getAsyncTarget ( ) ) != null ) { <START_BUG> writer . append ( ',' ) . ws ( ) . append ( "$part_" ) . append ( expr . getAsyncTarget ( ) ) ; <END_BUG> } writer . append ( ')' ) ; if ( ( lastCallSite ) != null ) { if ( virtual ) { lastCallSite . setVirtualMethod ( expr . getMethod ( ) ) ; } else { lastCallSite . setStaticMethod ( expr . getMethod ( ) ) ; } lastCallSite = callSite ; } if ( shouldEraseCallSite ) { lastCallSite = null ; } } if ( ( expr . getLocation ( ) ) != null ) { popLocation ( ) ; } } catch ( IOException e ) { throw new RenderingException ( "IO<seq2seq4repair_space>error<seq2seq4repair_space>occured" , e ) ; } } @ Override public void visit ( QualificationExpr expr ) { } @ Override public void visit ( NewExpr expr ) { } @ Override public void visit ( NewArrayExpr expr ) { } @ Override public void visit ( NewMultiArrayExpr expr ) { } @ Override public void visit ( InstanceOfExpr expr ) { } @ Override public void visit ( StaticClassExpr expr ) { } @ Override public void visit ( TryCatchStatement statement ) { } private Injector getInjector ( MethodReference ref ) { } private Injector instantiateInjector ( String type ) { } private class InjectorContextImpl implements InjectorContext { private List < Expr > arguments ; public InjectorContextImpl ( List < Expr > arguments ) { } @ Override public Expr getArgument ( int index ) { } @ Override public boolean isMinifying ( ) { } @ Override public SourceWriter getWriter ( ) { } @ Override public void writeEscaped ( String str ) throws IOException { }

Fix:
writer . append ( ',' ) . ws ( ) . append ( "$rt_continue($part_" ) . append ( expr . getAsyncTarget ( ) ) . append ( ')' ) ;