Program: 10560
Project: 10560
Buggy source:
private static void toXML(StringBuffer sb,String tagName,Class type,Object obj){
  Class<?> clazz=obj.getClass();
  if (clazz.isArray()) {
    if (obj.getClass() == INT_ARRAY_CLASS) {
      int[] objs=(int[])obj;
      for (int i=0; i < objs.length; i++) {
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
        sb.append(objs[i]);
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
      }
    }
 else     if (obj.getClass() == BYTE_ARRAY_CLASS) {
      byte[] objs=(byte[])obj;
      for (int i=0; i < objs.length; i++) {
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
        sb.append(objs[i]);
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
      }
    }
 else {
      Object[] objs=(Object[])obj;
      for (int i=0; i < objs.length; i++) {
        toXML(sb,tagName,type.getComponentType(),objs[i]);
      }
    }
  }
 else   if (clazz == ManagedObjectReference.class) {
    ManagedObjectReference mor=(ManagedObjectReference)obj;
    sb.append("String_Node_Str" + tagName + "String_Node_Str"+ mor.type+ "String_Node_Str");
    sb.append(mor.val);
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
 else   if (clazz.getCanonicalName().startsWith("String_Node_Str")) {
    if (clazz != type) {
      sb.append("String_Node_Str" + tagName + "String_Node_Str"+ getXSIType(obj)+ "String_Node_Str");
    }
 else {
      sb.append("String_Node_Str" + tagName + "String_Node_Str");
    }
    sb.append(obj);
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
 else   if (clazz.isEnum()) {
    sb.append("String_Node_Str" + tagName + "String_Node_Str"+ obj+ "String_Node_Str"+ tagName+ "String_Node_Str");
  }
 else   if (obj instanceof Calendar) {
    sb.append("String_Node_Str" + tagName + "String_Node_Str"+ DatatypeConverter.printDateTime((Calendar)obj)+ "String_Node_Str"+ tagName+ "String_Node_Str");
  }
 else {
    if (clazz == type) {
      sb.append("String_Node_Str" + tagName + "String_Node_Str");
    }
 else {
      String nameSpaceType=clazz.getSimpleName();
      sb.append("String_Node_Str" + tagName + "String_Node_Str"+ nameSpaceType+ "String_Node_Str");
    }
    Field[] fields=getAllFields(clazz);
    for (int i=0; i < fields.length; i++) {
      Field f=fields[i];
      String fName=f.getName();
      Object value=null;
      try {
        value=f.get(obj);
      }
 catch (      IllegalAccessException iae) {
        iae.printStackTrace();
      }
      if (value == null) {
        continue;
      }
      Class<?> fType=f.getType();
      toXML(sb,fName,fType,value);
    }
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
}

Fixed version (ground truth):
private static void toXML(StringBuffer sb,String tagName,Class type,Object obj){
  Class<?> clazz=obj.getClass();
  if (clazz.isArray()) {
    if (obj.getClass() == INT_ARRAY_CLASS) {
      int[] objs=(int[])obj;
      for (int i=0; i < objs.length; i++) {
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
        sb.append(objs[i]);
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
      }
    }
 else     if (obj.getClass() == BYTE_ARRAY_CLASS) {
      byte[] objs=(byte[])obj;
      for (int i=0; i < objs.length; i++) {
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
        sb.append(objs[i]);
        sb.append("String_Node_Str" + tagName + "String_Node_Str");
      }
    }
 else {
      Object[] objs=(Object[])obj;
      for (int i=0; i < objs.length; i++) {
        toXML(sb,tagName,type.getComponentType(),objs[i]);
      }
    }
  }
 else   if (clazz == ManagedObjectReference.class) {
    ManagedObjectReference mor=(ManagedObjectReference)obj;
    sb.append("String_Node_Str" + tagName);
    if (clazz != type) {
      sb.append("String_Node_Str" + mor.type + "String_Node_Str");
    }
    sb.append("String_Node_Str" + mor.type + "String_Node_Str");
    sb.append(mor.val);
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
 else   if (clazz.getCanonicalName().startsWith("String_Node_Str")) {
    if (clazz != type) {
      sb.append("String_Node_Str" + tagName + "String_Node_Str"+ getXSIType(obj)+ "String_Node_Str");
    }
 else {
      sb.append("String_Node_Str" + tagName + "String_Node_Str");
    }
    sb.append(obj);
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
 else   if (clazz.isEnum()) {
    sb.append("String_Node_Str" + tagName + "String_Node_Str"+ obj+ "String_Node_Str"+ tagName+ "String_Node_Str");
  }
 else   if (obj instanceof Calendar) {
    sb.append("String_Node_Str" + tagName + "String_Node_Str"+ DatatypeConverter.printDateTime((Calendar)obj)+ "String_Node_Str"+ tagName+ "String_Node_Str");
  }
 else {
    if (clazz == type) {
      sb.append("String_Node_Str" + tagName + "String_Node_Str");
    }
 else {
      String nameSpaceType=clazz.getSimpleName();
      sb.append("String_Node_Str" + tagName + "String_Node_Str"+ nameSpaceType+ "String_Node_Str");
    }
    Field[] fields=getAllFields(clazz);
    for (int i=0; i < fields.length; i++) {
      Field f=fields[i];
      String fName=f.getName();
      Object value=null;
      try {
        value=f.get(obj);
      }
 catch (      IllegalAccessException iae) {
        iae.printStackTrace();
      }
      if (value == null) {
        continue;
      }
      Class<?> fType=f.getType();
      toXML(sb,fName,fType,value);
    }
    sb.append("String_Node_Str" + tagName + "String_Node_Str");
  }
}