nus-yam/ex-repair huggingface dataset:
Program: 186841
Project: 186841
Buggy source:
/** 
 * Get a reference to a field using the given signature.
 * @param classRef The class which contains the field.
 * @param signature The signature of the field. Only memberName and memberDescriptor are used.
 * @return A field reference with or without FieldInfo or ClassInfo.
 */
public FieldRef getFieldRef(ClassRef classRef,Signature signature){
  ClassInfo cls=classRef.getClassInfo();
  if (cls != null) {
    FieldInfo field=cls.getFieldInfo(signature.getMemberName());
    if (field == null) {
      return new FieldRef(cls.getClassRef(),signature.getMemberName(),signature.getMemberDescriptor().getType());
    }
 else {
      return field.getFieldRef();
    }
  }
  return new FieldRef(classRef,signature.getMemberName(),signature.getMemberDescriptor().getType());
}

Fixed version (ground truth):
/** 
 * Get a reference to a field using the given signature.
 * @param classRef The class which contains the field.
 * @param signature The signature of the field. Only memberName and memberDescriptor are used.
 * @return A field reference with or without FieldInfo or ClassInfo.
 */
public FieldRef getFieldRef(ClassRef classRef,Signature signature){
  ClassInfo cls=classRef.getClassInfo();
  if (cls != null) {
    FieldInfo field=cls.getFieldInfo(signature.getMemberName());
    if (field == null) {
      Type type=null;
      if (signature.hasMemberSignature()) {
        type=signature.getMemberDescriptor().getType();
      }
      return new FieldRef(cls.getClassRef(),signature.getMemberName(),type);
    }
 else {
      return field.getFieldRef();
    }
  }
  return new FieldRef(classRef,signature.getMemberName(),signature.getMemberDescriptor().getType());
}
Program: 186842
Project: 186842
Buggy source:
/** 
 * Build and initialize everything, perform checks
 */
private void build(){
  this.buildGraph();
  Pair<List<ExecutionContext>,List<ExecutionContext>> cycle=DirectedCycleDetector.findCycle(callGraph,rootNode);
  if (cycle != null) {
    throw new AssertionError(cyclicCallGraphMsg(cycle));
  }
  invalidate();
}

Fixed version (ground truth):
/** 
 * Build and initialize everything, perform checks
 */
private void build(){
  this.buildGraph();
  Pair<List<ExecutionContext>,List<ExecutionContext>> cycle=DirectedCycleDetector.findCycle(callGraph,rootNode);
  if (cycle != null) {
  }
  invalidate();
}
Program: 186843
Project: 186843
Buggy source:
@Override public void visitInnerClasses(ClassInfo classInfo,InnerClasses obj){
  visitConstantUtf8(obj.getNameIndex());
  for (  InnerClass ic : obj.getInnerClasses()) {
    visitConstantClass(ic.getInnerClassIndex());
    visitConstantClass(ic.getOuterClassIndex());
    visitConstantUtf8(ic.getInnerNameIndex());
  }
}

Fixed version (ground truth):
@Override public void visitInnerClasses(ClassInfo classInfo,InnerClasses obj){
  visitConstantUtf8(obj.getNameIndex());
  for (  InnerClass ic : obj.getInnerClasses()) {
    visitConstantClass(ic.getInnerClassIndex());
    if (ic.getOuterClassIndex() != 0) {
      visitConstantClass(ic.getOuterClassIndex());
    }
    if (ic.getInnerNameIndex() != 0) {
      visitConstantUtf8(ic.getInnerNameIndex());
    }
  }
}
Program: 186844
Project: 186844
Buggy source:
@Override public void visitCode(MethodInfo methodInfo,Code code){
  visitConstantUtf8(code.getNameIndex());
  InstructionList il=new InstructionList(code.getCode());
  visitInstructionList(il);
  il.dispose();
  for (  CodeException ce : code.getExceptionTable()) {
    visitConstantClass(ce.getCatchType());
  }
  new DescendingClassTraverser(this).visitAttributes(methodInfo,code.getAttributes());
}

Fixed version (ground truth):
@Override public void visitCode(MethodInfo methodInfo,Code code){
  visitConstantUtf8(code.getNameIndex());
  InstructionList il=new InstructionList(code.getCode());
  visitInstructionList(il);
  il.dispose();
  for (  CodeException ce : code.getExceptionTable()) {
    if (ce.getCatchType() != 0) {
      visitConstantClass(ce.getCatchType());
    }
  }
  new DescendingClassTraverser(this).visitAttributes(methodInfo,code.getAttributes());
}
Program: 186845
Project: 186845
Buggy source:
@Override public void visitUnknown(MemberInfo memberInfo,Unknown obj,boolean isCodeAttribute){
  throw new JavaClassFormatError("String_Node_Str" + obj.getName() + "String_Node_Str"+ memberInfo+ "String_Node_Str");
}

Fixed version (ground truth):
@Override public void visitUnknown(MemberInfo memberInfo,Unknown obj,boolean isCodeAttribute){
  if ("String_Node_Str".equals(obj.getName())) {
    return;
  }
  throw new JavaClassFormatError("String_Node_Str" + obj.getName() + "String_Node_Str"+ memberInfo+ "String_Node_Str");
}
Program: 186846
Project: 186846
Buggy source:
public void updateMethodGen(MethodInfo methodInfo,MethodGen methodGen){
  methodGen.setConstantPool(newPool);
  if (!methodInfo.isAbstract()) {
    InstructionList il=methodInfo.getCode().getInstructionList();
class InstructionVisitor extends EmptyVisitor {
      @Override public void visitCPInstruction(      CPInstruction obj){
        obj.setIndex(mapIndex(obj.getIndex()));
      }
    }
    InstructionVisitor iv=new InstructionVisitor();
    for (    Instruction i : il.getInstructions()) {
      i.accept(iv);
    }
  }
  updateAttributes(methodInfo,methodGen.getAttributes());
  updateAttributes(methodInfo,methodGen.getCodeAttributes());
}

