Program: 177192
Project: 177192
Buggy source:
/** 
 * Do the generate logic.
 * @param deploymentModules The deployment modules to use.
 */
protected void doGenerate(List<DeploymentModule> deploymentModules) throws IOException, EnunciateException {
  File genDir=getGenerateDir();
  if (genDir == null) {
    genDir=createTempDir();
    debug("String_Node_Str",genDir);
    setGenerateDir(genDir);
  }
  List<String> classpath=new ArrayList<String>(Arrays.asList(getEnunciateClasspath().split(File.pathSeparator)));
  List<URL> classpathURLs=new ArrayList<URL>(classpath.size());
  for (  String pathItem : classpath) {
    File pathFile=new File(pathItem);
    if (pathFile.exists()) {
      classpathURLs.add(pathFile.toURL());
    }
  }
  final URLClassLoader loader=new URLClassLoader(classpathURLs.toArray(new URL[classpathURLs.size()]));
  Map<String,Boolean> imports2seekSource=new HashMap<String,Boolean>();
  Enumeration<URL> exportResources=loader.getResources("String_Node_Str");
  while (exportResources.hasMoreElements()) {
    URL url=exportResources.nextElement();
    BufferedReader reader=new BufferedReader(new InputStreamReader(url.openStream()));
    String line=reader.readLine();
    info("String_Node_Str",line,url);
    while (line != null) {
      imports2seekSource.put(line,true);
      line=reader.readLine();
    }
  }
  if ((this.config != null) && (this.config.getAPIImports().size() > 0)) {
    for (    APIImport apiImport : this.config.getAPIImports()) {
      if (apiImport.getClassname() != null) {
        info("String_Node_Str",apiImport.getClassname());
        imports2seekSource.put(apiImport.getClassname(),apiImport.isSeekSource());
      }
    }
  }
  ArrayList<String> sourceFiles=new ArrayList<String>(Arrays.asList(getSourceFiles()));
  ArrayList<String> additionalApiClasses=new ArrayList<String>();
  if (!imports2seekSource.isEmpty()) {
    File tempSourcesDir=createTempDir();
    for (    String classname : imports2seekSource.keySet()) {
      URL source=null;
      if (imports2seekSource.get(classname)) {
        source=loader.findResource(classname.replace('.','/').concat("String_Node_Str"));
      }
      if (source != null) {
        File srcFile=new File(tempSourcesDir,classname.replace('.',File.separatorChar).concat("String_Node_Str"));
        if (!srcFile.getParentFile().exists()) {
          srcFile.getParentFile().mkdirs();
        }
        copyResource(source,srcFile);
        sourceFiles.add(srcFile.getAbsolutePath());
      }
 else       if (loader.findResource(classname.replace('.','/').concat("String_Node_Str")) != null) {
        additionalApiClasses.add(classname);
      }
 else {
        warn("String_Node_Str",classname);
      }
    }
  }
  invokeApt(sourceFiles.toArray(new String[sourceFiles.size()]),additionalApiClasses.toArray(new String[additionalApiClasses.size()]));
}

Fixed version (ground truth):
/** 
 * Do the generate logic.
 * @param deploymentModules The deployment modules to use.
 */
protected void doGenerate(List<DeploymentModule> deploymentModules) throws IOException, EnunciateException {
  File genDir=getGenerateDir();
  if (genDir == null) {
    genDir=createTempDir();
    debug("String_Node_Str",genDir);
    setGenerateDir(genDir);
  }
  List<String> classpath=new ArrayList<String>(Arrays.asList(getEnunciateClasspath().split(File.pathSeparator)));
  List<URL> classpathURLs=new ArrayList<URL>(classpath.size());
  for (  String pathItem : classpath) {
    File pathFile=new File(pathItem);
    if (pathFile.exists()) {
      classpathURLs.add(pathFile.toURL());
    }
  }
  final URLClassLoader loader=new URLClassLoader(classpathURLs.toArray(new URL[classpathURLs.size()]));
  Map<String,Boolean> imports2seekSource=new HashMap<String,Boolean>();
  Enumeration<URL> exportResources=loader.getResources("String_Node_Str");
  while (exportResources.hasMoreElements()) {
    URL url=exportResources.nextElement();
    BufferedReader reader=new BufferedReader(new InputStreamReader(url.openStream()));
    String line=reader.readLine();
    info("String_Node_Str",line,url);
    while (line != null) {
      imports2seekSource.put(line,true);
      line=reader.readLine();
    }
  }
  if ((this.config != null) && (this.config.getAPIImports().size() > 0)) {
    for (    APIImport apiImport : this.config.getAPIImports()) {
      if (apiImport.getClassname() != null) {
        info("String_Node_Str",apiImport.getClassname());
        imports2seekSource.put(apiImport.getClassname(),apiImport.isSeekSource());
      }
    }
  }
  ArrayList<String> sourceFiles=new ArrayList<String>(Arrays.asList(getSourceFiles()));
  ArrayList<String> additionalApiClasses=new ArrayList<String>();
  if (!imports2seekSource.isEmpty()) {
    File tempSourcesDir=createTempDir();
    for (    String classname : imports2seekSource.keySet()) {
      URL source=null;
      if (imports2seekSource.get(classname)) {
        source=loader.findResource(classname.replace('.','/').concat("String_Node_Str"));
      }
      if (source != null) {
        File srcFile=new File(tempSourcesDir,classname.replace('.',File.separatorChar).concat("String_Node_Str"));
        if (!srcFile.getParentFile().exists()) {
          srcFile.getParentFile().mkdirs();
        }
        copyResource(source,srcFile);
        sourceFiles.add(srcFile.getAbsolutePath());
      }
 else       if (loader.findResource(classname.replace('.','/').concat("String_Node_Str")) != null) {
        additionalApiClasses.add(classname);
      }
 else {
        warn("String_Node_Str",classname);
      }
    }
  }
  if (sourceFiles.isEmpty()) {
    File tempSource=File.createTempFile("String_Node_Str","String_Node_Str");
    FileWriter writer=new FileWriter(tempSource);
    writer.write(String.format("String_Node_Str",tempSource.getName().substring(0,tempSource.getName().length() - 5)));
    writer.flush();
    writer.close();
    sourceFiles.add(tempSource.getAbsolutePath());
  }
  invokeApt(sourceFiles.toArray(new String[sourceFiles.size()]),additionalApiClasses.toArray(new String[additionalApiClasses.size()]));
}