Buggy code:
public class TeaVM implements ServiceRepository , TeaVMHost { private ClassReaderSource classSource ; private DependencyChecker dependencyChecker ; private AccumulationDiagnostics diagnostics = new AccumulationDiagnostics ( ) ; private ClassLoader classLoader ; private boolean minifying = true ; private boolean bytecodeLogging ; private OutputStream logStream = System . out ; private Map < String , TeaVMEntryPoint > entryPoints = new HashMap < > ( ) ; private Map < String , String > exportedClasses = new HashMap < > ( ) ; private Map < MethodReference , Generator > methodGenerators = new HashMap < > ( ) ; private Map < MethodReference , Injector > methodInjectors = new HashMap < > ( ) ; private List < RendererListener > rendererListeners = new ArrayList < > ( ) ; private Map < Class < ? > , Object > services = new HashMap < > ( ) ; private Properties properties = new Properties ( ) ; private DebugInformationEmitter debugEmitter ; private ProgramCache programCache ; private RegularMethodNodeCache astCache = new EmptyRegularMethodNodeCache ( ) ; private boolean incremental ; private TeaVMProgressListener progressListener ; private boolean cancelled ; private ListableClassHolderSource writtenClasses ; private Set < MethodReference > asyncMethods = new HashSet < > ( ) ; TeaVM ( ClassReaderSource classSource , ClassLoader classLoader ) { } @ Override public void add ( DependencyListener listener ) { } @ Override public void add ( ClassHolderTransformer transformer ) { } @ Override public void add ( MethodReference methodRef , Generator generator ) { } @ Override public void add ( MethodReference methodRef , Injector injector ) { } @ Override public void add ( RendererListener listener ) { } @ Override public ClassLoader getClassLoader ( ) { } public boolean isMinifying ( ) { } public void setMinifying ( boolean minifying ) { } public boolean isBytecodeLogging ( ) { } public void setBytecodeLogging ( boolean bytecodeLogging ) { } public void setProperties ( Properties properties ) { } @ Override public Properties getProperties ( ) { } public RegularMethodNodeCache getAstCache ( ) { } public void setAstCache ( RegularMethodNodeCache methodAstCache ) { } public ProgramCache getProgramCache ( ) { } public void setProgramCache ( ProgramCache programCache ) { } public boolean isIncremental ( ) { } public void setIncremental ( boolean incremental ) { } public TeaVMProgressListener getProgressListener ( ) { } public void setProgressListener ( TeaVMProgressListener progressListener ) { } public boolean wasCancelled ( ) { } public ProblemProvider getProblemProvider ( ) { } public TeaVMEntryPoint entryPoint ( String name , MethodReference ref ) { } public TeaVMEntryPoint entryPoint ( MethodReference ref ) { } public TeaVMEntryPoint linkMethod ( MethodReference ref ) { } public void exportType ( String name , String className ) { } public void linkType ( String className ) { } public ClassReaderSource getClassSource ( ) { } public Collection < String > getClasses ( ) { } public DependencyInfo getDependencyInfo ( ) { } public ListableClassReaderSource getWrittenClasses ( ) { } public DebugInformationEmitter getDebugEmitter ( ) { } public void setDebugEmitter ( DebugInformationEmitter debugEmitter ) { } public void build ( Appendable writer , BuildTarget target ) throws RenderingException { } public ListableClassHolderSource link ( DependencyInfo dependency ) { } private void reportPhase ( TeaVMPhase phase , int progressLimit ) { } private void reportProgress ( int progress ) { } private void emitCFG ( DebugInformationEmitter emitter , Program program ) { } private static SourceLocation map ( InstructionLocation location ) { } private void devirtualize ( ListableClassHolderSource classes , DependencyInfo dependency ) { } private List < ClassNode > modelToAst ( ListableClassHolderSource classes ) { AsyncMethodFinder asyncFinder = new AsyncMethodFinder ( dependencyChecker . getCallGraph ( ) , diagnostics ) ; asyncFinder . find ( classes ) ; <START_BUG> asyncMethods . addAll ( asyncMethods ) ; <END_BUG> progressListener . phaseStarted ( DECOMPILATION , classes . getClassNames ( ) . size ( ) ) ; Decompiler decompiler = new Decompiler ( classes , classLoader , asyncFinder . getAsyncMethods ( ) ) ; decompiler . setRegularMethodCache ( ( incremental ? astCache : null ) ) ; for ( Map . Entry < MethodReference , Generator > entry : methodGenerators . entrySet ( ) ) { decompiler . addGenerator ( entry . getKey ( ) , entry . getValue ( ) ) ; } for ( MethodReference injectedMethod : methodInjectors . keySet ( ) ) { decompiler . addMethodToPass ( injectedMethod ) ; } List < String > classOrder = decompiler . getClassOrdering ( classes . getClassNames ( ) ) ; List < ClassNode > classNodes = new ArrayList < > ( ) ; int index = 0 ; try ( PrintWriter bytecodeLogger = ( bytecodeLogging ) ? new PrintWriter ( new OutputStreamWriter ( logStream , "UTF-8" ) ) : null ) { for ( String className : classOrder ) { ClassHolder cls = classes . get ( className ) ; for ( MethodHolder method : cls . getMethods ( ) ) { processMethod ( method ) ; preprocessNativeMethod ( method ) ; if ( bytecodeLogging ) { logMethodBytecode ( bytecodeLogger , method ) ; } } classNodes . add ( decompiler . decompile ( cls ) ) ; progressListener . progressReached ( ( ++ index ) ) ; } } catch ( UnsupportedEncodingException e ) { throw new AssertionError ( "UTF-8<seq2seq4repair_space>is<seq2seq4repair_space>expected<seq2seq4repair_space>to<seq2seq4repair_space>be<seq2seq4repair_space>supported" ) ; } return classNodes ; } private void preprocessNativeMethod ( MethodHolder method ) { } private void processMethod ( MethodHolder method ) { } private List < MethodOptimization > getOptimizations ( ) { } private void logMethodBytecode ( PrintWriter writer , MethodHolder method ) { } private void printType ( PrintWriter writer , ValueType type ) { } private void printModifiers ( PrintWriter writer , ElementHolder element ) { } public void build ( File dir , String fileName ) throws RenderingException { } public void installPlugins ( ) { } @ Override public < T > T getService ( Class < T > type ) { }

Fix:
asyncMethods . addAll ( asyncFinder . getAsyncMethods ( ) ) ;