Program: 9447
Project: 9447
Buggy source:
static void parseArgs(List vargs,File currentWorkingDir){
  boolean addNextAsOption=false;
  boolean addNextAsArgFile=false;
  boolean addNextToAJCOptions=false;
  boolean addNextAsDocDir=false;
  boolean addNextAsClasspath=false;
  boolean ignoreArg=false;
  boolean addNextAsSourcePath=false;
  if (vargs.size() == 0) {
    displayHelpAndExit(null);
  }
  for (int i=0; i < vargs.size(); i++) {
    String arg=(String)vargs.get(i);
    ignoreArg=false;
    if (addNextToAJCOptions) {
      ajcOptions.addElement(arg);
      addNextToAJCOptions=false;
    }
    if (addNextAsDocDir) {
      docDir=arg;
      addNextAsDocDir=false;
    }
    if (addNextAsClasspath) {
      addNextAsClasspath=false;
    }
    if (addNextAsSourcePath) {
      setSourcepath(arg);
      addNextAsSourcePath=false;
      ignoreArg=true;
    }
    if (arg.startsWith("String_Node_Str")) {
      expandAtSignFile(arg.substring(1),currentWorkingDir);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsArgFile=true;
    }
 else     if (addNextAsArgFile) {
      expandAtSignFile(arg,currentWorkingDir);
      addNextAsArgFile=false;
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      options.addElement(arg);
      addNextAsDocDir=true;
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      addNextAsClasspath=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      addNextAsClasspath=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsSourcePath=true;
    }
 else     if (arg.equals("String_Node_Str")) {
      deleteTempFilesOnExit=false;
    }
 else     if (arg.equals("String_Node_Str")) {
      System.out.println("String_Node_Str");
    }
 else     if (arg.equals("String_Node_Str")) {
    }
 else     if (arg.startsWith("String_Node_Str") || addNextAsOption) {
      if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        verboseMode=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        authorStandardDocletSwitch=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        versionStandardDocletSwitch=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        System.out.println(getVersion());
        exit(0);
      }
 else       if (arg.equals("String_Node_Str")) {
        displayHelpAndExit(null);
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
        System.out.println("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
        exit(0);
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
      }
 else       if (addNextAsOption) {
      }
 else {
        System.err.println("String_Node_Str" + arg);
        displayHelpAndExit(null);
      }
      options.addElement(arg);
      addNextAsOption=false;
    }
 else {
      String entryName=arg.substring(arg.lastIndexOf(File.separator) + 1);
      if ((arg.endsWith("String_Node_Str") && entryName.indexOf('.') == entryName.length() - 5) || (arg.endsWith("String_Node_Str") && entryName.indexOf('.') == entryName.length() - 3) || arg.endsWith("String_Node_Str") && arg != null) {
        File f=new File(arg);
        if (f.isAbsolute()) {
          filenames.addElement(arg);
        }
 else {
          filenames.addElement(currentWorkingDir + Config.DIR_SEP_CHAR + arg);
        }
        fileList.addElement(arg);
      }
 else       if (!ignoreArg) {
        packageMode=true;
        packageList.addElement(arg);
        arg=arg.replace('.','/');
        for (int c=0; c < sourcepath.size(); c++) {
          String path=(String)sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg;
          File pkg=new File(path);
          if (pkg.isDirectory()) {
            String[] files=pkg.list(new FilenameFilter(){
              public boolean accept(              File dir,              String name){
                int index1=name.lastIndexOf("String_Node_Str");
                int index2=name.length();
                if ((index1 >= 0 && index2 >= 0) && (name.substring(index1,index2).equals("String_Node_Str") || name.substring(index1,index2).equals("String_Node_Str"))) {
                  return true;
                }
 else {
                  return false;
                }
              }
            }
);
            for (int j=0; j < files.length; j++) {
              filenames.addElement((String)sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg+ Config.DIR_SEP_CHAR+ files[j]);
            }
          }
 else           if (c == sourcepath.size()) {
            System.out.println("String_Node_Str" + "String_Node_Str" + arg + "String_Node_Str");
          }
 else {
          }
        }
      }
    }
  }
  if (!options.contains("String_Node_Str") && !options.contains("String_Node_Str") && !options.contains("String_Node_Str")&& !options.contains("String_Node_Str")) {
    options.addElement("String_Node_Str");
  }
}

