Program: 178574
Project: 178574
Buggy source:
/** 
 * <p> Returns an array with all the source files to compile. </p>
 * @param compilerArguments can be null
 * @return the source files to compile
 */
private SourceFile[] getSourceFilesToCompile(EcjAdditionalCompilerArguments compilerArguments){
  File defaultDestinationFolder=getJavac().getDestdir();
  List<SourceFile> sourceFiles=new LinkedList<SourceFile>();
  File[] filelist=getJavac().getFileList();
  for (  File file : filelist) {
    A4ELogging.debug("String_Node_Str",file);
  }
  if ((compilerArguments != null) && compilerArguments.hasSourceFilteredFilesetPath()) {
    List<File> files=new LinkedList<File>();
    Path path=compilerArguments.getSourceFilteredFilesetPath();
    Iterator<?> iterator=path.iterator();
    while (iterator.hasNext()) {
      Object object=iterator.next();
      if (object instanceof FileResource) {
        FileResource fileResource=(FileResource)object;
        File sourceFile=fileResource.getFile();
        if (sourceFile.getName().endsWith("String_Node_Str")) {
          files.add(fileResource.getFile());
        }
      }
    }
    filelist=files.toArray(new File[files.size()]);
    for (    File file : filelist) {
      A4ELogging.debug("String_Node_Str",file);
    }
    A4ELogging.info("String_Node_Str",Integer.valueOf(filelist.length),filelist.length > 1 ? "String_Node_Str" : "String_Node_Str",Integer.valueOf(this.compileList.length - filelist.length),this.compileList.length - filelist.length > 1 ? "String_Node_Str" : "String_Node_Str");
  }
  for (  File file : filelist) {
    File sourceFolder=getSourceFolder(file);
    String sourceFileName=file.getAbsolutePath().substring(sourceFolder.getAbsolutePath().length() + File.separator.length());
    File destinationFolder=compilerArguments != null ? compilerArguments.getOutputFolder(sourceFolder) : defaultDestinationFolder;
    if (destinationFolder == null) {
      throw new Ant4EclipseException(EcjExceptionCodes.NO_DEST_PATH_SET);
    }
    if (sourceFileName.endsWith("String_Node_Str")) {
      sourceFiles.add(0,SourceFileFactory.createSourceFile(sourceFolder,sourceFileName,destinationFolder,getDefaultEncoding()));
    }
 else {
      sourceFiles.add(SourceFileFactory.createSourceFile(sourceFolder,sourceFileName,destinationFolder,getDefaultEncoding()));
    }
  }
  return sourceFiles.toArray(new SourceFile[0]);
}

Fixed version (ground truth):
/** 
 * <p> Returns an array with all the source files to compile. </p>
 * @param compilerArguments can be null
 * @return the source files to compile
 */
private SourceFile[] getSourceFilesToCompile(EcjAdditionalCompilerArguments compilerArguments){
  File defaultDestinationFolder=getJavac().getDestdir();
  List<SourceFile> sourceFiles=new LinkedList<SourceFile>();
  File[] filelist=getJavac().getFileList();
  for (  File file : filelist) {
    A4ELogging.debug("String_Node_Str",file);
  }
  if ((compilerArguments != null) && compilerArguments.hasSourceFilteredFilesetPath()) {
    List<File> files=new LinkedList<File>();
    Path path=compilerArguments.getSourceFilteredFilesetPath();
    Iterator<?> iterator=path.iterator();
    while (iterator.hasNext()) {
      Object object=iterator.next();
      if (object instanceof FileResource) {
        FileResource fileResource=(FileResource)object;
        File sourceFile=fileResource.getFile();
        if (sourceFile.getName().endsWith("String_Node_Str")) {
          files.add(fileResource.getFile());
        }
      }
    }
    filelist=files.toArray(new File[files.size()]);
    for (    File file : filelist) {
      A4ELogging.debug("String_Node_Str",file);
    }
    A4ELogging.info("String_Node_Str",Integer.valueOf(filelist.length),filelist.length > 1 ? "String_Node_Str" : "String_Node_Str",Integer.valueOf(this.compileList.length - filelist.length),this.compileList.length - filelist.length > 1 ? "String_Node_Str" : "String_Node_Str");
  }
  for (  File file : filelist) {
    if (!hasSourceFolder(file)) {
      continue;
    }
    File sourceFolder=getSourceFolder(file);
    String sourceFileName=file.getAbsolutePath().substring(sourceFolder.getAbsolutePath().length() + File.separator.length());
    File destinationFolder=compilerArguments != null ? compilerArguments.getOutputFolder(sourceFolder) : defaultDestinationFolder;
    if (destinationFolder == null) {
      throw new Ant4EclipseException(EcjExceptionCodes.NO_DEST_PATH_SET);
    }
    if (sourceFileName.endsWith("String_Node_Str")) {
      sourceFiles.add(0,SourceFileFactory.createSourceFile(sourceFolder,sourceFileName,destinationFolder,getDefaultEncoding()));
    }
 else {
      sourceFiles.add(SourceFileFactory.createSourceFile(sourceFolder,sourceFileName,destinationFolder,getDefaultEncoding()));
    }
  }
  return sourceFiles.toArray(new SourceFile[0]);
}