Program: 187003
Project: 187003
Buggy source:
/** 
 * <p>Compact, human-readable String representation of the basic block.</p> <p>Mixed Stack notation, with at most one side-effect statement per line.</p>  Example:<br/>  {@code local_0 <- sipush[3] sipush[4] dup add add} <br/>{@code local_1 <- load[local_0] load[local_0] mul}
 */
public String dump(){
  StringBuilder sb=new StringBuilder();
  LineNumberTable lnt=methodInfo.getMethod().getLineNumberTable();
  ConstantPoolGen cpg=methodInfo.getConstantPoolGen();
  Iterator<InstructionHandle> ihIter=this.instructions.iterator();
  StringBuilder lineBuilder=new StringBuilder();
  InstructionHandle first=null;
  while (ihIter.hasNext()) {
    InstructionHandle ih=ihIter.next();
    String line=null;
    if (first == null) {
      first=ih;
    }
 else {
      lineBuilder.append("String_Node_Str");
    }
    Instruction ii=ih.getInstruction();
    if (ii instanceof ReturnInstruction) {
      line=ii.getName() + "String_Node_Str" + lineBuilder.toString();
    }
 else     if (ii instanceof StoreInstruction) {
      line="String_Node_Str" + ((StoreInstruction)ii).getIndex() + "String_Node_Str"+ lineBuilder.toString();
    }
 else     if (ii instanceof FieldInstruction && ii.getName().startsWith("String_Node_Str")) {
      line="String_Node_Str" + ((FieldInstruction)ii).getFieldName(cpg) + "String_Node_Str"+ lineBuilder.toString();
    }
 else {
      lineBuilder.append(ii.getName());
    }
    if (!ihIter.hasNext()) {
      line=lineBuilder.toString();
    }
    if (line != null) {
      int l1=lnt.getSourceLine(first.getPosition());
      int l2=lnt.getSourceLine(ih.getPosition());
      if (l1 != l2)       sb.append("String_Node_Str" + l1 + "String_Node_Str"+ l2+ "String_Node_Str");
 else       sb.append("String_Node_Str" + l1 + "String_Node_Str");
      sb.append(line + "String_Node_Str");
      first=null;
      lineBuilder=new StringBuilder();
    }
  }
  return sb.toString();
}

Fixed version (ground truth):
/** 
 * <p>Compact, human-readable String representation of the basic block.</p> <p>Mixed Stack notation, with at most one side-effect statement per line.</p>  Example:<br/>  {@code local_0 <- sipush[3] sipush[4] dup add add} <br/>{@code local_1 <- load[local_0] load[local_0] mul}
 */
public String dump(){
  StringBuilder sb=new StringBuilder();
  LineNumberTable lnt=methodInfo.getMethod().getLineNumberTable();
  ConstantPoolGen cpg=methodInfo.getConstantPoolGen();
  Iterator<InstructionHandle> ihIter=this.instructions.iterator();
  StringBuilder lineBuilder=new StringBuilder();
  InstructionHandle first=null;
  while (ihIter.hasNext()) {
    InstructionHandle ih=ihIter.next();
    String line=null;
    if (first == null) {
      first=ih;
    }
 else {
      lineBuilder.append("String_Node_Str");
    }
    Instruction ii=ih.getInstruction();
    if (ii instanceof ReturnInstruction) {
      line=ii.getName() + "String_Node_Str" + lineBuilder.toString();
    }
 else     if (ii instanceof StoreInstruction) {
      line="String_Node_Str" + ((StoreInstruction)ii).getIndex() + "String_Node_Str"+ lineBuilder.toString();
    }
 else     if (ii instanceof FieldInstruction && ii.getName().startsWith("String_Node_Str")) {
      line="String_Node_Str" + ((FieldInstruction)ii).getFieldName(cpg) + "String_Node_Str"+ lineBuilder.toString();
    }
 else {
      lineBuilder.append(ii.getName());
    }
    if (!ihIter.hasNext()) {
      line=lineBuilder.toString();
    }
    if (line != null) {
      int l1=lnt.getSourceLine(first.getPosition());
      int l2=lnt.getSourceLine(ih.getPosition());
      if (l1 != l2)       sb.append("String_Node_Str" + (l1 < 0 ? "String_Node_Str" : l1) + "String_Node_Str"+ (l2 < 0 ? "String_Node_Str" : l2)+ "String_Node_Str");
 else       sb.append("String_Node_Str" + (l1 < 0 ? "String_Node_Str" : l1) + "String_Node_Str");
      sb.append(line + "String_Node_Str");
      first=null;
      lineBuilder=new StringBuilder();
    }
  }
  return sb.toString();
}