Buggy code:
public class AjBuildManager implements IBinarySourceProvider , IOutputClassFileNameProvider , ICompilerAdapterFactory { private static final String CANT_WRITE_RESULT = "unable<seq2seq4repair_space>to<seq2seq4repair_space>write<seq2seq4repair_space>compilation<seq2seq4repair_space>result" ; private static final String MANIFEST_NAME = "META-INF//MANIFEST.MF" ; static final boolean COPY_INPATH_DIR_RESOURCES = false ; static final boolean FAIL_IF_RUNTIME_NOT_FOUND = false ; private static final FileFilter binarySourceFilter = new FileFilter ( ) { public boolean accept ( File f ) { } } ; private IProgressListener progressListener = null ; private int compiledCount ; private int sourceFileCount ; private JarOutputStream zos ; private boolean batchCompile = true ; private INameEnvironment environment ; private Map binarySourcesForTheNextCompile = new HashMap ( ) ; private IHierarchy structureModel ; public AjBuildConfig buildConfig ; AjState state = new AjState ( this ) ; BcelWeaver bcelWeaver ; public BcelWorld bcelWorld ; public CountingMessageHandler handler ; public AjBuildManager ( IMessageHandler holder ) { } public boolean doGenerateModel ( ) { } public boolean batchBuild ( AjBuildConfig buildConfig , IMessageHandler baseHandler ) throws IOException , AbortException { } public boolean incrementalBuild ( AjBuildConfig buildConfig , IMessageHandler baseHandler ) throws IOException , AbortException { } protected boolean doBuild ( AjBuildConfig buildConfig , IMessageHandler baseHandler , boolean batch ) throws IOException , AbortException { } private boolean openOutputStream ( File outJar ) { } private void closeOutputStream ( ) { } private void copyResourcesToDestination ( ) throws IOException { } private void copyResourcesFromJarFile ( File jarFile ) throws IOException { } private void copyResourcesFromDirectory ( File dir ) throws IOException { } private void copyResourcesFromFile ( File f , String filename , File src ) throws IOException { } private void writeResource ( String filename , byte [ ] content , File srcLocation ) throws IOException { } private void writeManifest ( ) throws IOException { } private boolean acceptResource ( String resourceName ) { } private void setupModel ( ) { } private void initBcelWorld ( IMessageHandler handler ) throws IOException { } public World getWorld ( ) { } void addAspectClassFilesToWeaver ( List addedClassFiles ) throws IOException { } public FileSystem getLibraryAccess ( String [ ] classpaths , String [ ] filenames ) { } public IProblemFactory getProblemFactory ( ) { } public CompilationUnit [ ] getCompilationUnits ( String [ ] filenames , String [ ] encodings ) { } public String extractDestinationPathFromSourceFile ( CompilationResult result ) { } public void performCompilation ( List files ) { } public IIntermediateResultsRequestor getInterimResultRequestor ( ) { } public ICompilerRequestor getBatchRequestor ( ) { return new ICompilerRequestor ( ) { public void acceptResult ( CompilationResult unitResult ) { if ( ! ( ( unitResult . hasErrors ( ) ) && ( ! ( proceedOnError ( ) ) ) ) ) { Enumeration classFiles = unitResult . compiledTypes . elements ( ) ; while ( classFiles . hasMoreElements ( ) ) { ClassFile classFile = ( ( ClassFile ) ( classFiles . nextElement ( ) ) ) ; String filename = new String ( classFile . fileName ( ) ) ; filename = ( filename . replace ( '//' , File . separatorChar ) ) + ".class" ; try { if ( ( buildConfig . getOutputJar ( ) ) == null ) { writeDirectoryEntry ( unitResult , classFile , filename ) ; } else { writeZipEntry ( classFile , filename ) ; } } catch ( IOException ex ) { <START_BUG> IMessage message = EclipseAdapterUtils . makeErrorMessage ( unitResult . compilationUnit , AjBuildManager . CANT_WRITE_RESULT , ex ) ; <END_BUG> handler . handleMessage ( message ) ; } } } if ( ( unitResult . hasProblems ( ) ) || ( unitResult . hasTasks ( ) ) ) { IProblem [ ] problems = unitResult . getAllProblems ( ) ; for ( int i = 0 ; i < ( problems . length ) ; i ++ ) { IMessage message = EclipseAdapterUtils . makeMessage ( unitResult . compilationUnit , problems [ i ] ) ; handler . handleMessage ( message ) ; } } } private void writeDirectoryEntry ( CompilationResult unitResult , ClassFile classFile , String filename ) throws IOException { File destinationPath = buildConfig . getOutputDir ( ) ; String outFile ; if ( destinationPath == null ) { outFile = new File ( filename ) . getName ( ) ; outFile = new File ( extractDestinationPathFromSourceFile ( unitResult ) , outFile ) . getPath ( ) ; } else { outFile = new File ( destinationPath , filename ) . getPath ( ) ; } BufferedOutputStream os = FileUtil . makeOutputStream ( new File ( outFile ) ) ; os . write ( classFile . getBytes ( ) ) ; os . close ( ) ; } private void writeZipEntry ( ClassFile classFile , String name ) throws IOException { name = name . replace ( File . separatorChar , '//' ) ; ZipEntry newEntry = new ZipEntry ( name ) ; zos . putNextEntry ( newEntry ) ; zos . write ( classFile . getBytes ( ) ) ; zos . closeEntry ( ) ; } } ; } protected boolean proceedOnError ( ) { } private void setBuildConfig ( AjBuildConfig buildConfig ) { } String makeClasspathString ( ) { } public String checkRtJar ( AjBuildConfig buildConfig ) { } public String toString ( ) { } public void setStructureModel ( IHierarchy structureModel ) { } public IHierarchy getStructureModel ( ) { } public IProgressListener getProgressListener ( ) { } public void setProgressListener ( IProgressListener progressListener ) { } public String getOutputClassFileName ( char [ ] eclipseClassFileName , CompilationResult result ) { } public ICompilerAdapter getAdapter ( Compiler forCompiler ) { } public Map getBinarySourcesForThisWeave ( ) { } }

Fix:
IMessage message = EclipseAdapterUtils . makeErrorMessage ( new String ( unitResult . fileName ) , AjBuildManager . CANT_WRITE_RESULT , ex ) ;