Program: 9486
Project: 9486
Buggy source:
/** 
 * Extract AspectJ-specific options (except for argfiles). Caller should warn when sourceroots is empty but in  incremental mode. Signals warnings or errors through handler set in constructor.
 */
public void parseOption(String arg,LinkedList args){
  int nextArgIndex=args.indexOf(arg) + 1;
  if (LangUtil.isEmpty(arg)) {
    showWarning("String_Node_Str");
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_Inpath,CompilerOptions.PRESERVE);
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File file=makeFile(filename);
        if (file.exists() && FileUtil.hasZipSuffix(filename)) {
          buildConfig.getInpath().add(file);
        }
 else {
          if (file.isDirectory()) {
            buildConfig.getInpath().add(file);
          }
 else           showError("String_Node_Str" + filename);
        }
      }
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_InJARs,CompilerOptions.PRESERVE);
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File jarFile=makeFile(filename);
        if (jarFile.exists() && FileUtil.hasZipSuffix(filename)) {
          buildConfig.getInJars().add(jarFile);
        }
 else {
          File dirFile=makeFile(filename);
          if (dirFile.isDirectory()) {
            buildConfig.getInJars().add(dirFile);
          }
 else           showError("String_Node_Str" + filename);
        }
      }
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File jarFile=makeFile(filename);
        if (jarFile.exists() && FileUtil.hasZipSuffix(filename)) {
          buildConfig.getAspectpath().add(jarFile);
        }
 else {
          showError("String_Node_Str" + filename);
        }
      }
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      List sourceRoots=new ArrayList();
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        File f=makeFile(st.nextToken());
        if (f.isDirectory() && f.canRead()) {
          sourceRoots.add(f);
        }
 else {
          showError("String_Node_Str" + f);
        }
      }
      if (0 < sourceRoots.size()) {
        buildConfig.setSourceRoots(sourceRoots);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_OutJAR,CompilerOptions.GENERATE);
      File jarFile=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      if (FileUtil.hasZipSuffix(jarFile)) {
        try {
          if (!jarFile.exists()) {
            jarFile.createNewFile();
          }
          buildConfig.setOutputJar(jarFile);
        }
 catch (        IOException ioe) {
          showError("String_Node_Str" + jarFile);
        }
      }
 else {
        showError("String_Node_Str" + jarFile);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setIncrementalMode(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      File file=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      buildConfig.setIncrementalFile(file);
      if (!file.canRead()) {
        showError("String_Node_Str" + file);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setEmacsSymMode(true);
    buildConfig.setGenerateModelMode(true);
  }
 else   if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
    buildConfig.setNoWeave(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXserializableAspects(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXlazyTjp(true);
  }
 else   if (arg.startsWith("String_Node_Str")) {
    buildConfig.setXreweavable(true);
    if (arg.endsWith("String_Node_Str")) {
      buildConfig.setXreweavableCompressClasses(true);
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXnoInline(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      File lintSpecFile=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      if (lintSpecFile.canRead() && lintSpecFile.getName().endsWith("String_Node_Str")) {
        buildConfig.setLintSpecFile(lintSpecFile);
      }
 else {
        showError("String_Node_Str" + lintSpecFile);
        buildConfig.setLintSpecFile(null);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_Xlint,CompilerOptions.GENERATE);
    buildConfig.setLintMode(AjBuildConfig.AJLINT_DEFAULT);
  }
 else   if (arg.startsWith("String_Node_Str")) {
    if (7 < arg.length()) {
      buildConfig.setLintMode(arg.substring(7));
    }
 else {
      showError("String_Node_Str" + arg);
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      bootclasspath=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      classpath=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      extdirs=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    dirLookahead(arg,args,nextArgIndex);
  }
 else   if (new File(arg).isDirectory()) {
    showError("String_Node_Str" + arg);
  }
 else {
    unparsedArgs.add(arg);
  }
}

Fixed version (ground truth):
/** 
 * Extract AspectJ-specific options (except for argfiles). Caller should warn when sourceroots is empty but in  incremental mode. Signals warnings or errors through handler set in constructor.
 */
public void parseOption(String arg,LinkedList args){
  int nextArgIndex=args.indexOf(arg) + 1;
  if (LangUtil.isEmpty(arg)) {
    showWarning("String_Node_Str");
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_Inpath,CompilerOptions.PRESERVE);
      List inPath=buildConfig.getInpath();
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File file=makeFile(filename);
        if (file.exists() && FileUtil.hasZipSuffix(filename)) {
          inPath.add(file);
        }
 else {
          if (file.isDirectory()) {
            inPath.add(file);
          }
 else           showError("String_Node_Str" + filename);
        }
      }
      buildConfig.setInPath(inPath);
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_InJARs,CompilerOptions.PRESERVE);
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File jarFile=makeFile(filename);
        if (jarFile.exists() && FileUtil.hasZipSuffix(filename)) {
          buildConfig.getInJars().add(jarFile);
        }
 else {
          File dirFile=makeFile(filename);
          if (dirFile.isDirectory()) {
            buildConfig.getInJars().add(dirFile);
          }
 else           showError("String_Node_Str" + filename);
        }
      }
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    ;
    if (args.size() > nextArgIndex) {
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        String filename=st.nextToken();
        File jarFile=makeFile(filename);
        if (jarFile.exists() && FileUtil.hasZipSuffix(filename)) {
          buildConfig.getAspectpath().add(jarFile);
        }
 else {
          showError("String_Node_Str" + filename);
        }
      }
      args.remove(args.get(nextArgIndex));
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      List sourceRoots=new ArrayList();
      StringTokenizer st=new StringTokenizer(((ConfigParser.Arg)args.get(nextArgIndex)).getValue(),File.pathSeparator);
      while (st.hasMoreTokens()) {
        File f=makeFile(st.nextToken());
        if (f.isDirectory() && f.canRead()) {
          sourceRoots.add(f);
        }
 else {
          showError("String_Node_Str" + f);
        }
      }
      if (0 < sourceRoots.size()) {
        buildConfig.setSourceRoots(sourceRoots);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_OutJAR,CompilerOptions.GENERATE);
      File jarFile=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      if (FileUtil.hasZipSuffix(jarFile)) {
        try {
          if (!jarFile.exists()) {
            jarFile.createNewFile();
          }
          buildConfig.setOutputJar(jarFile);
        }
 catch (        IOException ioe) {
          showError("String_Node_Str" + jarFile);
        }
      }
 else {
        showError("String_Node_Str" + jarFile);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setIncrementalMode(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      File file=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      buildConfig.setIncrementalFile(file);
      if (!file.canRead()) {
        showError("String_Node_Str" + file);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setEmacsSymMode(true);
    buildConfig.setGenerateModelMode(true);
  }
 else   if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
    buildConfig.setNoWeave(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXserializableAspects(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXlazyTjp(true);
  }
 else   if (arg.startsWith("String_Node_Str")) {
    buildConfig.setXreweavable(true);
    if (arg.endsWith("String_Node_Str")) {
      buildConfig.setXreweavableCompressClasses(true);
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.setXnoInline(true);
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      File lintSpecFile=makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
      if (lintSpecFile.canRead() && lintSpecFile.getName().endsWith("String_Node_Str")) {
        buildConfig.setLintSpecFile(lintSpecFile);
      }
 else {
        showError("String_Node_Str" + lintSpecFile);
        buildConfig.setLintSpecFile(null);
      }
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_Xlint,CompilerOptions.GENERATE);
    buildConfig.setLintMode(AjBuildConfig.AJLINT_DEFAULT);
  }
 else   if (arg.startsWith("String_Node_Str")) {
    if (7 < arg.length()) {
      buildConfig.setLintMode(arg.substring(7));
    }
 else {
      showError("String_Node_Str" + arg);
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      bootclasspath=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      classpath=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    if (args.size() > nextArgIndex) {
      extdirs=((ConfigParser.Arg)args.get(nextArgIndex)).getValue();
      args.remove(args.get(nextArgIndex));
    }
 else {
      showError("String_Node_Str");
    }
  }
 else   if (arg.equals("String_Node_Str")) {
    dirLookahead(arg,args,nextArgIndex);
  }
 else   if (new File(arg).isDirectory()) {
    showError("String_Node_Str" + arg);
  }
 else {
    unparsedArgs.add(arg);
  }
}