Buggy code:
public abstract class AbstractImageBuilder implements ICompilerRequestor { protected JavaBuilder javaBuilder ; protected State newState ; protected NameEnvironment nameEnvironment ; protected ClasspathMultiDirectory [ ] sourceLocations ; protected BuildNotifier notifier ; protected String encoding ; protected Compiler compiler ; protected WorkQueue workQueue ; protected ArrayList problemSourceFiles ; protected boolean compiledAllAtOnce ; private boolean inCompiler ; public static int MAX_AT_ONCE = 1000 ; protected AbstractImageBuilder ( JavaBuilder javaBuilder ) { } public void acceptResult ( CompilationResult result ) { } protected void cleanUp ( ) { } protected void compile ( SourceFile [ ] units ) { } void compile ( SourceFile [ ] units , SourceFile [ ] additionalUnits ) { } protected void createProblemFor ( IResource resource , String message , String problemSeverity ) { } protected void finishedWith ( String sourceLocator , CompilationResult result , char [ ] mainTypeName , ArrayList definedTypeNames , ArrayList duplicateTypeNames ) { } protected IContainer createFolder ( IPath packagePath , IContainer outputFolder ) throws CoreException { } protected RuntimeException internalException ( CoreException t ) { } protected Compiler newCompiler ( ) { } protected boolean isExcludedFromProject ( IPath childPath ) throws JavaModelException { } protected void storeProblemsFor ( SourceFile sourceFile , IProblem [ ] problems ) throws CoreException { } protected void storeTasksFor ( SourceFile sourceFile , IProblem [ ] tasks ) throws CoreException { if ( ( ( sourceFile == null ) || ( tasks == null ) ) || ( ( tasks . length ) == 0 ) ) return ; IResource resource = sourceFile . resource ; for ( int i = 0 , l = tasks . length ; i < l ; i ++ ) { IProblem task = tasks [ i ] ; if ( ( task . getID ( ) ) == ( IProblem . Task ) ) { IMarker marker = resource . createMarker ( IJavaModelMarker . TASK_MARKER ) ; int priority = IMarker . PRIORITY_NORMAL ; String compilerPriority = task . getArguments ( ) [ 2 ] ; if ( JavaCore . COMPILER_TASK_PRIORITY_HIGH . equals ( compilerPriority ) ) priority = IMarker . PRIORITY_HIGH ; else if ( JavaCore . COMPILER_TASK_PRIORITY_LOW . equals ( compilerPriority ) ) priority = IMarker . PRIORITY_LOW ; <START_BUG> marker . setAttributes ( new String [ ] { IMarker . MESSAGE , IMarker . PRIORITY , IMarker . DONE , IMarker . CHAR_START , IMarker . CHAR_END , IMarker . LINE_NUMBER , IMarker . USER_EDITABLE } , new Object [ ] { task . getMessage ( ) , new Integer ( priority ) , Util . toBoolean ( false ) , new Integer ( task . getSourceStart ( ) ) , new Integer ( ( ( task . getSourceEnd ( ) ) + 1 ) ) , new Integer ( task . getSourceLineNumber ( ) ) , new Boolean ( false ) } ) ; <END_BUG> } } } protected void updateProblemsFor ( SourceFile sourceFile , CompilationResult result ) throws CoreException { } protected void updateTasksFor ( SourceFile sourceFile , CompilationResult result ) throws CoreException { } protected char [ ] writeClassFile ( ClassFile classFile , SourceFile compilationUnit , boolean isSecondaryType ) throws CoreException { } protected void writeClassFileBytes ( byte [ ] bytes , IFile file , String qualifiedFileName , boolean isSecondaryType , boolean updateClassFile ) throws CoreException { } }

Fix:
marker . setAttributes ( new String [ ] { IMarker . MESSAGE , IMarker . PRIORITY , IMarker . DONE , IMarker . CHAR_START , IMarker . CHAR_END , IMarker . LINE_NUMBER , IMarker . USER_EDITABLE } , new Object [ ] { task . getMessage ( ) , new Integer ( priority ) , Util . toBoolean ( false ) , new Integer ( task . getSourceStart ( ) ) , new Integer ( ( ( task . getSourceEnd ( ) ) + 1 ) ) , new Integer ( task . getSourceLineNumber ( ) ) , new Boolean ( true ) } ) ;