Fixed version (ground truth):
public void updateMethodGen(MethodInfo methodInfo,MethodGen methodGen){
  methodGen.setConstantPool(newPool);
  if (!methodInfo.isAbstract()) {
    InstructionList il=methodInfo.getCode().getInstructionList();
class InstructionVisitor extends EmptyVisitor {
      @Override public void visitCPInstruction(      CPInstruction obj){
        obj.setIndex(mapIndex(obj.getIndex()));
      }
    }
    InstructionVisitor iv=new InstructionVisitor();
    for (    InstructionHandle ih : il.getInstructionHandles()) {
      ih.getInstruction().accept(iv);
    }
  }
  updateAttributes(methodInfo,methodGen.getAttributes());
  updateAttributes(methodInfo,methodGen.getCodeAttributes());
}
Program: 186847
Project: 186847
Buggy source:
/** 
 * Get a set of all root methods, i.e. all root methods and all methods in all root classes.
 * @return a set of all root methods.
 */
public Collection<MethodInfo> getRootMethods(){
  Set<MethodInfo> methods=new HashSet<MethodInfo>();
  for (  MemberInfo root : roots) {
    if (root instanceof MethodInfo) {
      methods.add((MethodInfo)root);
    }
 else     if (root instanceof ClassInfo) {
      for (      MethodInfo m : ((ClassInfo)root).getMethods()) {
        methods.add(m);
      }
    }
 else {
      throw new AppInfoError("String_Node_Str" + root + "String_Node_Str");
    }
  }
  return methods;
}

Fixed version (ground truth):
/** 
 * Get a set of all root methods, i.e. all root methods and all methods in all root classes.
 * @return a set of all root methods.
 */
public Set<MethodInfo> getRootMethods(){
  Set<MethodInfo> methods=new HashSet<MethodInfo>();
  for (  MemberInfo root : roots) {
    addRootMethods(methods,root);
  }
  return methods;
}
Program: 186848
Project: 186848
Buggy source:
/** 
 * Build the callgraph. <p>NEW: now we also use callstrings to get a more precise call graph model</p>
 */
private void buildGraph(){
  callGraph.addGraphListener(new GraphUpdateListener());
  for (  ExecutionContext rootNode : rootNodes) {
    callGraph.addVertex(rootNode);
  }
  if (parent == null) {
    Stack<ExecutionContext> todo=new Stack<ExecutionContext>();
    for (    ExecutionContext rootNode : rootNodes) {
      todo.push(rootNode);
    }
    while (!todo.empty()) {
      ExecutionContext current=todo.pop();
      logger.debug("String_Node_Str" + current);
      Set<ExecutionContext> invoked=config.getInvokedMethods(current);
      for (      ExecutionContext cgn : invoked) {
        if (!callGraph.containsVertex(cgn)) {
          callGraph.addVertex(cgn);
          todo.push(cgn);
        }
        logger.debug("String_Node_Str" + cgn);
        callGraph.addEdge(current,cgn);
      }
    }
  }
 else {
    cloneReachableGraph(rootNodes);
  }
}

Fixed version (ground truth):
/** 
 * Build the callgraph. <p>NEW: now we also use callstrings to get a more precise call graph model</p>
 */
private void buildGraph(){
  callGraph.addGraphListener(new GraphUpdateListener());
  if (parent == null) {
    Stack<ExecutionContext> todo=new Stack<ExecutionContext>();
    for (    ExecutionContext rootNode : rootNodes) {
      callGraph.addVertex(rootNode);
      todo.push(rootNode);
    }
    while (!todo.empty()) {
      ExecutionContext current=todo.pop();
      logger.debug("String_Node_Str" + current);
      Set<ExecutionContext> invoked=config.getInvokedMethods(current);
      for (      ExecutionContext cgn : invoked) {
        if (!callGraph.containsVertex(cgn)) {
          callGraph.addVertex(cgn);
          todo.push(cgn);
        }
        logger.debug("String_Node_Str" + cgn);
        callGraph.addEdge(current,cgn);
      }
    }
  }
 else {
    cloneReachableGraph(rootNodes);
  }
}
Program: 186849
Project: 186849
Buggy source:
protected CallGraph(CallGraph parent,ExecutionContext rootNode,CallgraphConfig config){
  this(Collections.singleton(rootNode),config);
  this.parent=parent;
}

Fixed version (ground truth):
protected CallGraph(CallGraph parent,Collection<ExecutionContext> rootNodes,CallgraphConfig config){
  this(rootNodes,config);
  this.parent=parent;
}
Program: 186850
Project: 186850
Buggy source:
/** 
 * Build a callgraph with all root methods of AppInfo. This also adds all static initializers of all classes to the callgraph.
 * @see AppInfo#getRootMethods()
 * @param appInfo the AppInfo to use
 * @param config the config class to use to build this graph
 * @return a freshly constructed callgraph.
 */
public static CallGraph buildCallGraph(AppInfo appInfo,CallgraphConfig config){
  Collection<MethodInfo> rootMethods=appInfo.getRootMethods();
  Set<ExecutionContext> roots=new HashSet<ExecutionContext>(rootMethods.size());
  for (  MethodInfo m : rootMethods) {
    roots.add(new ExecutionContext(m));
  }
  for (  ClassInfo cls : appInfo.getClassInfos()) {
    MethodInfo clinit=cls.getMethodInfo(ClinitOrder.clinitSig);
    if (clinit != null) {
      roots.add(new ExecutionContext(clinit));
    }
  }
  CallGraph cg=new CallGraph(roots,config);
  cg.build();
  return cg;
}

Fixed version (ground truth):
/** 
 * Build a callgraph with all root methods of AppInfo. This also adds all static initializers of all classes to the callgraph.
 * @see AppInfo#getRootMethods()
 * @param appInfo the AppInfo to use
 * @param config the config class to use to build this graph
 * @return a freshly constructed callgraph.
 */
public static CallGraph buildCallGraph(AppInfo appInfo,CallgraphConfig config){
  Collection<MethodInfo> rootMethods=appInfo.getRootMethods();
  Set<ExecutionContext> roots=new HashSet<ExecutionContext>(rootMethods.size());
  for (  MethodInfo m : rootMethods) {
    roots.add(new ExecutionContext(m));
  }
  for (  MethodInfo m : appInfo.getClinitMethods()) {
    roots.add(new ExecutionContext(m));
  }
  CallGraph cg=new CallGraph(roots,config);
  cg.build();
  return cg;
}
Program: 186851
Project: 186851
Buggy source:
/** 
 * Export callgraph as .dot file
 * @param w Write the graph to this writer. To improve performance, to use a buffered writer.
 * @throws IOException if writing fails
 */
