Buggy code:
class CompilationUnitResolver extends Compiler { static class IntArrayList { public int [ ] list = new int [ 5 ] ; public int length = 0 ; public void add ( int i ) { } } HashtableOfObject requestedSources ; HashtableOfObject requestedKeys ; DefaultBindingResolver . BindingTables bindingTables ; boolean hasCompilationAborted ; private IProgressMonitor monitor ; public CompilationUnitResolver ( INameEnvironment environment , IErrorHandlingPolicy policy , Map settings , ICompilerRequestor requestor , IProblemFactory problemFactory , boolean statementsRecovery , IProgressMonitor monitor ) { } public void accept ( ISourceType [ ] sourceTypes , PackageBinding packageBinding , AccessRestriction accessRestriction ) { } protected void beginToCompile ( ICompilationUnit [ ] sourceUnits , String [ ] bindingKeys ) { int sourceLength = sourceUnits . length ; int keyLength = bindingKeys . length ; int maxUnits = sourceLength + keyLength ; this . totalUnits = 0 ; this . unitsToProcess = new CompilationUnitDeclaration [ maxUnits ] ; int index = 0 ; this . requestedSources = new HashtableOfObject ( ) ; for ( int i = 0 ; i < sourceLength ; i ++ ) { ICompilationUnit sourceUnit = sourceUnits [ i ] ; CompilationUnitDeclaration parsedUnit ; CompilationResult unitResult = new CompilationResult ( sourceUnit , ( index ++ ) , maxUnits , this . options . maxProblemsPerUnit ) ; try { if ( options . verbose ) { <START_BUG> System . out . println ( Messages . bind ( Messages . compilation_request , new String [ ] { String . valueOf ( ( ( index ++ ) + 1 ) ) , String . valueOf ( maxUnits ) , new String ( sourceUnit . getFileName ( ) ) } ) ) ; <END_BUG> } if ( ( this . totalUnits ) < ( this . parseThreshold ) ) { parsedUnit = this . parser . parse ( sourceUnit , unitResult ) ; } else { parsedUnit = this . parser . dietParse ( sourceUnit , unitResult ) ; } this . lookupEnvironment . buildTypeBindings ( parsedUnit , null ) ; addCompilationUnit ( sourceUnit , parsedUnit ) ; this . requestedSources . put ( unitResult . getFileName ( ) , sourceUnit ) ; worked ( 1 ) ; } finally { sourceUnits [ i ] = null ; } } this . requestedKeys = new HashtableOfObject ( ) ; for ( int i = 0 ; i < keyLength ; i ++ ) { BindingKeyResolver resolver = new BindingKeyResolver ( bindingKeys [ i ] , this , this . lookupEnvironment ) ; resolver . parse ( true ) ; CompilationUnitDeclaration parsedUnit = ( resolver . hasTypeName ( ) ) ? resolver . getCompilationUnitDeclaration ( ) : null ; if ( parsedUnit != null ) { char [ ] fileName = parsedUnit . compilationResult . getFileName ( ) ; Object existing = this . requestedKeys . get ( fileName ) ; if ( existing == null ) this . requestedKeys . put ( fileName , resolver ) ; else if ( existing instanceof ArrayList ) ( ( ArrayList ) ( existing ) ) . add ( resolver ) ; else { ArrayList list = new ArrayList ( ) ; list . add ( existing ) ; list . add ( resolver ) ; this . requestedKeys . put ( fileName , list ) ; } } else { char [ ] key = ( resolver . hasTypeName ( ) ) ? resolver . getKey ( ) . toCharArray ( ) : CharOperation . concatWith ( resolver . compoundName ( ) , '.' ) ; this . requestedKeys . put ( key , resolver ) ; } worked ( 1 ) ; } lookupEnvironment . completeTypeBindings ( ) ; } IBinding createBinding ( String key ) { } public static CompilationUnit convert ( CompilationUnitDeclaration compilationUnitDeclaration , char [ ] source , int apiLevel , Map options , boolean needToResolveBindings , WorkingCopyOwner owner , DefaultBindingResolver . BindingTables bindingTables , IProgressMonitor monitor ) { } protected static IErrorHandlingPolicy getHandlingPolicy ( ) { } protected static ICompilerRequestor getRequestor ( ) { } public void initializeParser ( ) { } public void process ( CompilationUnitDeclaration unit , int i ) { } protected void handleInternalException ( Throwable internalException , CompilationUnitDeclaration unit , CompilationResult result ) { } protected void handleInternalException ( org . eclipse . jdt . internal . compiler . problem . AbortCompilation abortException , CompilationUnitDeclaration unit ) { } public static void parse ( org . eclipse . jdt . core . ICompilationUnit [ ] compilationUnits , ASTRequestor astRequestor , int apiLevel , Map options , IProgressMonitor monitor ) { } public static CompilationUnitDeclaration parse ( ICompilationUnit sourceUnit , NodeSearcher nodeSearcher , Map settings , boolean statementsRecovery ) { } public static void resolve ( org . eclipse . jdt . core . ICompilationUnit [ ] compilationUnits , String [ ] bindingKeys , ASTRequestor requestor , int apiLevel , Map options , IJavaProject javaProject , WorkingCopyOwner owner , boolean statementsRecovery , IProgressMonitor monitor ) { } public static CompilationUnitDeclaration resolve ( ICompilationUnit sourceUnit , IJavaProject javaProject , NodeSearcher nodeSearcher , Map options , WorkingCopyOwner owner , boolean statementsRecovery , IProgressMonitor monitor ) throws JavaModelException { } public static IBinding [ ] resolve ( final IJavaElement [ ] elements , int apiLevel , Map compilerOptions , IJavaProject javaProject , WorkingCopyOwner owner , boolean statementsRecovery , IProgressMonitor monitor ) { } public void removeUnresolvedBindings ( CompilationUnitDeclaration compilationUnitDeclaration ) { } private void removeUnresolvedBindings ( TypeDeclaration type ) { } private void resolve ( org . eclipse . jdt . core . ICompilationUnit [ ] compilationUnits , String [ ] bindingKeys , ASTRequestor astRequestor , int apiLevel , Map compilerOptions , WorkingCopyOwner owner ) { } private void reportBinding ( Object key , ASTRequestor astRequestor , WorkingCopyOwner owner , CompilationUnitDeclaration unit ) { } private CompilationUnitDeclaration resolve ( CompilationUnitDeclaration unit , ICompilationUnit sourceUnit , NodeSearcher nodeSearcher , boolean verifyMethods , boolean analyzeCode , boolean generateCode ) { }

Fix:
this . out . println ( Messages . bind ( Messages . compilation_request , new String [ ] { String . valueOf ( ( ( index ++ ) + 1 ) ) , String . valueOf ( maxUnits ) , new String ( sourceUnit . getFileName ( ) ) } ) ) ;