Fixed version (ground truth):
static void parseArgs(List vargs,File currentWorkingDir){
  boolean addNextAsOption=false;
  boolean addNextAsArgFile=false;
  boolean addNextToAJCOptions=false;
  boolean addNextAsDocDir=false;
  boolean addNextAsClasspath=false;
  boolean ignoreArg=false;
  boolean addNextAsSourcePath=false;
  if (vargs.size() == 0) {
    displayHelpAndExit(null);
  }
  for (int i=0; i < vargs.size(); i++) {
    String arg=(String)vargs.get(i);
    ignoreArg=false;
    if (addNextToAJCOptions) {
      ajcOptions.addElement(arg);
      addNextToAJCOptions=false;
    }
    if (addNextAsDocDir) {
      docDir=arg;
      addNextAsDocDir=false;
    }
    if (addNextAsClasspath) {
      addNextAsClasspath=false;
    }
    if (addNextAsSourcePath) {
      setSourcepath(arg);
      addNextAsSourcePath=false;
      ignoreArg=true;
    }
    if (arg.startsWith("String_Node_Str")) {
      expandAtSignFile(arg.substring(1),currentWorkingDir);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsArgFile=true;
    }
 else     if (addNextAsArgFile) {
      expandAtSignFile(arg,currentWorkingDir);
      addNextAsArgFile=false;
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      options.addElement(arg);
      addNextAsDocDir=true;
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      addNextAsClasspath=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsOption=true;
      addNextToAJCOptions=true;
      addNextAsClasspath=true;
      options.addElement(arg);
      ajcOptions.addElement(arg);
    }
 else     if (arg.equals("String_Node_Str")) {
      addNextAsSourcePath=true;
    }
 else     if (arg.equals("String_Node_Str")) {
      deleteTempFilesOnExit=false;
    }
 else     if (arg.equals("String_Node_Str")) {
      System.out.println("String_Node_Str");
    }
 else     if (arg.equals("String_Node_Str")) {
    }
 else     if (arg.startsWith("String_Node_Str") || addNextAsOption) {
      if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        docModifier="String_Node_Str";
      }
 else       if (arg.equals("String_Node_Str")) {
        verboseMode=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        authorStandardDocletSwitch=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        versionStandardDocletSwitch=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        System.out.println(getVersion());
        exit(0);
      }
 else       if (arg.equals("String_Node_Str")) {
        displayHelpAndExit(null);
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
        System.out.println("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
        exit(0);
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
      }
 else       if (addNextAsOption) {
      }
 else {
        System.err.println("String_Node_Str" + arg);
        displayHelpAndExit(null);
      }
      options.addElement(arg);
      addNextAsOption=false;
    }
 else {
      String entryName=arg.substring(arg.lastIndexOf(File.separator) + 1);
      if (FileUtil.hasSourceSuffix(arg) || arg.endsWith("String_Node_Str") && arg != null) {
        File f=new File(arg);
        if (f.isAbsolute()) {
          filenames.addElement(arg);
        }
 else {
          filenames.addElement(currentWorkingDir + Config.DIR_SEP_CHAR + arg);
        }
        fileList.addElement(arg);
      }
 else       if (!ignoreArg) {
        packageMode=true;
        packageList.addElement(arg);
        arg=arg.replace('.','/');
        for (int c=0; c < sourcepath.size(); c++) {
          String path=(String)sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg;
          File pkg=new File(path);
          if (pkg.isDirectory()) {
            String[] files=pkg.list(new FilenameFilter(){
              public boolean accept(              File dir,              String name){
                int index1=name.lastIndexOf("String_Node_Str");
                int index2=name.length();
                if ((index1 >= 0 && index2 >= 0) && (name.substring(index1,index2).equals("String_Node_Str") || name.substring(index1,index2).equals("String_Node_Str"))) {
                  return true;
                }
 else {
                  return false;
                }
              }
            }
);
            for (int j=0; j < files.length; j++) {
              filenames.addElement((String)sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg+ Config.DIR_SEP_CHAR+ files[j]);
            }
          }
 else           if (c == sourcepath.size()) {
            System.out.println("String_Node_Str" + "String_Node_Str" + arg + "String_Node_Str");
          }
 else {
          }
        }
      }
    }
  }
  if (!options.contains("String_Node_Str") && !options.contains("String_Node_Str") && !options.contains("String_Node_Str")&& !options.contains("String_Node_Str")) {
    options.addElement("String_Node_Str");
  }
}