public void exportDOT(Writer w) throws IOException {
  new AdvancedDOTExporter<ExecutionContext,ContextEdge>().exportDOT(w,this.callGraph);
}

Fixed version (ground truth):
/** 
 * Export the callgraph as a .dot file.
 * @param w Write the graph to this writer. To improve performance, use a buffered writer.
 * @param skipIsolated if true, do not export isolated nodes.
 * @param skipNoImp if true, do not export roots with only one edge to com.jopdesign.sys.JVMHelp.noim().
 * @throws IOException if writing fails.
 */
public void exportDOT(Writer w,final boolean skipIsolated,final boolean skipNoImp) throws IOException {
  AdvancedDOTExporter<ExecutionContext,ContextEdge> exporter=new AdvancedDOTExporter<ExecutionContext,ContextEdge>();
  exporter.setGraphAttribute("String_Node_Str","String_Node_Str");
  DirectedGraph<ExecutionContext,ContextEdge> graph=callGraph;
  if (skipIsolated || skipNoImp) {
    graph=new DirectedMaskSubgraph<ExecutionContext,ContextEdge>(callGraph,new MaskFunctor<ExecutionContext,ContextEdge>(){
      @Override public boolean isEdgeMasked(      ContextEdge edge){
        return false;
      }
      @Override public boolean isVertexMasked(      ExecutionContext vertex){
        if (skipIsolated && callGraph.inDegreeOf(vertex) == 0 && callGraph.outDegreeOf(vertex) == 0) {
          return true;
        }
        if (skipNoImp && callGraph.inDegreeOf(vertex) == 0 && callGraph.outDegreeOf(vertex) == 1) {
          ExecutionContext target=callGraph.outgoingEdgesOf(vertex).iterator().next().getTarget();
          if ("String_Node_Str".equals(target.getMethodInfo().getClassName()) && "String_Node_Str".equals(target.getMethodInfo().getShortName())) {
            return true;
          }
        }
        return false;
      }
    }
);
  }
  exporter.exportDOT(w,graph);
}
Program: 186852
Project: 186852
Buggy source:
/** 
 * Get a subgraph starting at a given node which contains all reachable nodes and edges. The subgraph is backed by this graph, so any modifications to it will be reflected in the subgraph (but not the other way round!)
 * @param root root node of the graph.
 * @return a new subgraph, or an existing subgraph which starts at the same root
 */
public CallGraph getSubGraph(ExecutionContext root){
  CallGraph subGraph=subgraphs.get(root);
  if (subGraph != null) {
    subGraph=new CallGraph(this,root,config);
    subGraph.build();
    callGraph.addGraphListener(new SubgraphUpdateListener(subGraph));
    subgraphs.put(root,subGraph);
  }
  return subGraph;
}

Fixed version (ground truth):
/** 
 * Get a subgraph starting at a given node which contains all reachable nodes and edges. The subgraph is backed by this graph, so any modifications to it will be reflected in the subgraph (but not the other way round!)
 * @param roots root nodes of the new graph.
 * @return a new subgraph, or an existing subgraph which starts at the same root
 */
public CallGraph getSubGraph(Set<ExecutionContext> roots){
  for (  CallGraph subgraph : subgraphs.keySet()) {
    if (subgraph.getRootNodes().equals(roots)) {
      return subgraph;
    }
  }
  CallGraph subGraph=new CallGraph(this,roots,config);
  subGraph.build();
  SubgraphUpdateListener listener=new SubgraphUpdateListener(subGraph);
  callGraph.addGraphListener(listener);
  subgraphs.put(subGraph,listener);
  return subGraph;
}
Program: 186853
Project: 186853
Buggy source:
/** 
 * @param args
 */
public static void main(String[] args){
  OCache oc=new OCache();
  OCache oc2=new OCache();
  int i, j;
  com.jopdesign.io.SysDevice sys=com.jopdesign.io.IOFactory.getFactory().getSysDevice();
  sys.wd=1;
  s=15;
  oc.a=1;
  i=oc.a;
  j=oc.a;
  int ref=Native.toInt(oc);
  i=Native.getField(ref,0);
  i=oc.a;
  sys.wd=0;
  oc2.a=3;
  i=oc.a;
  i=oc2.a;
  j=oc.a;
  j=oc2.a;
  sys.wd=1;
  BenchLift bl=new BenchLift();
  sys.wd=0;
  bl.perform(10);
  sys.wd=1;
}

Fixed version (ground truth):
/** 
 * @param args
 */
public static void main(String[] args){
  OCache oc=new OCache();
  OCache oc2=new OCache();
  int i, j;
  com.jopdesign.io.SysDevice sys=com.jopdesign.io.IOFactory.getFactory().getSysDevice();
  sys.wd=1;
  Basic btest=new Basic();
  sys.wd=0;
  boolean result=btest.test();
  sys.wd=1;
  System.out.println(result);
}
Program: 186854
Project: 186854
Buggy source:
/** 
 * Helper to load a property file in the package of a given class.
 * @param rsClass the class for which the property file should be loaded.
 * @param filename the filename of the property file.
 * @param defaultProps default properties to use for the new properties.
 * @return the loaded property file.
 * @throws IOException on read errors.
 */
public static Properties loadResourceProps(Class rsClass,String filename,Properties defaultProps) throws IOException {
  Properties p=new Properties(defaultProps);
  InputStream is=rsClass.getResourceAsStream(filename);
  if (is == null) {
    throw new IOException("String_Node_Str" + filename + "String_Node_Str"+ rsClass.getCanonicalName()+ "String_Node_Str");
  }
  p.load(new BufferedInputStream(is));
  return p;
}

Fixed version (ground truth):
/** 
 * Helper to load a property file in the package of a given class.
 * @param rsClass the class for which the property file should be loaded.
 * @param filename the filename of the property file.
 * @param defaultProps default properties to use for the new properties.
 * @return the loaded property file.
 * @throws IOException on read errors.
 */
