Program: 135926
Project: 135926
Buggy source:
/** 
 */
private void GenNext(){
  Vector nextS=new Vector();
  StringBuffer sb=new StringBuffer();
  int max, col;
  max=wrapColumn - ("String_Node_Str".length());
  for (int i=0; i < nextStep.size(); i++) {
    String a=(String)nextStep.elementAt(i);
    if (a.length() + "String_Node_Str".length() + sb.length() > max) {
      nextS.addElement(sb.toString());
      sb=new StringBuffer();
    }
    if (sb.length() > 0)     sb.append("String_Node_Str");
    sb.append(a);
  }
  if (sb.length() > 0)   nextS.addElement(sb.toString());
  Vector nextSS=new Vector();
  String nextSSstart="String_Node_Str";
  sb=new StringBuffer();
  max=wrapColumn - ("String_Node_Str".length());
  if (mp && st.procs.size() > 0) {
    for (int i=0; i < st.procs.size(); i++) {
      PcalSymTab.ProcedureEntry p=(PcalSymTab.ProcedureEntry)st.procs.elementAt(i);
      if ((p.name.length() + "String_Node_Str".length() + sb.length()) > max) {
        nextSS.addElement(sb.toString());
        sb=new StringBuffer();
      }
      if (sb.length() > 0)       sb.append("String_Node_Str");
      sb.append(p.name);
      sb.append("String_Node_Str");
    }
    if (sb.length() > 0)     nextSS.addElement(sb.toString() + "String_Node_Str");
  }
  Vector nextSSP=new Vector();
  if (mp && st.processes.size() > 0)   for (int i=0; i < st.processes.size(); i++) {
    PcalSymTab.ProcessEntry p=(PcalSymTab.ProcessEntry)st.processes.elementAt(i);
    if (p.isEq)     continue;
    Vector vec=new Vector();
    sb=new StringBuffer();
    sb.append("String_Node_Str");
    Vector sv=p.id.toStringVector();
    col=sb.length();
    sb.append((String)sv.elementAt(0));
    for (int j=1; j < sv.size(); j++) {
      vec.addElement(sb.toString());
      sb=new StringBuffer(NSpaces(col));
      sb.append((String)sv.elementAt(j));
    }
    sb.append("String_Node_Str");
    sb.append(p.name);
    sb.append("String_Node_Str");
    vec.addElement(sb.toString());
    nextSSP.addElement(vec);
  }
  sb=new StringBuffer("String_Node_Str");
  col=sb.length() + 2;
  for (int i=0; i < nextS.size(); i++) {
    sb.append((String)nextS.elementAt(i));
    tlacode.addElement(sb.toString());
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (nextSS.size() > 0) {
    sb.append(nextSSstart);
    int col2=sb.length();
    if (nextSS.size() > 1)     sb.append("String_Node_Str");
    for (int i=0; i < nextSS.size(); i++) {
      sb.append((String)nextSS.elementAt(i));
      tlacode.addElement(sb.toString());
      sb=new StringBuffer(NSpaces(col2) + "String_Node_Str");
    }
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (nextSSP.size() > 0)   for (int i=0; i < nextSSP.size(); i++) {
    Vector v=(Vector)nextSSP.elementAt(i);
    for (int j=0; j < v.size(); j++) {
      String line=(String)v.elementAt(j);
      sb.append(line);
      tlacode.addElement(sb.toString());
      sb=new StringBuffer(NSpaces(col + 4));
    }
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (!PcalParams.NoDoneDisjunct) {
    sb.append("String_Node_Str");
    tlacode.addElement(sb.toString());
    sb=new StringBuffer(NSpaces(col + 4));
    if (mp)     sb.append("String_Node_Str" + "String_Node_Str");
 else     sb.append("String_Node_Str");
    tlacode.addElement(sb.toString());
  }
  ;
  tlacode.addElement("String_Node_Str");
}

Fixed version (ground truth):
/** 
 */
private void GenNext(){
  Vector nextS=new Vector();
  StringBuffer sb=new StringBuffer();
  int max, col;
  max=wrapColumn - ("String_Node_Str".length());
  for (int i=0; i < nextStep.size(); i++) {
    String a=(String)nextStep.elementAt(i);
    if (a.length() + "String_Node_Str".length() + sb.length() > max) {
      nextS.addElement(sb.toString());
      sb=new StringBuffer();
    }
    if (sb.length() > 0)     sb.append("String_Node_Str");
    sb.append(a);
  }
  if (sb.length() > 0)   nextS.addElement(sb.toString());
  Vector nextSS=new Vector();
  String nextSSstart="String_Node_Str";
  sb=new StringBuffer();
  max=wrapColumn - ("String_Node_Str".length());
  if (mp && st.procs.size() > 0) {
    for (int i=0; i < st.procs.size(); i++) {
      PcalSymTab.ProcedureEntry p=(PcalSymTab.ProcedureEntry)st.procs.elementAt(i);
      if ((p.name.length() + "String_Node_Str".length() + sb.length()) > max) {
        nextSS.addElement(sb.toString());
        sb=new StringBuffer();
      }
      if (sb.length() > 0)       sb.append("String_Node_Str");
      sb.append(p.name);
      sb.append("String_Node_Str");
    }
    if (sb.length() > 0)     nextSS.addElement(sb.toString() + "String_Node_Str");
  }
  Vector nextSSP=new Vector();
  if (mp && st.processes.size() > 0)   for (int i=0; i < st.processes.size(); i++) {
    PcalSymTab.ProcessEntry p=(PcalSymTab.ProcessEntry)st.processes.elementAt(i);
    if (p.isEq)     continue;
    Vector vec=new Vector();
    sb=new StringBuffer();
    sb.append("String_Node_Str");
    Vector sv=p.id.toStringVector();
    col=sb.length();
    sb.append((String)sv.elementAt(0));
    for (int j=1; j < sv.size(); j++) {
      vec.addElement(sb.toString());
      sb=new StringBuffer(NSpaces(col));
      sb.append((String)sv.elementAt(j));
    }
    sb.append("String_Node_Str");
    sb.append(p.name);
    sb.append("String_Node_Str");
    vec.addElement(sb.toString());
    nextSSP.addElement(vec);
  }
  sb=new StringBuffer("String_Node_Str");
  col=sb.length() + 2;
  for (int i=0; i < nextS.size(); i++) {
    sb.append((String)nextS.elementAt(i));
    tlacode.addElement(sb.toString());
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (nextSS.size() > 0) {
    sb.append(nextSSstart);
    int col2=sb.length();
    if (nextSS.size() > 1)     sb.append("String_Node_Str");
    for (int i=0; i < nextSS.size(); i++) {
      sb.append((String)nextSS.elementAt(i));
      tlacode.addElement(sb.toString());
      sb=new StringBuffer(NSpaces(col2) + "String_Node_Str");
    }
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (nextSSP.size() > 0)   for (int i=0; i < nextSSP.size(); i++) {
    Vector v=(Vector)nextSSP.elementAt(i);
    for (int j=0; j < v.size(); j++) {
      String line=(String)v.elementAt(j);
      sb.append(line);
      tlacode.addElement(sb.toString());
      if ((nextSS.size() == 0) && (i == 0)) {
        sb=new StringBuffer(NSpaces(col - 2));
      }
 else {
        sb=new StringBuffer(NSpaces(col + 4));
      }
    }
    sb=new StringBuffer(NSpaces(col) + "String_Node_Str");
  }
  if (!PcalParams.NoDoneDisjunct) {
    sb.append("String_Node_Str");
    tlacode.addElement(sb.toString());
    sb=new StringBuffer(NSpaces(col + 4));
    if (mp)     sb.append("String_Node_Str" + "String_Node_Str");
 else     sb.append("String_Node_Str");
    tlacode.addElement(sb.toString());
  }
  ;
  tlacode.addElement("String_Node_Str");
}