Program: 13689
Project: 13689
Buggy source:
public static String toXML(String tag,Object obj,String nameSpaceType){
  if (obj == null) {
    return "String_Node_Str";
  }
  Class<?> c=obj.getClass();
  if (c.isArray()) {
    StringBuffer sb=new StringBuffer();
    Object[] objs=(Object[])obj;
    for (int i=0; i < objs.length; i++) {
      sb.append(toXML(tag,objs[i],nameSpaceType));
    }
    return sb.toString();
  }
  if (c.getSimpleName().equals("String_Node_Str")) {
    ManagedObjectReference mor=(ManagedObjectReference)obj;
    StringBuffer sb=new StringBuffer("String_Node_Str" + tag + "String_Node_Str"+ mor.type+ "String_Node_Str");
    sb.append(mor.val);
    sb.append("String_Node_Str" + tag + "String_Node_Str");
    return sb.toString();
  }
 else   if (c.getCanonicalName().startsWith("String_Node_Str")) {
    return "String_Node_Str" + tag + "String_Node_Str"+ obj+ "String_Node_Str"+ tag+ "String_Node_Str";
  }
 else {
    StringBuffer sb=new StringBuffer();
    if (nameSpaceType == null) {
      sb.append("String_Node_Str" + tag + "String_Node_Str");
    }
 else {
      sb.append("String_Node_Str" + tag + "String_Node_Str"+ nameSpaceType+ "String_Node_Str");
    }
    Field[] fields=getAllFields(c);
    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;
      }
      String typeName=f.getType().getCanonicalName();
      Class<?> clazz=f.getType();
      if (clazz.isArray()) {
        Object[] values=(Object[])value;
        for (int j=0; values != null && j < values.length; j++) {
          fieldToXML(sb,fName,typeName,values[j]);
        }
      }
 else {
        fieldToXML(sb,fName,typeName,value);
      }
    }
    sb.append("String_Node_Str" + tag + "String_Node_Str");
    return sb.toString();
  }
}

Fixed version (ground truth):
public static String toXML(String tag,Object obj,String nameSpaceType){
  if (obj == null) {
    return "String_Node_Str";
  }
  Class<?> c=obj.getClass();
  if (c.isArray()) {
    StringBuffer sb=new StringBuffer();
    Object[] objs=(Object[])obj;
    for (int i=0; i < objs.length; i++) {
      sb.append(toXML(tag,objs[i],nameSpaceType));
    }
    return sb.toString();
  }
  if (c.getSimpleName().equals("String_Node_Str")) {
    ManagedObjectReference mor=(ManagedObjectReference)obj;
    StringBuffer sb=new StringBuffer("String_Node_Str" + tag + "String_Node_Str"+ mor.type+ "String_Node_Str");
    sb.append(mor.val);
    sb.append("String_Node_Str" + tag + "String_Node_Str");
    return sb.toString();
  }
 else   if (c.getCanonicalName().startsWith("String_Node_Str")) {
    return "String_Node_Str" + tag + "String_Node_Str"+ obj+ "String_Node_Str"+ tag+ "String_Node_Str";
  }
 else   if (c.getSimpleName().equals("String_Node_Str")) {
    String dateStr=DatatypeConverter.printTime((Calendar)obj);
    return "String_Node_Str" + tag + "String_Node_Str"+ dateStr+ "String_Node_Str"+ tag+ "String_Node_Str";
  }
 else {
    StringBuffer sb=new StringBuffer();
    if (nameSpaceType == null) {
      sb.append("String_Node_Str" + tag + "String_Node_Str");
    }
 else {
      sb.append("String_Node_Str" + tag + "String_Node_Str"+ nameSpaceType+ "String_Node_Str");
    }
    Field[] fields=getAllFields(c);
    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;
      }
      String typeName=f.getType().getCanonicalName();
      Class<?> clazz=f.getType();
      if (clazz.isArray()) {
        Object[] values=(Object[])value;
        for (int j=0; values != null && j < values.length; j++) {
          fieldToXML(sb,fName,typeName,values[j]);
        }
      }
 else {
        fieldToXML(sb,fName,typeName,value);
      }
    }
    sb.append("String_Node_Str" + tag + "String_Node_Str");
    return sb.toString();
  }
}