public static Properties loadResourceProps(Class rsClass,String filename,Properties defaultProps) throws IOException {
  Properties p=new Properties(defaultProps);
  InputStream is=rsClass.getResourceAsStream(filename);
  if (is == null) {
    throw new IOException("String_Node_Str" + filename + "String_Node_Str"+ rsClass.getCanonicalName()+ "String_Node_Str");
  }
  p.load(new BufferedInputStream(is));
  is.close();
  return p;
}
Program: 186857
Project: 186857
Buggy source:
/** 
 * Called by   {@link AppSetup#setupConfig(String[])} after the configuration has been loaded.The tool should use the config values from AppSetup to check the configuration, load its options and initialize the tool.
 * @param setup the AppSetup used to initialize this app
 * @throws Config.BadConfigurationException if there is something rotten in the config orif the tool cannot be initialized
 */
void onSetupConfig(AppSetup setup) throws Config.BadConfigurationException ;

Fixed version (ground truth):
/** 
 * Called by   {@link AppSetup#setupConfig(String[])} after the configuration has been loaded.The tool should use the config values from AppSetup to check the configuration, load its options and initialize the tool. <p> Note that AppInfo is not yet initialized, accessing it here will give you errors. See {@link #onSetupAppInfo(AppSetup,AppInfo)} if you want to look up classes, methods,...</p>
 * @param setup the AppSetup used to initialize this tool
 * @throws Config.BadConfigurationException if there is something rotten in the config orif the tool cannot be initialized
 */
void onSetupConfig(AppSetup setup) throws Config.BadConfigurationException ;
Program: 186858
Project: 186858
Buggy source:
/** 
 * Get the line number of the instruction. If instruction handle attributes are not used, the positions of the instruction handles must be uptodate.
 * @see #getSourceFileName(InstructionHandle)
 * @param ih the instruction to check.
 * @return the line number of the instruction, or 0 if unknown.
 */
public int getLineNumber(InstructionHandle ih){
  if (ilTablesLoaded) {
    return (Integer)ih.getAttribute(KEY_LINENUMBER);
  }
 else {
    return getLineNumberTable().getSourceLine(ih.getPosition());
  }
}

Fixed version (ground truth):
/** 
 * Get the line number of the instruction. If instruction handle attributes are not used, the positions of the instruction handles must be uptodate.
 * @see #getSourceFileName(InstructionHandle)
 * @param ih the instruction to check.
 * @return the line number of the instruction, or 0 if unknown.
 */
public int getLineNumber(InstructionHandle ih){
  if (ilTablesLoaded) {
    Object attribute=ih.getAttribute(KEY_LINENUMBER);
    return attribute != null ? (Integer)attribute : 0;
  }
 else {
    return getLineNumberTable().getSourceLine(ih.getPosition());
  }
}
Program: 186859
Project: 186859
Buggy source:
public KeyManager(){
  appInfo=AppInfo.getSingleton();
  registeredKeys=new HashMap<String,CustomKey>();
  maxStructKeyID=0;
}

Fixed version (ground truth):
private KeyManager(){
  registeredKeys=new HashMap<String,CustomKey>();
  maxStructKeyID=0;
}
Program: 186860
Project: 186860
Buggy source:
protected int parseOption(String[] args,String key,int pos) throws BadConfigurationException {
  Option spec=getOptionSpec(key);
  if (spec != null) {
    String val=null;
    if (pos + 1 < args.length) {
      if (spec.isValue(args[pos + 1])) {
        val=args[pos + 1];
      }
    }
    int i=pos;
    if (spec instanceof BooleanOption && val == null) {
      val="String_Node_Str";
    }
 else     if (val == null) {
      throw new Config.BadConfigurationException("String_Node_Str" + spec);
    }
 else {
      i++;
    }
    config.setProperty(getConfigKey(spec),val);
    return i;
  }
  if (key.startsWith("String_Node_Str")) {
    spec=getOptionSpec(key.substring(3));
    if (spec != null && spec instanceof BooleanOption) {
      config.setProperty(getConfigKey(spec),"String_Node_Str");
    }
  }
 else {
    int j=key.indexOf('.');
    OptionGroup group=subGroups.get(key.substring(0,j));
    if (group != null) {
      return group.parseOption(args,key.substring(j + 1),pos);
    }
  }
  if (spec == null) {
    throw new Config.BadConfigurationException("String_Node_Str" + key);
  }
  return pos;
}

Fixed version (ground truth):
protected int parseOption(String[] args,String key,int pos) throws BadConfigurationException {
  Option<?> spec=getOptionSpec(key);
  if (spec != null) {
    String val=null;
    if (pos + 1 < args.length) {
      if (spec.isValue(args[pos + 1])) {
        val=args[pos + 1];
      }
    }
    int i=pos;
    if (spec instanceof BooleanOption && val == null) {
      val="String_Node_Str";
    }
 else     if (val == null) {
      throw new Config.BadConfigurationException("String_Node_Str" + spec);
    }
 else {
      i++;
    }
    config.setProperty(getConfigKey(spec),val);
    return i;
  }
  if (key.startsWith("String_Node_Str")) {
    spec=getOptionSpec(key.substring(3));
    if (spec != null && spec instanceof BooleanOption) {
      config.setProperty(getConfigKey(spec),"String_Node_Str");
    }
  }
 else   if (key.contains("String_Node_Str")) {
    int j=key.indexOf('.');
    OptionGroup group=subGroups.get(key.substring(0,j));
    if (group != null) {
      return group.parseOption(args,key.substring(j + 1),pos);
    }
  }
  if (spec == null) {
    throw new Config.BadConfigurationException("String_Node_Str" + key);
  }
  return pos;
}
Program: 186862
Project: 186862
Buggy source:
public boolean doWriteReport(){
  return projectConfig.getReportDir() != null;
}

