Program: 187045
Project: 187045
Buggy source:
private void buildPrologue(String mainClass,List<InstructionHandle> statements,Flow flow,List<String> clinits){
  InstructionList prologue=new InstructionList();
  ConstantPoolGen prologueCP=new ConstantPoolGen();
  Instruction instr;
  int idx;
  instr=new ICONST(0);
  prologue.append(instr);
  instr=new ICONST(0);
  prologue.append(instr);
  idx=prologueCP.addMethodref("String_Node_Str","String_Node_Str","String_Node_Str");
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  idx=prologueCP.addMethodref("String_Node_Str","String_Node_Str","String_Node_Str");
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  for (Iterator<String> i=clinits.iterator(); i.hasNext(); ) {
    String clinit=i.next();
    String className=clinit.substring(0,clinit.lastIndexOf("String_Node_Str"));
    idx=prologueCP.addMethodref(className,clinitName,clinitSig);
    instr=new INVOKESPECIAL(idx);
    prologue.append(instr);
  }
  instr=new ACONST_NULL();
  prologue.append(instr);
  idx=prologueCP.addMethodref(mainClass,mainName,mainSig);
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  instr=new NOP();
  prologue.append(instr);
  prologue.setPositions(true);
  for (Iterator l=prologue.iterator(); l.hasNext(); ) {
    InstructionHandle handle=(InstructionHandle)l.next();
    statements.add(handle);
    if (handle.getNext() != null) {
      flow.addEdge(new FlowEdge(handle,handle.getNext(),FlowEdge.NORMAL_EDGE));
    }
  }
  MethodGen mg=new MethodGen(Constants.ACC_PRIVATE,Type.VOID,Type.NO_ARGS,null,mainClass + "String_Node_Str" + prologueName+ prologueSig,"String_Node_Str",prologue,prologueCP);
  MethodInfo mi=new MethodInfo(cliMap.get(mainClass),prologueName + prologueSig);
  mi.setMethodGen(mg);
  cliMap.get(mainClass).getMethodInfoMap().put(prologueName + prologueSig,mi);
}

Fixed version (ground truth):
private void buildPrologue(String mainClass,List<InstructionHandle> statements,Flow flow,List<String> clinits){
  InstructionList prologue=new InstructionList();
  ConstantPoolGen prologueCP=new ConstantPoolGen();
  Instruction instr;
  int idx;
  instr=new ICONST(0);
  prologue.append(instr);
  instr=new ICONST(0);
  prologue.append(instr);
  idx=prologueCP.addMethodref("String_Node_Str","String_Node_Str","String_Node_Str");
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  idx=prologueCP.addMethodref("String_Node_Str","String_Node_Str","String_Node_Str");
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  for (Iterator<String> i=clinits.iterator(); i.hasNext(); ) {
    String clinit=i.next();
    String className=clinit.substring(0,clinit.lastIndexOf("String_Node_Str"));
    idx=prologueCP.addMethodref(className,clinitName,clinitSig);
    instr=new INVOKESTATIC(idx);
    prologue.append(instr);
  }
  instr=new ACONST_NULL();
  prologue.append(instr);
  idx=prologueCP.addMethodref(mainClass,mainName,mainSig);
  instr=new INVOKESTATIC(idx);
  prologue.append(instr);
  instr=new NOP();
  prologue.append(instr);
  prologue.setPositions(true);
  for (Iterator l=prologue.iterator(); l.hasNext(); ) {
    InstructionHandle handle=(InstructionHandle)l.next();
    statements.add(handle);
    if (handle.getNext() != null) {
      flow.addEdge(new FlowEdge(handle,handle.getNext(),FlowEdge.NORMAL_EDGE));
    }
  }
  MethodGen mg=new MethodGen(Constants.ACC_PRIVATE,Type.VOID,Type.NO_ARGS,null,mainClass + "String_Node_Str" + prologueName+ prologueSig,"String_Node_Str",prologue,prologueCP);
  MethodInfo mi=new MethodInfo(cliMap.get(mainClass),prologueName + prologueSig);
  mi.setMethodGen(mg);
  cliMap.get(mainClass).getMethodInfoMap().put(prologueName + prologueSig,mi);
}