Program: 3076
Project: 3076
Buggy source:
private Map<String,byte[]> compile(MemoryJavaFileManager manager,Iterable<? extends JavaFileObject> compUnits,Writer err,String sourcePath,String classPath){
  DiagnosticCollector<JavaFileObject> diagnostics=new DiagnosticCollector<JavaFileObject>();
  List<String> options=new ArrayList<String>();
  options.add("String_Node_Str");
  options.add("String_Node_Str");
  options.add("String_Node_Str");
  if (sourcePath != null) {
    options.add("String_Node_Str");
    options.add(sourcePath);
  }
  if (classPath != null) {
    options.add("String_Node_Str");
    options.add(classPath);
  }
  JavacTask task=(JavacTask)compiler.getTask(err,manager,diagnostics,options,null,compUnits);
  Verifier btraceVerifier=new Verifier(unsafe);
  task.setTaskListener(btraceVerifier);
  List<Processor> processors=new ArrayList<Processor>(1);
  processors.add(btraceVerifier);
  task.setProcessors(processors);
  PrintWriter perr;
  if (err instanceof PrintWriter) {
    perr=(PrintWriter)err;
  }
 else {
    perr=new PrintWriter(err);
  }
  if (task.call() == false) {
    for (    Diagnostic diagnostic : diagnostics.getDiagnostics()) {
      perr.println(diagnostic.getMessage(null));
    }
    perr.flush();
    return null;
  }
  try {
    Map<String,byte[]> classBytes=manager.getClassBytes();
    List<String> classNames=btraceVerifier.getClassNames();
    Map<String,byte[]> result=new HashMap<String,byte[]>();
    for (    String name : classNames) {
      if (classBytes.containsKey(name)) {
        dump(name + "String_Node_Str",classBytes.get(name));
        ClassReader cr=new ClassReader(classBytes.get(name));
        ClassWriter cw=new ClassWriter(ClassWriter.COMPUTE_FRAMES);
        cr.accept(new Postprocessor(cw),ClassReader.EXPAND_FRAMES + ClassReader.SKIP_DEBUG);
        result.put(name,cw.toByteArray());
        dump(name,cw.toByteArray());
      }
    }
    return result;
  }
  finally {
    try {
      manager.close();
    }
 catch (    IOException exp) {
    }
  }
}

Fixed version (ground truth):
private Map<String,byte[]> compile(MemoryJavaFileManager manager,Iterable<? extends JavaFileObject> compUnits,Writer err,String sourcePath,String classPath){
  DiagnosticCollector<JavaFileObject> diagnostics=new DiagnosticCollector<JavaFileObject>();
  List<String> options=new ArrayList<String>();
  options.add("String_Node_Str");
  options.add("String_Node_Str");
  options.add("String_Node_Str");
  if (sourcePath != null) {
    options.add("String_Node_Str");
    options.add(sourcePath);
  }
  if (classPath != null) {
    options.add("String_Node_Str");
    options.add(classPath);
  }
  JavacTask task=(JavacTask)compiler.getTask(err,manager,diagnostics,options,null,compUnits);
  Verifier btraceVerifier=new Verifier(unsafe);
  task.setTaskListener(btraceVerifier);
  List<Processor> processors=new ArrayList<Processor>(1);
  processors.add(btraceVerifier);
  task.setProcessors(processors);
  PrintWriter perr;
  if (err instanceof PrintWriter) {
    perr=(PrintWriter)err;
  }
 else {
    perr=new PrintWriter(err);
  }
  if (task.call() == false) {
    for (    Diagnostic diagnostic : diagnostics.getDiagnostics()) {
      perr.println(diagnostic.getMessage(null));
    }
    perr.flush();
    return null;
  }
  try {
    Map<String,byte[]> classBytes=manager.getClassBytes();
    List<String> classNames=btraceVerifier.getClassNames();
    Map<String,byte[]> result=new HashMap<String,byte[]>();
    for (    String name : classNames) {
      if (classBytes.containsKey(name)) {
        dump(name + "String_Node_Str",classBytes.get(name));
        ClassReader cr=new ClassReader(classBytes.get(name));
        ClassWriter cw=new ClassWriter(ClassWriter.COMPUTE_FRAMES);
        cr.accept(new Postprocessor(cw),ClassReader.EXPAND_FRAMES + ClassReader.SKIP_DEBUG);
        result.put(name,cw.toByteArray());
        dump(name + "String_Node_Str",cw.toByteArray());
      }
    }
    return result;
  }
  finally {
    try {
      manager.close();
    }
 catch (    IOException exp) {
    }
  }
}