Fixed version (ground truth):
public boolean doWriteReport(){
  return genWCETReport;
}
Program: 186863
Project: 186863
Buggy source:
private MethodInfo getMainMethod(String signature) throws Config.BadConfigurationException {
  Signature sMain;
  sMain=Signature.parse(signature);
  String clsName=sMain.getClassName();
  if (clsName == null) {
    throw new Config.BadConfigurationException("String_Node_Str");
  }
  ClassInfo clsInfo=appInfo.loadClass(clsName);
  if (clsInfo == null) {
    throw new Config.BadConfigurationException("String_Node_Str" + clsName + "String_Node_Str");
  }
  if (sMain.isMethodSignature()) {
    MethodInfo method=clsInfo.getMethodInfo(sMain.getMemberSignature());
    if (method == null) {
      throw new Config.BadConfigurationException("String_Node_Str" + sMain.getMemberSignature() + "String_Node_Str"+ clsName+ "String_Node_Str");
    }
    return method;
  }
  String mainName=sMain.getMemberName();
  if (mainName == null) {
    mainName=config.getOption(Config.MAIN_METHOD_NAME);
  }
  Collection<MethodInfo> methods=clsInfo.getMethodByName(mainName);
  if (methods.isEmpty()) {
    throw new Config.BadConfigurationException("String_Node_Str" + mainName + "String_Node_Str"+ clsName+ "String_Node_Str");
  }
  if (methods.size() > 1) {
    StringBuffer s=new StringBuffer(String.format("String_Node_Str",mainName,clsName));
    for (    MethodInfo m : methods) {
      s.append("String_Node_Str");
      s.append(m.getSignature());
    }
    throw new Config.BadConfigurationException(s.toString());
  }
  return methods.iterator().next();
}

Fixed version (ground truth):
private MethodInfo getMainMethod(String signature) throws Config.BadConfigurationException {
  Signature sMain;
  sMain=Signature.parse(signature,true);
  String clsName=sMain.getClassName();
  if (clsName == null) {
    throw new Config.BadConfigurationException("String_Node_Str");
  }
  ClassInfo clsInfo=appInfo.loadClass(clsName);
  if (clsInfo == null) {
    throw new Config.BadConfigurationException("String_Node_Str" + clsName + "String_Node_Str");
  }
  if (sMain.isMethodSignature()) {
    MethodInfo method=clsInfo.getMethodInfo(sMain.getMemberSignature());
    if (method == null) {
      throw new Config.BadConfigurationException("String_Node_Str" + sMain.getMemberSignature() + "String_Node_Str"+ clsName+ "String_Node_Str");
    }
    return method;
  }
  String mainName=sMain.getMemberName();
  if (mainName == null) {
    mainName=config.getOption(Config.MAIN_METHOD_NAME);
  }
  Collection<MethodInfo> methods=clsInfo.getMethodByName(mainName);
  if (methods.isEmpty()) {
    throw new Config.BadConfigurationException("String_Node_Str" + mainName + "String_Node_Str"+ clsName+ "String_Node_Str");
  }
  if (methods.size() > 1) {
    StringBuffer s=new StringBuffer(String.format("String_Node_Str",mainName,clsName));
    for (    MethodInfo m : methods) {
      s.append("String_Node_Str");
      s.append(m.getSignature());
    }
    throw new Config.BadConfigurationException(s.toString());
  }
  return methods.iterator().next();
}
Program: 186865
Project: 186865
Buggy source:
public void printSizeResult(DFATool program){
  for (  InstructionHandle instr : sizes.keySet()) {
    ContextMap<CallString,Interval[]> r=sizes.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Interval[] bounds=r.get(callString);
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str");
      System.out.println(Arrays.asList(bounds));
    }
  }
}

Fixed version (ground truth):
public void printSizeResult(DFATool program){
  for (  InstructionHandle instr : sizes.keySet()) {
    ContextMap<CallString,Interval[]> r=sizes.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=c.method.getMethodInfo().getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Interval[] bounds=r.get(callString);
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str");
      System.out.println(Arrays.asList(bounds));
    }
  }
}
Program: 186866
Project: 186866
Buggy source:
public void printResult(DFATool program){
  for (  InstructionHandle instr : bounds.keySet()) {
    ContextMap<CallString,Pair<ValueMapping,ValueMapping>> r=bounds.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Pair<ValueMapping,ValueMapping> bounds=r.get(callString);
      ValueMapping first=bounds.first();
      ValueMapping second=bounds.second();
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str"+ scopes.get(instr)+ "String_Node_Str");
      System.out.print("String_Node_Str");
      System.out.println(first);
      System.out.print("String_Node_Str");
      System.out.println(second);
      System.out.print("String_Node_Str");
      int val=getBound(program,instr);
      if (val >= 0) {
        System.out.println(val);
      }
 else {
        System.out.println("String_Node_Str");
      }
    }
  }
}

Fixed version (ground truth):
public void printResult(DFATool program){
  for (  InstructionHandle instr : bounds.keySet()) {
    ContextMap<CallString,Pair<ValueMapping,ValueMapping>> r=bounds.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=c.method.getMethodInfo().getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Pair<ValueMapping,ValueMapping> bounds=r.get(callString);
      ValueMapping first=bounds.first();
      ValueMapping second=bounds.second();
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str"+ scopes.get(instr)+ "String_Node_Str");
      System.out.print("String_Node_Str");
      System.out.println(first);
      System.out.print("String_Node_Str");
      System.out.println(second);
      System.out.print("String_Node_Str");
      int val=getBound(program,instr);
      if (val >= 0) {
        System.out.println(val);
      }
 else {
        System.out.println("String_Node_Str");
      }
    }
  }
}
Program: 186871
Project: 186871
Buggy source:
public LocalPointsToResult getUsedRefs(ExecutionContext scope){
  ExecuteOnceAnalysis eoAna=new ExecuteOnceAnalysis(project);
  DFATool dfa=project.getDfaProgram();
  SymbolicPointsTo spt=new SymbolicPointsTo(maxSetSize,(int)project.getProjectConfig().callstringLength(),new ExecOnceQuery(eoAna,scope));
  dfa.runLocalAnalysis(spt,scope.getMethodInfo().getFQMethodName());
  LocalPointsToResult lpt=new LocalPointsToResult(spt.getResult());
  return lpt;
}

