Buggy code:
public class IncrementalImageBuilder extends AbstractImageBuilder { protected ArrayList sourceFiles ; protected ArrayList previousSourceFiles ; protected ArrayList qualifiedStrings ; protected ArrayList simpleStrings ; protected SimpleLookupTable secondaryTypesToRemove ; protected boolean hasStructuralChanges ; protected int compileLoop ; public static int MaxCompileLoop = 5 ; protected IncrementalImageBuilder ( JavaBuilder javaBuilder ) { } public boolean build ( SimpleLookupTable deltas ) { } protected void addAffectedSourceFiles ( ) { } protected void addDependentsOf ( IPath path , boolean hasStructuralChanges ) { } protected void cleanUp ( ) { } protected boolean findAffectedSourceFiles ( IResourceDelta delta , ClasspathLocation [ ] classFoldersAndJars ) { } protected void findAffectedSourceFiles ( IResourceDelta binaryDelta , int segmentCount ) { } protected boolean findSourceFiles ( IResourceDelta delta ) throws CoreException { for ( int i = 0 , l = sourceLocations . length ; i < l ; i ++ ) { ClasspathMultiDirectory md = sourceLocations [ i ] ; if ( md . sourceFolder . equals ( javaBuilder . currentProject ) ) { int segmentCount = delta . getFullPath ( ) . segmentCount ( ) ; IResourceDelta [ ] children = delta . getAffectedChildren ( ) ; for ( int j = 0 , m = children . length ; j < m ; j ++ ) <START_BUG> if ( ! ( isExcludedFromProject ( children [ i ] . getFullPath ( ) ) ) ) <END_BUG> findSourceFiles ( children [ j ] , md , segmentCount ) ; } else { IResourceDelta sourceDelta = delta . findMember ( md . sourceFolder . getProjectRelativePath ( ) ) ; if ( sourceDelta != null ) { if ( ( sourceDelta . getKind ( ) ) == ( IResourceDelta . REMOVED ) ) { if ( JavaBuilder . DEBUG ) System . out . println ( "ABORTING<seq2seq4repair_space>incremental<seq2seq4repair_space>build...<seq2seq4repair_space>found<seq2seq4repair_space>removed<seq2seq4repair_space>source<seq2seq4repair_space>folder" ) ; return false ; } int segmentCount = sourceDelta . getFullPath ( ) . segmentCount ( ) ; IResourceDelta [ ] children = sourceDelta . getAffectedChildren ( ) ; for ( int j = 0 , m = children . length ; j < m ; j ++ ) findSourceFiles ( children [ j ] , md , segmentCount ) ; } } notifier . checkCancel ( ) ; } return true ; } protected void findSourceFiles ( IResourceDelta sourceDelta , ClasspathMultiDirectory md , int segmentCount ) throws CoreException { } protected void finishedWith ( String sourceLocator , CompilationResult result , char [ ] mainTypeName , ArrayList definedTypeNames , ArrayList duplicateTypeNames ) throws CoreException { } protected void removeClassFile ( IPath typePath , IContainer outputFolder ) throws CoreException { } protected void removeSecondaryTypes ( ) throws CoreException { } protected void resetCollections ( ) { } protected void updateProblemsFor ( SourceFile sourceFile , CompilationResult result ) throws CoreException { } protected void updateTasksFor ( SourceFile sourceFile , CompilationResult result ) throws CoreException { } protected void writeClassFileBytes ( byte [ ] bytes , IFile file , String qualifiedFileName , boolean isSecondaryType ) throws CoreException { } protected boolean writeClassFileCheck ( IFile file , String fileName , byte [ ] newBytes ) throws CoreException { } public String toString ( ) { } }

Fix:
if ( ! ( isExcludedFromProject ( children [ j ] . getFullPath ( ) ) ) )