Program: 9406
Project: 9406
Buggy source:
/** 
 * Generate build configuration for the input args, passing to handler any error messages.
 * @param args the String[] arguments for the build configuration
 * @param setClasspath	determines if the classpath should be parsed and set on the build configuration
 * @param configFile	can be null
 * @return AjBuildConfig per args, which will be invalid unless there are no handler errors.
 */
public AjBuildConfig populateBuildConfig(AjBuildConfig buildConfig,String[] args,boolean setClasspath,File configFile){
  Dump.saveCommandLine(args);
  buildConfig.setConfigFile(configFile);
  try {
    super.filenames=new String[]{"String_Node_Str"};
    AjcConfigParser parser=new AjcConfigParser(buildConfig,handler);
    parser.parseCommandLine(args);
    boolean swi=buildConfig.getShowWeavingInformation();
    if (handler instanceof CountingMessageHandler) {
      IMessageHandler delegate=((CountingMessageHandler)handler).delegate;
      if (delegate instanceof MessageHandler) {
        if (swi)         ((MessageHandler)delegate).dontIgnore(IMessage.WEAVEINFO);
 else         ((MessageHandler)delegate).ignore(IMessage.WEAVEINFO);
      }
    }
    boolean incrementalMode=buildConfig.isIncrementalMode() || buildConfig.isIncrementalFileMode();
    List fileList=new ArrayList();
    List files=parser.getFiles();
    if (!LangUtil.isEmpty(files)) {
      if (incrementalMode) {
        MessageUtil.error(handler,"String_Node_Str");
      }
 else {
        fileList.addAll(files);
      }
    }
    List javaArgList=new ArrayList();
    javaArgList.add("String_Node_Str");
    javaArgList.add("String_Node_Str");
    javaArgList.add(System.getProperty("String_Node_Str"));
    javaArgList.add("String_Node_Str");
    javaArgList.add(System.getProperty("String_Node_Str"));
    javaArgList.addAll(parser.getUnparsedArgs());
    super.configure((String[])javaArgList.toArray(new String[javaArgList.size()]));
    if (!proceed) {
      buildConfig.doNotProceed();
      return buildConfig;
    }
    if (buildConfig.getSourceRoots() != null) {
      for (Iterator i=buildConfig.getSourceRoots().iterator(); i.hasNext(); ) {
        fileList.addAll(collectSourceRootFiles((File)i.next()));
      }
    }
    buildConfig.setFiles(fileList);
    if (destinationPath != null) {
      buildConfig.setOutputDir(new File(destinationPath));
    }
    if (setClasspath) {
      buildConfig.setClasspath(getClasspath(parser));
    }
    if (incrementalMode && (0 == buildConfig.getSourceRoots().size())) {
      MessageUtil.error(handler,"String_Node_Str");
    }
    File outjar=buildConfig.getOutputJar();
    if (outjar != null) {
      for (Iterator i=buildConfig.getInJars().iterator(); i.hasNext(); ) {
        File injar=(File)i.next();
        if (injar.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
      for (Iterator i=buildConfig.getInpath().iterator(); i.hasNext(); ) {
        File inPathElement=(File)i.next();
        if (!inPathElement.isDirectory() && inPathElement.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
      for (Iterator i=buildConfig.getAspectpath().iterator(); i.hasNext(); ) {
        File pathElement=(File)i.next();
        if (!pathElement.isDirectory() && pathElement.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
    }
    setDebugOptions();
    buildConfig.getOptions().set(options);
  }
 catch (  InvalidInputException iie) {
    ISourceLocation location=null;
    if (buildConfig.getConfigFile() != null) {
      location=new SourceLocation(buildConfig.getConfigFile(),0);
    }
    IMessage m=new Message(iie.getMessage(),IMessage.ERROR,null,location);
    handler.handleMessage(m);
  }
  return buildConfig;
}

Fixed version (ground truth):
/** 
 * Generate build configuration for the input args, passing to handler any error messages.
 * @param args the String[] arguments for the build configuration
 * @param setClasspath	determines if the classpath should be parsed and set on the build configuration
 * @param configFile	can be null
 * @return AjBuildConfig per args, which will be invalid unless there are no handler errors.
 */
public AjBuildConfig populateBuildConfig(AjBuildConfig buildConfig,String[] args,boolean setClasspath,File configFile){
  Dump.saveCommandLine(args);
  buildConfig.setConfigFile(configFile);
  try {
    super.filenames=new String[]{"String_Node_Str"};
    AjcConfigParser parser=new AjcConfigParser(buildConfig,handler);
    parser.parseCommandLine(args);
    boolean swi=buildConfig.getShowWeavingInformation();
    if (handler instanceof CountingMessageHandler) {
      IMessageHandler delegate=((CountingMessageHandler)handler).delegate;
      if (delegate instanceof MessageHandler) {
        if (swi)         ((MessageHandler)delegate).dontIgnore(IMessage.WEAVEINFO);
 else         ((MessageHandler)delegate).ignore(IMessage.WEAVEINFO);
      }
    }
    boolean incrementalMode=buildConfig.isIncrementalMode() || buildConfig.isIncrementalFileMode();
    List fileList=new ArrayList();
    List files=parser.getFiles();
    if (!LangUtil.isEmpty(files)) {
      if (incrementalMode) {
        MessageUtil.error(handler,"String_Node_Str");
      }
 else {
        fileList.addAll(files);
      }
    }
    List javaArgList=new ArrayList();
    javaArgList.add("String_Node_Str");
    javaArgList.add("String_Node_Str");
    javaArgList.add(System.getProperty("String_Node_Str"));
    javaArgList.add("String_Node_Str");
    javaArgList.add(System.getProperty("String_Node_Str"));
    javaArgList.addAll(parser.getUnparsedArgs());
    super.configure((String[])javaArgList.toArray(new String[javaArgList.size()]));
    if (!proceed) {
      buildConfig.doNotProceed();
      return buildConfig;
    }
    if (buildConfig.getSourceRoots() != null) {
      for (Iterator i=buildConfig.getSourceRoots().iterator(); i.hasNext(); ) {
        fileList.addAll(collectSourceRootFiles((File)i.next()));
      }
    }
    buildConfig.setFiles(fileList);
    if (destinationPath != null) {
      buildConfig.setOutputDir(new File(destinationPath));
    }
    if (setClasspath) {
      buildConfig.setClasspath(getClasspath(parser));
      buildConfig.setBootclasspath(getBootclasspath(parser));
    }
    if (incrementalMode && (0 == buildConfig.getSourceRoots().size())) {
      MessageUtil.error(handler,"String_Node_Str");
    }
    File outjar=buildConfig.getOutputJar();
    if (outjar != null) {
      for (Iterator i=buildConfig.getInJars().iterator(); i.hasNext(); ) {
        File injar=(File)i.next();
        if (injar.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
      for (Iterator i=buildConfig.getInpath().iterator(); i.hasNext(); ) {
        File inPathElement=(File)i.next();
        if (!inPathElement.isDirectory() && inPathElement.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
      for (Iterator i=buildConfig.getAspectpath().iterator(); i.hasNext(); ) {
        File pathElement=(File)i.next();
        if (!pathElement.isDirectory() && pathElement.equals(outjar)) {
          String message=WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
          MessageUtil.error(handler,message);
        }
      }
    }
    setDebugOptions();
    buildConfig.getOptions().set(options);
  }
 catch (  InvalidInputException iie) {
    ISourceLocation location=null;
    if (buildConfig.getConfigFile() != null) {
      location=new SourceLocation(buildConfig.getConfigFile(),0);
    }
    IMessage m=new Message(iie.getMessage(),IMessage.ERROR,null,location);
    handler.handleMessage(m);
  }
  return buildConfig;
}