Fixed version (ground truth):
public LocalPointsToResult getUsedRefs(ExecutionContext scope){
  ExecuteOnceAnalysis eoAna=new ExecuteOnceAnalysis(project);
  DFATool dfa=project.getDfaProgram();
  SymbolicPointsTo spt=new SymbolicPointsTo(maxSetSize,(int)project.getProjectConfig().callstringLength(),new ExecOnceQuery(eoAna,scope));
  dfa.runLocalAnalysis(spt,scope.getMethodInfo());
  LocalPointsToResult lpt=new LocalPointsToResult(spt.getResult());
  return lpt;
}
Program: 186872
Project: 186872
Buggy source:
protected StringBuilder initNumBlocks(){
  Vector<Integer> blocksPerMethod=new Vector<Integer>();
  for (int i=0; i < numMethods; i++) {
    int mBlocks=blocksOf(i);
    if (mBlocks > numBlocks()) {
      throw new AssertionError("String_Node_Str" + project.getAppInfo().getFlowGraph(i) + "String_Node_Str"+ mBlocks+ "String_Node_Str"+ numBlocks()+ "String_Node_Str");
    }
    blocksPerMethod.add(mBlocks);
  }
  return SystemBuilder.constArray(blocksPerMethod);
}

Fixed version (ground truth):
protected StringBuilder initNumBlocks(){
  List<Integer> blocksPerMethod=new ArrayList<Integer>();
  for (int i=0; i < numMethods; i++) {
    int mBlocks=blocksOf(i);
    if (mBlocks > numBlocks()) {
      throw new AssertionError("String_Node_Str" + project.getAppInfo().getFlowGraph(i) + "String_Node_Str"+ mBlocks+ "String_Node_Str"+ numBlocks()+ "String_Node_Str");
    }
    blocksPerMethod.add(mBlocks);
  }
  return SystemBuilder.constArray(blocksPerMethod);
}
Program: 186873
Project: 186873
Buggy source:
public static void main(String[] args){
  testSig("String_Node_Str",false);
  testSig("String_Node_Str",true);
  testSig("String_Node_Str",false);
}

Fixed version (ground truth):
public static void main(String[] args){
  testSig("String_Node_Str",false);
  testSig("String_Node_Str",true);
  testSig("String_Node_Str",false);
  testSig("String_Node_Str",true);
}
Program: 186874
Project: 186874
Buggy source:
public abstract String getMemberSignature();

Fixed version (ground truth):
/** 
 * Get the signature of this member (i.e. its simple name and its descriptor for methods).
 * @return the signature of this member without the class part.
 */
public abstract String getMemberSignature();
Program: 186875
Project: 186875
Buggy source:
public abstract Signature getSignature();

Fixed version (ground truth):
/** 
 * Get the signature object which identifies this member.
 * @return a fully qualified signature of this member.
 */
public abstract Signature getSignature();
Program: 186878
Project: 186878
Buggy source:
public void printSizeResult(DFAAppInfo program){
  for (  InstructionHandle instr : sizes.keySet()) {
    ContextMap<CallString,Interval[]> r=sizes.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getMethod().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Interval[] bounds=r.get(callString);
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.asList()+ "String_Node_Str");
      System.out.println(Arrays.asList(bounds));
    }
  }
}

Fixed version (ground truth):
public void printSizeResult(DFAAppInfo program){
  for (  InstructionHandle instr : sizes.keySet()) {
    ContextMap<CallString,Interval[]> r=sizes.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Interval[] bounds=r.get(callString);
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str");
      System.out.println(Arrays.asList(bounds));
    }
  }
}
Program: 186879
Project: 186879
Buggy source:
public void printResult(DFAAppInfo program){
  for (  InstructionHandle instr : bounds.keySet()) {
    ContextMap<CallString,Pair<ValueMapping,ValueMapping>> r=bounds.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getMethod().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Pair<ValueMapping,ValueMapping> bounds=r.get(callString);
      ValueMapping first=bounds.first();
      ValueMapping second=bounds.second();
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.asList()+ "String_Node_Str"+ scopes.get(instr)+ "String_Node_Str");
      System.out.print("String_Node_Str");
      System.out.println(first);
      System.out.print("String_Node_Str");
      System.out.println(second);
      System.out.print("String_Node_Str");
      int val=getBound(program,instr);
      if (val >= 0) {
        System.out.println(val);
      }
 else {
        System.out.println("String_Node_Str");
      }
    }
  }
}

Fixed version (ground truth):
public void printResult(DFAAppInfo program){
  for (  InstructionHandle instr : bounds.keySet()) {
    ContextMap<CallString,Pair<ValueMapping,ValueMapping>> r=bounds.get(instr);
    Context c=r.getContext();
    LineNumberTable lines=program.getMethod(c.method).getCode().getLineNumberTable();
    int sourceLine=lines.getSourceLine(instr.getPosition());
    for (    CallString callString : r.keySet()) {
      Pair<ValueMapping,ValueMapping> bounds=r.get(callString);
      ValueMapping first=bounds.first();
      ValueMapping second=bounds.second();
      System.out.println(c.method + "String_Node_Str" + sourceLine+ "String_Node_Str"+ callString.toStringList()+ "String_Node_Str"+ scopes.get(instr)+ "String_Node_Str");
      System.out.print("String_Node_Str");
      System.out.println(first);
      System.out.print("String_Node_Str");
      System.out.println(second);
      System.out.print("String_Node_Str");
      int val=getBound(program,instr);
      if (val >= 0) {
        System.out.println(val);
      }
 else {
        System.out.println("String_Node_Str");
      }
    }
  }
}
Program: 186882
Project: 186882
Buggy source:
/** 
 * Get infeasible edges for certain call string
 * @return The infeasible edges
 */
public List<CFGEdge> getInfeasibleEdges(CallString cs){
  List<CFGEdge> edges=new Vector<CFGEdge>();
  for (  BasicBlock b : blocks) {
    List<CFGEdge> edge=dfaInfeasibleEdge(b,cs);
    edges.addAll(edge);
  }
  return edges;
}

Fixed version (ground truth):
/** 
 * Get infeasible edges for certain call string
 * @return The infeasible edges
 */
public List<CFGEdge> getInfeasibleEdges(CallString cs){
  List<CFGEdge> edges=new ArrayList<CFGEdge>();
  return edges;
}
Program: 186883
Project: 186883
Buggy source:
/** 
 * Get improved loopbound considering the callcontext 
 */
