Program: 23359
Project: 23359
Buggy source:
private JsonObject generateType(ElementDefn root,String name,ElementDefn struc,boolean isResource,JsonObject base,boolean relative) throws IOException, Exception {
  String parent=isResource ? root.typeCode() : "String_Node_Str";
  JsonObject r=new JsonObject();
  base.add(name,r);
  JsonArray ao=new JsonArray();
  r.add("String_Node_Str",ao);
  JsonObject sup=new JsonObject();
  ao.add(sup);
  sup.addProperty("String_Node_Str",(relative ? "String_Node_Str" : parent + "String_Node_Str") + "String_Node_Str" + parent);
  JsonObject self=new JsonObject();
  ao.add(self);
  self.addProperty("String_Node_Str",root.getDefinition());
  Set<String> required=new HashSet<String>();
  JsonObject props=new JsonObject();
  self.add("String_Node_Str",props);
  if (isResource && definitions.hasResource(root.getName())) {
    JsonObject rt=new JsonObject();
    props.add("String_Node_Str",rt);
    rt.addProperty("String_Node_Str","String_Node_Str" + root.getName() + "String_Node_Str");
    rt.addProperty("String_Node_Str","String_Node_Str");
    JsonArray enums=new JsonArray();
    enums.add(new JsonPrimitive(root.getName()));
    rt.add("String_Node_Str",enums);
    required.add("String_Node_Str");
  }
  for (  ElementDefn e : struc.getElements()) {
    if (e.getName().equals("String_Node_Str"))     generateAny(root,e,"String_Node_Str",props,relative);
 else     generateElement(root,e,required,props,relative);
  }
  if (required.size() > 0) {
    JsonArray req=new JsonArray();
    self.add("String_Node_Str",req);
    for (    String s : required) {
      req.add(new JsonPrimitive(s));
    }
  }
  return props;
}

Fixed version (ground truth):
private JsonObject generateType(ElementDefn root,String name,ElementDefn struc,boolean isResource,JsonObject base,boolean relative) throws IOException, Exception {
  String parent=isResource ? root.typeCode() : "String_Node_Str";
  JsonObject r=new JsonObject();
  name=name.replace("String_Node_Str","String_Node_Str");
  base.add(name,r);
  JsonArray ao=new JsonArray();
  r.add("String_Node_Str",ao);
  if (!name.equals("String_Node_Str")) {
    JsonObject sup=new JsonObject();
    ao.add(sup);
    if ((parent == null) || (parent.isEmpty()) || (parent.equals("String_Node_Str"))|| (parent.equals("String_Node_Str")))     parent="String_Node_Str";
    sup.addProperty("String_Node_Str",(relative ? "String_Node_Str" : parent.replace("String_Node_Str","String_Node_Str") + "String_Node_Str") + "String_Node_Str" + parent.replace("String_Node_Str","String_Node_Str"));
  }
  JsonObject self=new JsonObject();
  ao.add(self);
  self.addProperty("String_Node_Str",root.getDefinition());
  Set<String> required=new HashSet<String>();
  JsonObject props=new JsonObject();
  self.add("String_Node_Str",props);
  if (isResource && definitions.hasResource(root.getName())) {
    JsonObject rt=new JsonObject();
    props.add("String_Node_Str",rt);
    rt.addProperty("String_Node_Str","String_Node_Str" + root.getName() + "String_Node_Str");
    rt.addProperty("String_Node_Str","String_Node_Str");
    JsonArray enums=new JsonArray();
    enums.add(new JsonPrimitive(root.getName()));
    rt.add("String_Node_Str",enums);
    required.add("String_Node_Str");
  }
  for (  ElementDefn e : struc.getElements()) {
    if (e.getName().equals("String_Node_Str"))     generateAny(root,e,"String_Node_Str",props,relative);
 else     generateElement(root,e,required,props,relative);
  }
  if (required.size() > 0) {
    JsonArray req=new JsonArray();
    self.add("String_Node_Str",req);
    for (    String s : required) {
      req.add(new JsonPrimitive(s));
    }
  }
  return props;
}