Program: 186819
Project: 186819
Buggy source:
/** 
 * Setup AppInfo using the config previously initialized with   {@link #setupConfig(String[])}.
 * @param args the arguments containing the name of the main method and additional roots without config options.
 * @param loadTransitiveHull if true, load the transitive hull of the root classes too.
 */
public void setupAppInfo(String[] args,boolean loadTransitiveHull){
  CustomAttribute.registerDefaultReader();
  appInfo.setClassPath(new ClassPath(config.getOption(Config.CLASSPATH)));
  appInfo.setExitOnMissingClass(!config.getOption(Config.VERBOSE));
  if (config.hasOption(Config.PROCESSOR_MODEL)) {
    initProcessorModel(config.getOption(Config.PROCESSOR_MODEL));
  }
  if (config.hasOption(Config.LIBRARY_CLASSES)) {
    String[] libs=Config.splitStringList(config.getOption(Config.LIBRARY_CLASSES));
    for (    String lib : libs) {
      appInfo.addLibrary(lib.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.IGNORE_CLASSES)) {
    String[] ignore=Config.splitStringList(config.getOption(Config.IGNORE_CLASSES));
    for (    String cls : ignore) {
      appInfo.addLibrary(cls.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.EXCLUDE_LIBRARIES)) {
    appInfo.setLoadLibraries(!config.getOption(Config.EXCLUDE_LIBRARIES));
  }
  if (config.hasOption(Config.LOAD_NATIVES)) {
    appInfo.setLoadNatives(config.getOption(Config.LOAD_NATIVES));
  }
  for (  String toolName : tools.keySet()) {
    if (useTool(toolName)) {
      AppEventHandler handler=tools.get(toolName).getEventHandler();
      if (handler != null) {
        appInfo.registerEventHandler(handler);
      }
    }
  }
  String[] roots=Config.splitStringList(config.getOption(Config.ROOTS));
  for (  String root : roots) {
    ClassInfo rootInfo=appInfo.loadClass(root.replaceAll("String_Node_Str","String_Node_Str"));
    if (rootInfo == null) {
      System.err.println("String_Node_Str" + root + "String_Node_Str");
      System.exit(4);
    }
    appInfo.addRoot(rootInfo);
  }
  try {
    MethodInfo main=getMainMethod(args.length > 0 ? args[0].replace('/','.') : null);
    appInfo.setMainMethod(main);
  }
 catch (  Config.BadConfigurationException e) {
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  for (int i=1; i < args.length; i++) {
    ClassInfo clsInfo=appInfo.loadClass(args[i].replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.addRoot(clsInfo);
  }
  if (loadTransitiveHull) {
    loadClassInfos();
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupAppInfo(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
}

Fixed version (ground truth):
/** 
 * Setup AppInfo using the config previously initialized with   {@link #setupConfig(String[])}.
 * @param args the arguments containing the name of the main method and additional roots without config options.
 * @param loadTransitiveHull if true, load the transitive hull of the root classes too.
 */
public void setupAppInfo(String[] args,boolean loadTransitiveHull){
  CustomAttribute.registerDefaultReader();
  appInfo.setClassPath(new ClassPath(config.getOption(Config.CLASSPATH)));
  appInfo.setExitOnMissingClass(!config.getOption(Config.VERBOSE));
  if (config.hasOption(Config.LIBRARY_CLASSES)) {
    String[] libs=Config.splitStringList(config.getOption(Config.LIBRARY_CLASSES));
    for (    String lib : libs) {
      appInfo.addLibrary(lib.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.IGNORE_CLASSES)) {
    String[] ignore=Config.splitStringList(config.getOption(Config.IGNORE_CLASSES));
    for (    String cls : ignore) {
      appInfo.addLibrary(cls.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.EXCLUDE_LIBRARIES)) {
    appInfo.setLoadLibraries(!config.getOption(Config.EXCLUDE_LIBRARIES));
  }
  if (config.hasOption(Config.LOAD_NATIVES)) {
    appInfo.setLoadNatives(config.getOption(Config.LOAD_NATIVES));
  }
  for (  String toolName : tools.keySet()) {
    if (useTool(toolName)) {
      AppEventHandler handler=tools.get(toolName).getEventHandler();
      if (handler != null) {
        appInfo.registerEventHandler(handler);
      }
    }
  }
  if (config.hasOption(Config.PROCESSOR_MODEL)) {
    initProcessorModel(config.getOption(Config.PROCESSOR_MODEL));
  }
  String[] roots=Config.splitStringList(config.getOption(Config.ROOTS));
  for (  String root : roots) {
    ClassInfo rootInfo=appInfo.loadClass(root.replaceAll("String_Node_Str","String_Node_Str"));
    if (rootInfo == null) {
      System.err.println("String_Node_Str" + root + "String_Node_Str");
      System.exit(4);
    }
    appInfo.addRoot(rootInfo);
  }
  try {
    MethodInfo main=getMainMethod(args.length > 0 ? args[0].replace('/','.') : null);
    appInfo.setMainMethod(main);
  }
 catch (  Config.BadConfigurationException e) {
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  for (int i=1; i < args.length; i++) {
    ClassInfo clsInfo=appInfo.loadClass(args[i].replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.addRoot(clsInfo);
  }
  if (loadTransitiveHull) {
    loadClassInfos();
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupAppInfo(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
}