public LoopBound getLoopBound(CFGNode hol,CallString cs){
  LoopBound globalBound=this.annotations.get(hol);
  return this.dfaLoopBound(hol.getBasicBlock(),cs,globalBound);
}

Fixed version (ground truth):
/** 
 * Get improved loopbound considering the callcontext 
 */
public LoopBound getLoopBound(CFGNode hol,CallString cs){
  LoopBound globalBound=this.annotations.get(hol);
  return globalBound;
}
Program: 186884
Project: 186884
Buggy source:
public void exportDOT(File file,Map<CFGNode,?> nodeAnnotations,Map<CFGEdge,?> edgeAnnotations){
  CFGExport export=new CFGExport(this,nodeAnnotations,edgeAnnotations);
  try {
    FileWriter w=new FileWriter(file);
    export.exportDOT(w,graph);
    w.close();
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
public void exportDOT(File file,Map<CFGNode,?> nodeAnnotations,Map<CFGEdge,?> edgeAnnotations) throws IOException {
  CFGExport export=new CFGExport(this,nodeAnnotations,edgeAnnotations);
  FileWriter w=new FileWriter(file);
  export.exportDOT(w,graph);
  w.close();
}
Program: 186885
Project: 186885
Buggy source:
public String getGraph(){
  if (graphLink == null) {
    File graphfile=generateGraph(method,key,nodeAnnotations,edgeAnnotations);
    graphLink=graphfile.getName();
  }
  return graphLink;
}

Fixed version (ground truth):
public String getGraph(){
  if (graphLink == null) {
    File graphfile;
    try {
      graphfile=generateGraph(method,key,nodeAnnotations,edgeAnnotations);
      graphLink=graphfile.getName();
    }
 catch (    IOException e) {
      logger.error("String_Node_Str" + method,e);
    }
  }
  return graphLink;
}
Program: 186886
Project: 186886
Buggy source:
private File generateGraph(MethodInfo method,String key,Map<CFGNode,?> nodeAnnotations,Map<ControlFlowGraph.CFGEdge,?> edgeAnnotations){
  File cgdot=config.getOutFile(method,key + "String_Node_Str");
  File cgimg=config.getOutFile(method,key + "String_Node_Str");
  ControlFlowGraph flowGraph=method.getCode().getControlFlowGraph();
  flowGraph.exportDOT(cgdot,nodeAnnotations,edgeAnnotations);
  project.getReport().recordDot(cgdot,cgimg);
  return cgimg;
}

Fixed version (ground truth):
private File generateGraph(MethodInfo method,String key,Map<CFGNode,?> nodeAnnotations,Map<ControlFlowGraph.CFGEdge,?> edgeAnnotations) throws IOException {
  File cgdot=config.getOutFile(method,key + "String_Node_Str");
  File cgimg=config.getOutFile(method,key + "String_Node_Str");
  ControlFlowGraph flowGraph=method.getCode().getControlFlowGraph();
  if (nodeAnnotations != null || edgeAnnotations != null) {
    flowGraph.exportDOT(cgdot,nodeAnnotations,edgeAnnotations);
  }
 else {
    flowGraph.exportDOT(cgdot,new WCETNodeLabeller(project),null);
  }
  project.getReport().recordDot(cgdot,cgimg);
  return cgimg;
}
Program: 186887
Project: 186887
Buggy source:
/** 
 * Rebuild the constantpool and remove all entries marked for removal by   {@link #removeConstant(int)}as well as all duplicate entries. <p>This also updates the indices of all references in the code of all methods of this class, therefore do not call this method while modifying the code.</p>
 * @see #removeConstant(int)
 * @return true if the constantpool has been changed
 */
public boolean cleanupConstantPool(){
  ConstantPoolGen newPool=new ConstantPoolGen();
  int[] idxMap=new int[cpg.getSize()];
  boolean changed=false;
  for (int i=0; i < idxMap.length; i++) {
    if (removeIndices.contains(i)) {
      idxMap[i]=-1;
      changed=true;
      continue;
    }
    idxMap[i]=newPool.addConstant(cpg.getConstant(i),cpg);
    if (idxMap[i] != i) {
      changed=true;
    }
  }
  if (!changed) {
    return false;
  }
  classGen.setConstantPool(newPool);
  return true;
}

Fixed version (ground truth):
/** 
 * Rebuild the constantpool and remove all entries marked for removal by   {@link #removeConstant(int)}as well as all duplicate entries. <p>This also updates the indices of all references in the code of all methods of this class, therefore do not call this method while modifying the code.</p>
 * @see #removeConstant(int)
 * @return true if the constantpool has been changed
 */
public boolean cleanupConstantPool(){
  if (removeIndices.isEmpty()) {
    return false;
  }
  ConstantPoolGen newPool=new ConstantPoolGen();
  int[] idxMap=new int[cpg.getSize()];
  for (int i=0; i < idxMap.length; i++) {
    if (removeIndices.contains(i)) {
      idxMap[i]=-1;
      continue;
    }
    Constant c=cpg.getConstant(i);
    if (c == null) {
      continue;
    }
    idxMap[i]=newPool.addConstant(c,cpg);
  }
  classGen.setConstantPool(newPool);
  return true;
}
Program: 186888
Project: 186888
Buggy source:
/** 
 * Setup the logger. You may want to call   {@link #setupConfig(String[])} first toload commandline options.
 * @see LogConfig#setupLogger(Config)
 */
public void setupLogger(){
  logConfig.setupLogger(config);
}

Fixed version (ground truth):
/** 
 * Setup the logger. You may want to call   {@link #setupConfig(String[])} first toload commandline options.
 * @see LogConfig#setupLogger(Config)
 * @param addReportLoggers if true, add html-report loggers writing to {@link Config#WRITE_PATH}.
 */
public void setupLogger(boolean addReportLoggers){
  logConfig.setupLogger(config);
  if (addReportLoggers) {
    String outDir=config.getOption(Config.WRITE_PATH) + File.separator;
    try {
      logConfig.setReportLoggers(new File(outDir + "String_Node_Str"),new File(outDir + "String_Node_Str"));
    }
 catch (    IOException e) {
      System.err.println("String_Node_Str" + e.getMessage());
      System.exit(4);
    }
  }
}
Program: 186889
Project: 186889
Buggy source:
/** 
 * Setup the logger using configuration options. You may want to call   {@link #setReportLoggers(File,File)}first to define the report loggers.
 * @param config the config settings to use.
 */
public void setupLogger(Config config){
  boolean verbose=config.getOption(Config.VERBOSE);
  boolean debug=config.getOption(Config.DEBUG);
  boolean quiet=config.getOption(Config.QUIET);
  ConsoleAppender defaultAppender;
  if (verbose) {
    defaultAppender=new ConsoleAppender(new PatternLayout("String_Node_Str"),"String_Node_Str");
  }
 else {
    defaultAppender=new ConsoleAppender(new ConsoleLayout("String_Node_Str"),"String_Node_Str");
  }
  defaultAppender.setName("String_Node_Str");
  Level defaultLevel=Level.INFO;
  if (debug) {
    defaultLevel=Level.DEBUG;
  }
 else   if (quiet) {
    defaultLevel=Level.WARN;
  }
  defaultAppender.setThreshold(defaultLevel);
  Logger.getRootLogger().addAppender(defaultAppender);
  Logger.getRootLogger().setLevel(defaultLevel);
  PropertyConfigurator.configure(config.getProperties());
}

Fixed version (ground truth):
/** 
 * Setup the logger using configuration options. You may want to call   {@link #setReportLoggers(File,File)}first to define the report loggers.
 * @param config the config settings to use.
 */
public void setupLogger(Config config){
  boolean verbose=config.getOption(Config.VERBOSE);
  boolean debug=config.getOption(Config.DEBUG);
  boolean quiet=config.getOption(Config.QUIET);
  ConsoleAppender defaultAppender;
  if (verbose) {
    defaultAppender=new ConsoleAppender(new PatternLayout("String_Node_Str"),"String_Node_Str");
  }
 else {
    defaultAppender=new ConsoleAppender(new ConsoleLayout("String_Node_Str"),"String_Node_Str");
  }
  defaultAppender.setName("String_Node_Str");
  Level defaultLevel=Level.INFO;
  if (debug) {
    defaultLevel=Level.DEBUG;
  }
 else   if (quiet) {
    defaultLevel=Level.WARN;
  }
  defaultAppender.setThreshold(defaultLevel);
  Logger.getRootLogger().addAppender(defaultAppender);
  Logger.getRootLogger().setLevel(Level.ALL);
  PropertyConfigurator.configure(config.getProperties());
}
Program: 186890
Project: 186890
Buggy source:
private void processQueue(){
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str");
  }
  while (!queue.isEmpty()) {
    ClassInfo next=queue.remove(0);
    if (logger.isTraceEnabled()) {
      logger.trace("String_Node_Str" + next.getClassName());
    }
    int found=processClass(next);
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str" + found + "String_Node_Str"+ next.getClassName());
    }
  }
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str" + newClasses.size() + "String_Node_Str");
  }
}

