Program: 3560
Project: 3560
Buggy source:
public String createMetadata(Object nativeItem) throws CannotDisseminateFormatException {
  HarvestedItemInfo itemInfo=(HarvestedItemInfo)nativeItem;
  Item item=itemInfo.item;
  DCValue[] allDC=item.getDC(Item.ANY,Item.ANY,Item.ANY);
  StringBuffer metadata=new StringBuffer();
  metadata.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
  metadata.append("String_Node_Str").append(hostName).append("String_Node_Str").append(item.getHandle()).append("String_Node_Str");
  for (int i=0; i < allDC.length; i++) {
    if (screened(allDC[i])) {
      String element=allDC[i].element;
      if (allDC[i].element.equals("String_Node_Str") && (allDC[i].qualifier != null) && allDC[i].qualifier.equals("String_Node_Str")) {
        element="String_Node_Str";
      }
      String value=allDC[i].value;
      int c=-1;
      while ((c=value.indexOf("String_Node_Str",c + 1)) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      while ((c=value.indexOf("String_Node_Str")) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      while ((c=value.indexOf("String_Node_Str")) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      metadata.append("String_Node_Str").append(element).append("String_Node_Str").append(value).append("String_Node_Str").append(element).append("String_Node_Str");
    }
  }
  Collection[] colls=null;
  Community[] comms=null;
  Bundle[] origBundles=null;
  Bundle[] thumbBundles=null;
  try {
    colls=item.getCollections();
    comms=item.getCommunities();
    origBundles=item.getBundles("String_Node_Str");
    thumbBundles=item.getBundles("String_Node_Str");
  }
 catch (  SQLException sqlE) {
    ;
  }
  for (int i=0; i < comms.length; i++) {
    metadata.append("String_Node_Str").append(comms[i].getMetadata("String_Node_Str")).append("String_Node_Str");
  }
  for (int j=0; j < colls.length; j++) {
    metadata.append("String_Node_Str").append(colls[j].getMetadata("String_Node_Str")).append("String_Node_Str");
  }
  if (origBundles.length > 0) {
    Bitstream[] bitstreams=origBundles[0].getBitstreams();
    for (int j=0; j < bitstreams.length; j++) {
      String tName=bitstreams[j].getName() + "String_Node_Str";
      Bitstream tb=thumbBundles[0].getBitstreamByName(tName);
      if (tb != null) {
        String thumbUrl=null;
        try {
          thumbUrl=baseUrl + "String_Node_Str" + tb.getID()+ "String_Node_Str"+ Util.encodeBitstreamName(tb.getName(),Constants.DEFAULT_ENCODING);
        }
 catch (        Exception e) {
        }
        metadata.append("String_Node_Str").append(thumbUrl).append("String_Node_Str");
      }
    }
  }
  metadata.append("String_Node_Str");
  metadata.append("String_Node_Str");
  return metadata.toString();
}

Fixed version (ground truth):
public String createMetadata(Object nativeItem) throws CannotDisseminateFormatException {
  HarvestedItemInfo itemInfo=(HarvestedItemInfo)nativeItem;
  Item item=itemInfo.item;
  DCValue[] allDC=item.getDC(Item.ANY,Item.ANY,Item.ANY);
  StringBuffer metadata=new StringBuffer();
  metadata.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
  metadata.append("String_Node_Str").append(hostName).append("String_Node_Str").append(item.getHandle()).append("String_Node_Str");
  for (int i=0; i < allDC.length; i++) {
    if (screened(allDC[i])) {
      String element=allDC[i].element;
      if (allDC[i].element.equals("String_Node_Str") && (allDC[i].qualifier != null) && allDC[i].qualifier.equals("String_Node_Str")) {
        element="String_Node_Str";
      }
      String value=allDC[i].value;
      int c=-1;
      while ((c=value.indexOf("String_Node_Str",c + 1)) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      while ((c=value.indexOf("String_Node_Str")) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      while ((c=value.indexOf("String_Node_Str")) > -1) {
        value=value.substring(0,c) + "String_Node_Str" + value.substring(c + 1);
      }
      metadata.append("String_Node_Str").append(element).append("String_Node_Str").append(value).append("String_Node_Str").append(element).append("String_Node_Str");
    }
  }
  Collection[] colls=null;
  Community[] comms=null;
  Bundle[] origBundles=null;
  Bundle[] thumbBundles=null;
  try {
    colls=item.getCollections();
    comms=item.getCommunities();
    origBundles=item.getBundles("String_Node_Str");
    thumbBundles=item.getBundles("String_Node_Str");
  }
 catch (  SQLException sqlE) {
    ;
  }
  for (int i=0; i < comms.length; i++) {
    metadata.append("String_Node_Str").append(comms[i].getMetadata("String_Node_Str")).append("String_Node_Str");
  }
  for (int j=0; j < colls.length; j++) {
    metadata.append("String_Node_Str").append(colls[j].getMetadata("String_Node_Str")).append("String_Node_Str");
  }
  if (origBundles.length > 0) {
    Bitstream[] bitstreams=origBundles[0].getBitstreams();
    for (int j=0; j < bitstreams.length; j++) {
      String tName=bitstreams[j].getName() + "String_Node_Str";
      Bitstream tb=null;
      if (thumbBundles.length > 0) {
        tb=thumbBundles[0].getBitstreamByName(tName);
      }
      if (tb != null) {
        String thumbUrl=null;
        try {
          thumbUrl=baseUrl + "String_Node_Str" + tb.getID()+ "String_Node_Str"+ Util.encodeBitstreamName(tb.getName(),Constants.DEFAULT_ENCODING);
        }
 catch (        Exception e) {
        }
        metadata.append("String_Node_Str").append(thumbUrl).append("String_Node_Str");
      }
    }
  }
  metadata.append("String_Node_Str");
  metadata.append("String_Node_Str");
  return metadata.toString();
}