Program: 4616
Project: 4616
Buggy source:
private static void aggregateResponse(HashMap uriToString,LimeXMLDocument doc,int index){
  if (doc == null)   return;
  String uri=doc.getSchemaURI();
  StringBuffer currStringB=(StringBuffer)uriToString.get(uri);
  if (currStringB == null) {
    String str=null;
    try {
      str=doc.getXMLString();
    }
 catch (    SchemaNotFoundException e) {
      return;
    }
    if (str == null || str.equals("String_Node_Str"))     return;
    str=str.substring(0,str.lastIndexOf("String_Node_Str"));
    int p=str.indexOf("String_Node_Str");
    Assert.that(p >= 0,"String_Node_Str");
    p=str.indexOf("String_Node_Str",p + 1);
    Assert.that(p >= 0,"String_Node_Str");
    p=str.indexOf("String_Node_Str",p + 1);
    Assert.that(p >= 0,"String_Node_Str");
    int q=str.indexOf("String_Node_Str",p + 1);
    int k=str.lastIndexOf("String_Node_Str",q - 1);
    if (k != -1 && p < k && k < q)     if (str.substring(k + 1,q).trim().equals("String_Node_Str"))     p=k;
 else     p=q;
 else     p=q;
    String first=str.substring(0,p);
    String last=str.substring(p);
    StringBuffer strB=new StringBuffer(first.length() + 15 + last.length());
    strB.append(first);
    strB.append("String_Node_Str");
    strB.append(index);
    strB.append("String_Node_Str");
    strB.append(last);
    uriToString.put(uri,strB);
  }
 else {
    String str=null;
    try {
      str=doc.getXMLString();
    }
 catch (    SchemaNotFoundException e) {
      return;
    }
    int begin=str.indexOf("String_Node_Str");
    begin=str.indexOf("String_Node_Str",begin + 1);
    begin=str.indexOf("String_Node_Str",begin + 1);
    int end=str.lastIndexOf("String_Node_Str");
    str=str.substring(begin,end);
    int p=str.indexOf("String_Node_Str");
    int q=str.lastIndexOf("String_Node_Str",p - 1);
    if (q != -1 && q < p)     if (str.substring(q + 1,p).trim().equals("String_Node_Str"))     p=q;
    String first=str.substring(0,p);
    String last=str.substring(p);
    currStringB.append(first);
    currStringB.append("String_Node_Str");
    currStringB.append(index);
    currStringB.append("String_Node_Str");
    currStringB.append(last);
    uriToString.put(uri,currStringB);
  }
}

Fixed version (ground truth):
private static void aggregateResponse(HashMap uriToString,LimeXMLDocument doc,int index){
  if (doc == null)   return;
  String uri=doc.getSchemaURI();
  StringBuffer currStringB=(StringBuffer)uriToString.get(uri);
  if (currStringB == null) {
    String str=null;
    try {
      str=doc.getXMLString();
    }
 catch (    SchemaNotFoundException e) {
      return;
    }
    if (str == null || str.equals("String_Node_Str"))     return;
    str=str.substring(0,str.lastIndexOf("String_Node_Str"));
    int p=str.indexOf("String_Node_Str");
    Assert.that(p >= 0,"String_Node_Str");
    p=str.indexOf("String_Node_Str",p + 1);
    Assert.that(p >= 0,"String_Node_Str");
    p=str.indexOf("String_Node_Str",p + 1);
    Assert.that(p >= 0,"String_Node_Str");
    int q=str.indexOf("String_Node_Str",p + 1);
    int k=str.lastIndexOf("String_Node_Str",q - 1);
    if (k != -1 && p < k && k < q)     if (str.substring(k + 1,q).trim().equals("String_Node_Str"))     p=k;
 else     p=q;
 else     p=q;
    String first=str.substring(0,p);
    String last=str.substring(p);
    StringBuffer strB=new StringBuffer(first.length() + 15 + last.length());
    strB.append(first);
    strB.append("String_Node_Str");
    strB.append(index);
    strB.append("String_Node_Str");
    strB.append(last);
    uriToString.put(uri,strB);
  }
 else {
    String str=null;
    try {
      str=doc.getXMLString();
    }
 catch (    SchemaNotFoundException e) {
      return;
    }
    int begin=str.indexOf("String_Node_Str");
    Assert.that(begin != -1,str);
    begin=str.indexOf("String_Node_Str",begin + 1);
    Assert.that(begin != -1,str);
    begin=str.indexOf("String_Node_Str",begin + 1);
    Assert.that(begin != -1,str);
    int end=str.lastIndexOf("String_Node_Str");
    Assert.that(end != -1,str);
    str=str.substring(begin,end);
    int p=str.indexOf("String_Node_Str");
    int q=str.lastIndexOf("String_Node_Str",p - 1);
    if (q != -1 && q < p)     if (str.substring(q + 1,p).trim().equals("String_Node_Str"))     p=q;
    String first=str.substring(0,p);
    String last=str.substring(p);
    currStringB.append(first);
    currStringB.append("String_Node_Str");
    currStringB.append(index);
    currStringB.append("String_Node_Str");
    currStringB.append(last);
    uriToString.put(uri,currStringB);
  }
}