Program: 75118
Project: 75118
Buggy source:
/** 
 * Transform a set of files into backtracking-enabled ones. The set of files is given by an array of strings as their names, or the names of the directories that contain them. If a string in the array is a file name, it is refactored and the output is printed out; if it is the name of a directory, all Java files in the directory and its sub-directories are looked up and refactored in the same way.
 * @param args The array of file names or names of directories.
 * @exception Exception If any exception occues.
 */
public static void main(String[] args) throws Exception {
  boolean outputResult=true;
  if (args.length == 0)   System.err.println("String_Node_Str" + "String_Node_Str");
 else {
    String[] paths=PathFinder.getPtClassPaths();
    Writer standardWriter=outputResult ? new OutputStreamWriter(System.out) : null;
    for (int i=0; i < args.length; ) {
      int newPosition=_parseArguments(args,i);
      if (newPosition != i) {
        i=newPosition;
        continue;
      }
      String pathOrFile=args[i];
      File[] files=PathFinder.getJavaFiles(pathOrFile,true);
      for (int j=0; j < files.length; j++) {
        String fileName=files[j].getPath();
        System.err.print("String_Node_Str" + fileName + "String_Node_Str");
        if (fileName.endsWith("String_Node_Str")) {
          String classFileName=fileName.substring(0,fileName.length() - 5) + "String_Node_Str";
          if (new File(classFileName).exists())           System.err.println();
 else {
            System.err.println("String_Node_Str");
            continue;
          }
        }
 else         continue;
        System.err.flush();
        transform(files[j].getPath(),standardWriter,paths);
        if (outputResult)         standardWriter.flush();
      }
      i++;
    }
    if (outputResult)     standardWriter.close();
  }
}

Fixed version (ground truth):
/** 
 * Transform a set of files into backtracking-enabled ones. The set of files is given by an array of strings as their names, or the names of the directories that contain them. If a string in the array is a file name, it is refactored and the output is printed out; if it is the name of a directory, all Java files in the directory and its sub-directories are looked up and refactored in the same way.
 * @param args The array of file names or names of directories.
 * @exception Exception If any exception occues.
 */
public static void main(String[] args) throws Exception {
  boolean outputResult=true;
  if (args.length == 0)   System.err.println("String_Node_Str" + "String_Node_Str");
 else {
    String[] paths=PathFinder.getPtClassPaths();
    Writer standardWriter=outputResult ? new OutputStreamWriter(System.out) : null;
    for (int i=0; i < args.length; ) {
      int newPosition=_parseArguments(args,i);
      if (newPosition != i) {
        i=newPosition;
        continue;
      }
      String pathOrFile=args[i];
      File[] files;
      if (pathOrFile.startsWith("String_Node_Str")) {
        String listName=pathOrFile.substring(1);
        BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(listName)));
        List strings=new LinkedList();
        String line=reader.readLine();
        while (line != null) {
          strings.add(line);
          line=reader.readLine();
        }
        files=new File[strings.size()];
        Iterator stringsIter=strings.iterator();
        for (int j=0; stringsIter.hasNext(); j++)         files[j]=new File((String)stringsIter.next());
      }
 else       files=PathFinder.getJavaFiles(pathOrFile,true);
      for (int j=0; j < files.length; j++) {
        String fileName=files[j].getPath();
        System.err.print("String_Node_Str" + fileName + "String_Node_Str");
        if (fileName.endsWith("String_Node_Str")) {
          String classFileName=fileName.substring(0,fileName.length() - 5) + "String_Node_Str";
          if (new File(classFileName).exists())           System.err.println();
 else {
            System.err.println("String_Node_Str");
            continue;
          }
        }
 else         continue;
        System.err.flush();
        transform(files[j].getPath(),standardWriter,paths);
        if (outputResult)         standardWriter.flush();
      }
      i++;
    }
    _outputConfig();
    if (outputResult)     standardWriter.close();
  }
}