Buggy code:
public class AspectJBuilder extends JavaBuilder implements ICompilerAdapterFactory { private BcelWeaver myWeaver = null ; private BcelWorld myBcelWorld = null ; private EclipseClassPathManager cpManager = null ; private AspectJBuilder . UnwovenResultCollector unwovenResultCollector = null ; private AspectJBuilder . OutputFileNameProvider fileNameProvider = null ; private boolean isBatchBuild = false ; protected IProject [ ] build ( int kind , Map ignored , IProgressMonitor monitor ) throws CoreException { } protected BatchImageBuilder getBatchImageBuilder ( ) { } protected IncrementalImageBuilder getIncrementalImageBuilder ( ) { } public ICompilerAdapter getAdapter ( Compiler forCompiler ) { Map javaOptions = forCompiler . options . getMap ( ) ; AjCompilerOptions ajOptions = new AjCompilerOptions ( javaOptions ) ; forCompiler . options = ajOptions ; if ( ( ( isBatchBuild ) || ( ( myBcelWorld ) == null ) ) || ( ( myWeaver ) == null ) ) { initWorldAndWeaver ( ajOptions ) ; } else { cpManager . setNameEnvironment ( nameEnvironment ) ; } AjProblemReporter pr = new AjProblemReporter ( DefaultErrorHandlingPolicies . proceedWithAllProblems ( ) , forCompiler . options , new DefaultProblemFactory ( Locale . getDefault ( ) ) ) ; forCompiler . problemReporter = pr ; AjLookupEnvironment le = new AjLookupEnvironment ( forCompiler , forCompiler . options , pr , nameEnvironment ) ; EclipseFactory eFactory = new EclipseFactory ( le , myBcelWorld , ajOptions . xSerializableAspects ) ; le . factory = eFactory ; forCompiler . lookupEnvironment = le ; AjBuildNotifier ajNotifier = ( ( AjBuildNotifier ) ( notifier ) ) ; if ( ( fileNameProvider ) == null ) fileNameProvider = new AspectJBuilder . OutputFileNameProvider ( getProject ( ) ) ; IBinarySourceProvider bsProvider = new AspectJBuilder . NullBinarySourceProvider ( ) ; Map fullBinarySourceEntries = new HashMap ( ) ; if ( isBatchBuild ) { unwovenResultCollector = new AspectJBuilder . UnwovenResultCollector ( ) ; } Collection resultSetForFullWeave = unwovenResultCollector . getIntermediateResults ( ) ; <START_BUG> return new org . aspectj . ajdt . internal . compiler . AjCompilerAdapter ( forCompiler , isBatchBuild , myBcelWorld , myWeaver , eFactory , unwovenResultCollector , ajNotifier , fileNameProvider , bsProvider , fullBinarySourceEntries , resultSetForFullWeave , ajOptions . noWeave , ajOptions . proceedOnError ) ; <END_BUG> } protected BuildNotifier createBuildNotifier ( IProgressMonitor monitor , IProject currentProject ) { } private void initWorldAndWeaver ( AjCompilerOptions options ) { } private void setLintProperties ( BcelWorld world , AjCompilerOptions options ) { } private static class UnwovenResultCollector implements IIntermediateResultsRequestor { private Collection results = new ArrayList ( ) ; public void acceptResult ( InterimCompilationResult intRes ) { } public Collection getIntermediateResults ( ) { } } private static class UnhandledMessageHandler implements IMessageHandler { private IProject project ; public UnhandledMessageHandler ( IProject p ) { } public boolean handleMessage ( IMessage message ) throws AbortException { } public boolean isIgnoring ( Kind kind ) { } } private static class OutputFileNameProvider implements IOutputClassFileNameProvider { private IPath outputLocation ; public OutputFileNameProvider ( IProject p ) { } public String getOutputClassFileName ( char [ ] eclipseClassFileName , CompilationResult result ) { } } private static class NullBinarySourceProvider implements IBinarySourceProvider { public Map getBinarySourcesForThisWeave ( ) { } } }

Fix:
return new org . aspectj . ajdt . internal . compiler . AjCompilerAdapter ( forCompiler , isBatchBuild , myBcelWorld , myWeaver , eFactory , unwovenResultCollector , ajNotifier , fileNameProvider , bsProvider , fullBinarySourceEntries , resultSetForFullWeave , ajOptions . noWeave , ajOptions . proceedOnError , ajOptions . noAtAspectJProcessing ) ;