Fixed version (ground truth):
private void processQueue(){
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str");
  }
  while (!queue.isEmpty()) {
    ClassInfo next=queue.remove(0);
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str" + next.getClassName());
    }
    int found=processClass(next);
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str" + found + "String_Node_Str"+ next.getClassName());
    }
  }
  if (logger.isInfoEnabled()) {
    logger.info("String_Node_Str" + newClasses.size() + "String_Node_Str");
  }
}
Program: 186891
Project: 186891
Buggy source:
public static void main(String[] args){
  ExampleTool example=new ExampleTool();
  Properties defaults=null;
  try {
    defaults=AppSetup.loadResourceProps(ExampleTool.class,"String_Node_Str");
  }
 catch (  IOException e) {
    System.out.println("String_Node_Str" + e.getMessage());
    System.exit(1);
  }
  AppSetup setup=new AppSetup(defaults,true);
  setup.setUsageInfo("String_Node_Str","String_Node_Str");
  setup.setVersionInfo("String_Node_Str");
  setup.addStandardOptions(true,true);
  setup.addWriteOptions(true);
  setup.registerModule("String_Node_Str",example);
  String[] rest=setup.setupConfig(args,"String_Node_Str");
  setup.setupLogger();
  setup.setupAppInfo(rest,true);
  setup.writeClasses();
}

Fixed version (ground truth):
public static void main(String[] args){
  ExampleTool example=new ExampleTool();
  Properties defaults=null;
  try {
    defaults=AppSetup.loadResourceProps(ExampleTool.class,"String_Node_Str");
  }
 catch (  IOException e) {
    System.out.println("String_Node_Str" + e.getMessage());
    System.exit(1);
  }
  AppSetup setup=new AppSetup(defaults,true);
  setup.setUsageInfo("String_Node_Str","String_Node_Str");
  setup.setVersionInfo("String_Node_Str");
  setup.addStandardOptions(true,true);
  setup.addWriteOptions(true);
  setup.registerModule("String_Node_Str",example);
  String[] rest=setup.setupConfig(args,"String_Node_Str");
  setup.setupLogger(false);
  setup.setupAppInfo(rest,true);
  setup.writeClasses();
}
Program: 186892
Project: 186892
Buggy source:
public static void main(String[] args){
  JCopter jcopter=new JCopter();
  AppSetup setup=new AppSetup(true);
  setup.setUsageInfo("String_Node_Str","String_Node_Str");
  setup.addStandardOptions(true,true);
  setup.addPackageOptions(true);
  setup.addWriteOptions(true);
  setup.registerModule("String_Node_Str",jcopter);
  String[] rest=setup.setupConfig(args,"String_Node_Str");
  setup.setupLogger();
  setup.setupAppInfo(rest,true);
  jcopter.run(setup);
  setup.writeClasses();
}

Fixed version (ground truth):
public static void main(String[] args){
  JCopter jcopter=new JCopter();
  AppSetup setup=new AppSetup(true);
  setup.setUsageInfo("String_Node_Str","String_Node_Str");
  setup.addStandardOptions(true,true);
  setup.addPackageOptions(true);
  setup.addWriteOptions(true);
  setup.registerModule("String_Node_Str",jcopter);
  String[] rest=setup.setupConfig(args,"String_Node_Str");
  setup.setupLogger(true);
  setup.setupAppInfo(rest,true);
  jcopter.run(setup);
  setup.writeClasses();
}