Program: 24064
Project: 24064
Buggy source:
public void generate(ElementDefn root,String name,JavaGenClass clss,ProfiledType cd,Date genDate,String version,boolean isAbstract,Map<String,SearchParameterDefn> map) throws Exception {
  typeNames.clear();
  typeNameStrings.clear();
  enums.clear();
  strucs.clear();
  enumNames.clear();
  this.clss=clss;
  boolean isRefType=root.getName().equals("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str" + Config.FULL_LICENSE_CODE + "String_Node_Str");
  write("String_Node_Str" + Config.DATE_FORMAT().format(genDate) + "String_Node_Str"+ version+ "String_Node_Str");
  if (clss != JavaGenClass.Constraint) {
    boolean l=true;
    boolean h=hasXhtml(root);
    boolean d=hasDecimal(root);
    boolean s=hasString(root);
    boolean e=hasSharedEnums(root);
    if (l || h || d|| e) {
      if (l)       write("String_Node_Str");
      if (h)       write("String_Node_Str");
      write("String_Node_Str");
      if (d)       write("String_Node_Str");
      if (s)       write("String_Node_Str");
      if (e)       write("String_Node_Str");
    }
    if (clss == JavaGenClass.Resource) {
      write("String_Node_Str");
      write("String_Node_Str");
    }
    write("String_Node_Str");
    write("String_Node_Str");
  }
  if (clss != JavaGenClass.Resource) {
    write("String_Node_Str");
  }
  write("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str");
  jdoc("String_Node_Str",root.getDefinition());
  classname=upFirst(name);
  if (clss == JavaGenClass.Resource) {
    if (!isAbstract) {
      write("String_Node_Str" + upFirst(name).replace("String_Node_Str","String_Node_Str") + "String_Node_Str"+ upFirst(name)+ "String_Node_Str");
    }
    String hierarchy;
    if (Utilities.noString(root.typeCode())) {
      hierarchy="String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy="String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else {
      hierarchy=root.typeCode();
    }
    write("String_Node_Str" + (isAbstract ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ upFirst(name)+ "String_Node_Str"+ hierarchy+ "String_Node_Str");
  }
 else   if (clss == JavaGenClass.Structure && upFirst(name).equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    isAbstract=true;
  }
 else   if (clss == JavaGenClass.Structure) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    boolean isBackboneElement=upFirst(name).equals("String_Node_Str");
    isAbstract=isBackboneElement;
    String absractKeyword=isAbstract ? "String_Node_Str" : "String_Node_Str";
    String hierarchyKeyword;
    if (name.equals("String_Node_Str")) {
      hierarchyKeyword="String_Node_Str";
    }
 else     if (name.equals("String_Node_Str")) {
      hierarchyKeyword="String_Node_Str";
    }
 else {
      hierarchyKeyword="String_Node_Str";
    }
    write("String_Node_Str" + absractKeyword + "String_Node_Str"+ upFirst(name)+ "String_Node_Str"+ hierarchyKeyword+ "String_Node_Str");
    if (isBackboneElement) {
      write("String_Node_Str");
    }
  }
 else   if (clss == JavaGenClass.BackboneElement) {
    write("String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (clss == JavaGenClass.Constraint) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str"+ upFirst(root.getName())+ "String_Node_Str");
    write("String_Node_Str" + upFirst(cd.getName()) + "String_Node_Str"+ upFirst(root.getName())+ "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
  write("String_Node_Str");
  write("String_Node_Str");
  if (clss != JavaGenClass.Constraint) {
    for (    ElementDefn e : root.getElements()) {
      scanNestedTypes(root,root.getName(),e);
    }
    for (    ElementDefn e : enums) {
      generateEnum(e);
    }
    for (    ElementDefn e : strucs) {
      generateType(e,clss == JavaGenClass.Resource ? JavaGenClass.BackboneElement : JavaGenClass.Structure);
    }
    allfields="String_Node_Str";
    int i=0;
    for (    ElementDefn e : root.getElements()) {
      generateField(root,e,"String_Node_Str",i++);
    }
    write("String_Node_Str" + Long.toString(allfields.hashCode()) + "String_Node_Str");
    hashSum=hashSum + allfields.hashCode();
    List<ElementDefn> mandatory=new ArrayList<ElementDefn>();
    generateConstructor(upFirst(name),mandatory,"String_Node_Str");
    for (    ElementDefn e : root.getElements()) {
      if (e.isMandatory())       mandatory.add(e);
    }
    if (mandatory.size() > 0)     generateConstructor(upFirst(name),mandatory,"String_Node_Str");
    generateTypeSpecificConstructors(upFirst(name));
    for (    ElementDefn e : root.getElements()) {
      generateAccessors(root,e,"String_Node_Str",upFirst(name));
    }
    generateTypeSpecificAccessors(name,clss);
    generateChildrenRegister(root,"String_Node_Str",isAbstract);
    generatePropertySetter(root,"String_Node_Str");
    generateChildAdder(root,"String_Node_Str",classname);
    generateFhirType(root.getName());
  }
 else {
    write("String_Node_Str" + inheritedHash + "String_Node_Str");
  }
  generateCopy(root,classname,false,isAbstract);
  generateEquals(root,classname,false,isAbstract);
  generateIsEmpty(root,classname,false,isAbstract);
  if (clss == JavaGenClass.Resource && !isAbstract) {
    write("String_Node_Str");
    write("String_Node_Str");
    write("String_Node_Str" + root.getName() + "String_Node_Str");
    write("String_Node_Str");
    write("String_Node_Str");
  }
 else   if (isAbstract && Utilities.noString(root.typeCode()) && clss != JavaGenClass.Structure) {
    write("String_Node_Str");
  }
  if (map != null) {
    for (    SearchParameterDefn sp : map.values()) {
      write("String_Node_Str" + sp.getCode() + "String_Node_Str"+ pipeSeparate(sp.getExpressions())+ "String_Node_Str"+ Utilities.escapeJava(sp.getDescription())+ "String_Node_Str"+ sp.getType().toString()+ "String_Node_Str");
      write("String_Node_Str" + clean(sp.getCode()).toUpperCase() + "String_Node_Str"+ sp.getCode()+ "String_Node_Str");
    }
  }
  write("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str");
  flush();
}

Fixed version (ground truth):
public void generate(ElementDefn root,String name,JavaGenClass clss,ProfiledType cd,Date genDate,String version,boolean isAbstract,Map<String,SearchParameterDefn> map) throws Exception {
  typeNames.clear();
  typeNameStrings.clear();
  enums.clear();
  strucs.clear();
  enumNames.clear();
  this.clss=clss;
  boolean isRefType=root.getName().equals("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str" + Config.FULL_LICENSE_CODE + "String_Node_Str");
  write("String_Node_Str" + Config.DATE_FORMAT().format(genDate) + "String_Node_Str"+ version+ "String_Node_Str");
  if (clss != JavaGenClass.Constraint) {
    boolean l=true;
    boolean h=hasXhtml(root);
    boolean d=hasDecimal(root);
    boolean s=hasString(root);
    boolean e=hasSharedEnums(root);
    if (l || h || d|| e) {
      if (l)       write("String_Node_Str");
      if (h)       write("String_Node_Str");
      write("String_Node_Str");
      if (d)       write("String_Node_Str");
      if (s)       write("String_Node_Str");
      if (e)       write("String_Node_Str");
    }
    if (clss == JavaGenClass.Resource) {
      write("String_Node_Str");
      write("String_Node_Str");
    }
    write("String_Node_Str");
    write("String_Node_Str");
  }
  if (clss != JavaGenClass.Resource) {
    write("String_Node_Str");
  }
  write("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str");
  jdoc("String_Node_Str",root.getDefinition());
  classname=upFirst(name);
  if (clss == JavaGenClass.Resource) {
    if (!isAbstract) {
      write("String_Node_Str" + upFirst(name).replace("String_Node_Str","String_Node_Str") + "String_Node_Str"+ upFirst(name)+ "String_Node_Str");
    }
    String hierarchy;
    if (Utilities.noString(root.typeCode())) {
      hierarchy="String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy="String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else     if ("String_Node_Str".equals(upFirst(name))) {
      hierarchy=root.typeCode() + "String_Node_Str";
    }
 else {
      hierarchy=root.typeCode();
    }
    write("String_Node_Str" + (isAbstract ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ upFirst(name)+ "String_Node_Str"+ hierarchy+ "String_Node_Str");
  }
 else   if (clss == JavaGenClass.Structure && upFirst(name).equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    isAbstract=true;
  }
 else   if (clss == JavaGenClass.Structure) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    boolean isBackboneElement=upFirst(name).equals("String_Node_Str");
    isAbstract=isBackboneElement;
    String absractKeyword=isAbstract ? "String_Node_Str" : "String_Node_Str";
    String hierarchyKeyword;
    if (name.equals("String_Node_Str")) {
      hierarchyKeyword="String_Node_Str";
    }
 else     if (name.equals("String_Node_Str")) {
      hierarchyKeyword="String_Node_Str";
    }
 else {
      hierarchyKeyword="String_Node_Str";
    }
    write("String_Node_Str" + absractKeyword + "String_Node_Str"+ upFirst(name)+ "String_Node_Str"+ hierarchyKeyword+ "String_Node_Str");
    if (isBackboneElement) {
      write("String_Node_Str");
    }
  }
 else   if (clss == JavaGenClass.BackboneElement) {
    write("String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (clss == JavaGenClass.Constraint) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str"+ upFirst(root.getName())+ "String_Node_Str");
    write("String_Node_Str" + upFirst(cd.getName()) + "String_Node_Str"+ upFirst(root.getName())+ "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else   if (root.getName().equals("String_Node_Str")) {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
 else {
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
    write("String_Node_Str" + upFirst(name) + "String_Node_Str");
  }
  write("String_Node_Str");
  write("String_Node_Str");
  if (clss != JavaGenClass.Constraint) {
    for (    ElementDefn e : root.getElements()) {
      scanNestedTypes(root,root.getName(),e);
    }
    for (    ElementDefn e : enums) {
      generateEnum(e);
    }
    for (    ElementDefn e : strucs) {
      generateType(e,clss == JavaGenClass.Resource ? JavaGenClass.BackboneElement : JavaGenClass.Structure);
    }
    allfields="String_Node_Str";
    int i=0;
    for (    ElementDefn e : root.getElements()) {
      generateField(root,e,"String_Node_Str",i++);
    }
    write("String_Node_Str" + Long.toString(allfields.hashCode()) + "String_Node_Str");
    hashSum=hashSum + allfields.hashCode();
    List<ElementDefn> mandatory=new ArrayList<ElementDefn>();
    generateConstructor(upFirst(name),mandatory,"String_Node_Str");
    for (    ElementDefn e : root.getElements()) {
      if (e.isMandatory())       mandatory.add(e);
    }
    if (mandatory.size() > 0)     generateConstructor(upFirst(name),mandatory,"String_Node_Str");
    generateTypeSpecificConstructors(upFirst(name));
    for (    ElementDefn e : root.getElements()) {
      generateAccessors(root,e,"String_Node_Str",upFirst(name));
    }
    generateTypeSpecificAccessors(name,clss);
    generateChildrenRegister(root,"String_Node_Str",isAbstract);
    generatePropertySetter(root,"String_Node_Str");
    generateChildAdder(root,"String_Node_Str",classname);
    generateFhirType(root.getName());
  }
 else {
    write("String_Node_Str" + inheritedHash + "String_Node_Str");
  }
  generateCopy(root,classname,false,isAbstract);
  generateEquals(root,classname,false,isAbstract);
  generateIsEmpty(root,classname,false,isAbstract);
  if (clss == JavaGenClass.Resource && !isAbstract) {
    write("String_Node_Str");
    write("String_Node_Str");
    write("String_Node_Str" + root.getName() + "String_Node_Str");
    write("String_Node_Str");
    write("String_Node_Str");
  }
 else   if (isAbstract && Utilities.noString(root.typeCode()) && clss != JavaGenClass.Structure) {
    write("String_Node_Str");
  }
  if (map != null) {
    for (    SearchParameterDefn sp : map.values()) {
      write("String_Node_Str" + sp.getCode() + "String_Node_Str"+ sp.getExpression()+ "String_Node_Str"+ Utilities.escapeJava(sp.getDescription())+ "String_Node_Str"+ sp.getType().toString()+ "String_Node_Str");
      write("String_Node_Str" + clean(sp.getCode()).toUpperCase() + "String_Node_Str"+ sp.getCode()+ "String_Node_Str");
    }
  }
  write("String_Node_Str");
  write("String_Node_Str");
  write("String_Node_Str");
  flush();
}