Program: 190659
Project: 190659
Buggy source:
/** 
 * Parses an option <code>args[i]</code> and return the number of tokens consumed.
 * @return 0 if the argument is not understood. Returning 0 will let the caller report an error.
 * @exception BadCommandLineException If the callee wants to provide a custom message for an error.
 */
public int parseArgument(String[] args,int i) throws BadCommandLineException {
  if (args[i].equals("String_Node_Str") || args[i].equals("String_Node_Str")) {
    File file=new File(requireArgument(args[i],args,++i));
    try {
      classpaths.add(file.toURL());
    }
 catch (    MalformedURLException e) {
      throw new BadCommandLineException(Messages.format(Messages.NOT_A_VALID_FILENAME,file),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    targetDir=new File(requireArgument("String_Node_Str",args,++i));
    if (!targetDir.exists())     throw new BadCommandLineException(Messages.format(Messages.NON_EXISTENT_DIR,targetDir));
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    readOnly=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    defaultPackage=requireArgument("String_Node_Str",args,++i);
    if (defaultPackage.length() == 0) {
      packageLevelAnnotations=false;
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    debugMode=true;
    verbose=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    strictCheck=false;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    packageLevelAnnotations=false;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    noFileHeader=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    verbose=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    quiet=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    runtime14=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    automaticNameConflictResolution=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    addFile(requireArgument("String_Node_Str",args,++i),bindFiles,"String_Node_Str");
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.DTD;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.RELAXNG;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.RELAXNG_COMPACT;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.XMLSCHEMA;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.WSDL;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    compatibilityMode=EXTENSION;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    String token=requireArgument("String_Node_Str",args,++i);
    target=SpecVersion.parse(token);
    if (target == null)     throw new BadCommandLineException(Messages.format(Messages.ILLEGAL_TARGET_VERSION,token));
  }
  if (args[i].equals("String_Node_Str")) {
    if (i == args.length - 1 || args[i + 1].startsWith("String_Node_Str")) {
      throw new BadCommandLineException(Messages.format(Messages.MISSING_PROXYFILE));
    }
    File file=new File(args[++i]);
    if (!file.exists()) {
      throw new BadCommandLineException(Messages.format(Messages.NO_SUCH_FILE,file));
    }
    try {
      BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(file),"String_Node_Str"));
      parseProxy(in.readLine());
      in.close();
    }
 catch (    IOException e) {
      throw new BadCommandLineException(Messages.format(Messages.FAILED_TO_PARSE,file,e.getMessage()),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    if (i == args.length - 1 || args[i + 1].startsWith("String_Node_Str")) {
      throw new BadCommandLineException(Messages.format(Messages.MISSING_PROXY));
    }
    parseProxy(args[++i]);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    proxyHost=requireArgument("String_Node_Str",args,++i);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    proxyPort=requireArgument("String_Node_Str",args,++i);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    File catalogFile=new File(requireArgument("String_Node_Str",args,++i));
    try {
      addCatalog(catalogFile);
    }
 catch (    IOException e) {
      throw new BadCommandLineException(Messages.format(Messages.FAILED_TO_PARSE,catalogFile,e.getMessage()),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    String version=requireArgument("String_Node_Str",args,++i);
    if (!version.equals("String_Node_Str") && !version.equals("String_Node_Str"))     throw new BadCommandLineException(Messages.format(Messages.DEFAULT_VERSION));
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    classNameAllocator=new ClassNameAllocator(){
      public String assignClassName(      String packageName,      String className){
        System.out.printf("String_Node_Str",packageName,className);
        return className + "String_Node_Str";
      }
    }
;
    return 1;
  }
  for (  Plugin plugin : getAllPlugins()) {
    try {
      if (('-' + plugin.getOptionName()).equals(args[i])) {
        activePlugins.add(plugin);
        plugin.onActivated(this);
        pluginURIs.addAll(plugin.getCustomizationURIs());
        int r=plugin.parseArgument(this,args,i);
        if (r != 0)         return r;
 else         return 1;
      }
      int r=plugin.parseArgument(this,args,i);
      if (r != 0)       return r;
    }
 catch (    IOException e) {
      throw new BadCommandLineException(e.getMessage(),e);
    }
  }
  return 0;
}

Fixed version (ground truth):
/** 
 * Parses an option <code>args[i]</code> and return the number of tokens consumed.
 * @return 0 if the argument is not understood. Returning 0 will let the caller report an error.
 * @exception BadCommandLineException If the callee wants to provide a custom message for an error.
 */
public int parseArgument(String[] args,int i) throws BadCommandLineException {
  if (args[i].equals("String_Node_Str") || args[i].equals("String_Node_Str")) {
    File file=new File(requireArgument(args[i],args,++i));
    try {
      classpaths.add(file.toURL());
    }
 catch (    MalformedURLException e) {
      throw new BadCommandLineException(Messages.format(Messages.NOT_A_VALID_FILENAME,file),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    targetDir=new File(requireArgument("String_Node_Str",args,++i));
    if (!targetDir.exists())     throw new BadCommandLineException(Messages.format(Messages.NON_EXISTENT_DIR,targetDir));
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    readOnly=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    defaultPackage=requireArgument("String_Node_Str",args,++i);
    if (defaultPackage.length() == 0) {
      packageLevelAnnotations=false;
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    debugMode=true;
    verbose=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    strictCheck=false;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    packageLevelAnnotations=false;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    noFileHeader=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    verbose=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    quiet=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    runtime14=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    automaticNameConflictResolution=true;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    addFile(requireArgument("String_Node_Str",args,++i),bindFiles,"String_Node_Str");
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.DTD;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.RELAXNG;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.RELAXNG_COMPACT;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.XMLSCHEMA;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    schemaLanguage=Language.WSDL;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    compatibilityMode=EXTENSION;
    return 1;
  }
  if (args[i].equals("String_Node_Str")) {
    String token=requireArgument("String_Node_Str",args,++i);
    target=SpecVersion.parse(token);
    if (target == null)     throw new BadCommandLineException(Messages.format(Messages.ILLEGAL_TARGET_VERSION,token));
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    if (i == args.length - 1 || args[i + 1].startsWith("String_Node_Str")) {
      throw new BadCommandLineException(Messages.format(Messages.MISSING_PROXYFILE));
    }
    File file=new File(args[++i]);
    if (!file.exists()) {
      throw new BadCommandLineException(Messages.format(Messages.NO_SUCH_FILE,file));
    }
    try {
      BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(file),"String_Node_Str"));
      parseProxy(in.readLine());
      in.close();
    }
 catch (    IOException e) {
      throw new BadCommandLineException(Messages.format(Messages.FAILED_TO_PARSE,file,e.getMessage()),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    if (i == args.length - 1 || args[i + 1].startsWith("String_Node_Str")) {
      throw new BadCommandLineException(Messages.format(Messages.MISSING_PROXY));
    }
    parseProxy(args[++i]);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    proxyHost=requireArgument("String_Node_Str",args,++i);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    proxyPort=requireArgument("String_Node_Str",args,++i);
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    File catalogFile=new File(requireArgument("String_Node_Str",args,++i));
    try {
      addCatalog(catalogFile);
    }
 catch (    IOException e) {
      throw new BadCommandLineException(Messages.format(Messages.FAILED_TO_PARSE,catalogFile,e.getMessage()),e);
    }
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    String version=requireArgument("String_Node_Str",args,++i);
    if (!version.equals("String_Node_Str") && !version.equals("String_Node_Str"))     throw new BadCommandLineException(Messages.format(Messages.DEFAULT_VERSION));
    return 2;
  }
  if (args[i].equals("String_Node_Str")) {
    classNameAllocator=new ClassNameAllocator(){
      public String assignClassName(      String packageName,      String className){
        System.out.printf("String_Node_Str",packageName,className);
        return className + "String_Node_Str";
      }
    }
;
    return 1;
  }
  for (  Plugin plugin : getAllPlugins()) {
    try {
      if (('-' + plugin.getOptionName()).equals(args[i])) {
        activePlugins.add(plugin);
        plugin.onActivated(this);
        pluginURIs.addAll(plugin.getCustomizationURIs());
        int r=plugin.parseArgument(this,args,i);
        if (r != 0)         return r;
 else         return 1;
      }
      int r=plugin.parseArgument(this,args,i);
      if (r != 0)       return r;
    }
 catch (    IOException e) {
      throw new BadCommandLineException(e.getMessage(),e);
    }
  }
  return 0;
}