Program: 23034
Project: 23034
Buggy source:
@SuppressWarnings("String_Node_Str") private void generateCoreElem(StringBuilder b,List<ElementDefinition> elements,ElementDefinition elem,int indent,String pathName,boolean asValue,TypeRefComponent type,boolean last,boolean complex) throws Exception {
  if (elem.getPath().endsWith("String_Node_Str") && elem.getPath().lastIndexOf('.') > elem.getPath().indexOf('.'))   return;
  if (!complex && elem.getPath().endsWith("String_Node_Str"))   return;
  if (elem.getMax().equals("String_Node_Str"))   return;
  String indentS="String_Node_Str";
  for (int i=0; i < indent; i++) {
    indentS+="String_Node_Str";
  }
  b.append(indentS);
  List<ElementDefinition> children=getChildren(elements,elem);
  String name=tail(elem.getPath());
  String en=asValue ? "String_Node_Str" : name;
  if (en.contains("String_Node_Str"))   en=en.replace("String_Node_Str",upFirst(type.getCode()));
  boolean unbounded=elem.hasBase() && elem.getBase().hasMax() ? elem.getBase().getMax().equals("String_Node_Str") : "String_Node_Str".equals(elem.getMax());
  String defPage=igp.getLinkForProfile(sd,sd.getUrl());
  if (defPage.contains("String_Node_Str"))   defPage=defPage.substring(0,defPage.indexOf("String_Node_Str"));
  b.append("String_Node_Str" + (defPage + "String_Node_Str" + pathName+ "String_Node_Str"+ en) + "String_Node_Str"+ Utilities.escapeXml(getEnhancedDefinition(elem))+ "String_Node_Str"+ en+ "String_Node_Str");
  boolean delayedClose=false;
  if (unbounded)   b.append("String_Node_Str");
  if (type == null || children.size() > 0) {
    assert(children.size() > 0);
    b.append("String_Node_Str");
    delayedClose=true;
  }
 else   if (type.getCode() == null) {
    b.append("String_Node_Str");
  }
 else   if (isPrimitive(type.getCode())) {
    if (!(type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str")))     b.append("String_Node_Str");
    if (elem.hasFixed())     b.append(Utilities.escapeJson(((PrimitiveType)elem.getFixed()).asStringValue()));
 else     b.append("String_Node_Str" + suffix(getSrcFile(type.getCode()),type.getCode()) + "String_Node_Str"+ type.getCode()+ "String_Node_Str");
    if (!(type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str")))     b.append("String_Node_Str");
  }
 else {
    b.append("String_Node_Str");
    b.append("String_Node_Str" + suffix(getSrcFile(type.getCode()),type.getCode()) + "String_Node_Str"+ type.getCode()+ "String_Node_Str");
    if (type.hasProfile()) {
      StructureDefinition tsd=context.fetchResource(StructureDefinition.class,type.getProfile().get(0).getValue());
      if (tsd != null)       b.append("String_Node_Str" + tsd.getUserString("String_Node_Str") + "String_Node_Str"+ tsd.getType()+ "String_Node_Str"+ tsd.getName()+ "String_Node_Str");
 else       b.append("String_Node_Str" + type.getProfile() + "String_Node_Str");
    }
    if (type.hasTargetProfile()) {
      if (type.getTargetProfile().get(0).getValue().startsWith("String_Node_Str")) {
        String t=type.getTargetProfile().get(0).getValue().substring(40);
        if (hasType(t))         b.append("String_Node_Str" + suffix(getSrcFile(t),t) + "String_Node_Str"+ t+ "String_Node_Str");
 else         if (hasResource(t))         b.append("String_Node_Str" + prefix + t.toLowerCase()+ "String_Node_Str"+ t+ "String_Node_Str");
 else         b.append("String_Node_Str" + t + "String_Node_Str");
      }
 else       b.append("String_Node_Str" + type.getTargetProfile() + "String_Node_Str");
    }
    b.append("String_Node_Str");
  }
  if (!delayedClose) {
    if (unbounded) {
      b.append("String_Node_Str");
    }
    if (!last)     b.append("String_Node_Str");
  }
  b.append("String_Node_Str");
  writeCardinality(unbounded,b,elem);
  if (!elem.hasFixed()) {
    if (elem.hasBinding() && elem.getBinding().hasValueSet()) {
      ValueSet vs=resolveValueSet(elem.getBinding().getValueSet());
      if (vs != null)       b.append("String_Node_Str" + prefix + vs.getUserData("String_Node_Str")+ "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
 else       if (elem.getBinding().getValueSet() instanceof UriType)       b.append("String_Node_Str" + ((UriType)elem.getBinding().getValueSet()).getValue() + "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
 else       b.append("String_Node_Str" + ((Reference)elem.getBinding().getValueSet()).getReference() + "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
    }
 else     b.append("String_Node_Str" + Utilities.escapeXml(elem.getShort()) + "String_Node_Str");
  }
  b.append("String_Node_Str");
  if (delayedClose) {
    int c=0;
    int l=lastChild(children);
    boolean extDone=false;
    for (    ElementDefinition child : children) {
      if (isExtension(child)) {
        if (!extDone)         generateCoreElemExtension(b,sd.getSnapshot().getElement(),child,children,indent + 1,pathName + "String_Node_Str" + name,false,child.getType().get(0),++c == l,complex);
        extDone=true;
      }
 else       if (child.hasSlicing())       generateCoreElemSliced(b,sd.getSnapshot().getElement(),child,children,indent + 1,pathName + "String_Node_Str" + name,false,child.hasType() ? child.getType().get(0) : null,++c == l,complex);
 else       if (wasSliced(child,children))       ;
 else       if (child.getType().size() == 1 || allTypesAreReference(child))       generateCoreElem(b,elements,child,indent + 1,pathName + "String_Node_Str" + name,false,child.getType().get(0),++c == l,false);
 else {
        if (!"String_Node_Str".equals(child.getMax())) {
          b.append("String_Node_Str" + Utilities.escapeXml(child.getShort()) + "String_Node_Str"+ Integer.toString(child.getType().size())+ "String_Node_Str");
          for (          TypeRefComponent t : child.getType())           generateCoreElem(b,elements,child,indent + 1,pathName + "String_Node_Str" + name,false,t,++c == l,false);
        }
      }
    }
    b.append(indentS);
    b.append("String_Node_Str");
    if (unbounded)     b.append("String_Node_Str");
    if (!last)     b.append("String_Node_Str");
    b.append("String_Node_Str");
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void generateCoreElem(StringBuilder b,List<ElementDefinition> elements,ElementDefinition elem,int indent,String pathName,boolean asValue,TypeRefComponent type,boolean last,boolean complex) throws Exception {
  if (elem.getPath().endsWith("String_Node_Str") && elem.getPath().lastIndexOf('.') > elem.getPath().indexOf('.'))   return;
  if (!complex && elem.getPath().endsWith("String_Node_Str"))   return;
  if (elem.getMax().equals("String_Node_Str"))   return;
  String indentS="String_Node_Str";
  for (int i=0; i < indent; i++) {
    indentS+="String_Node_Str";
  }
  b.append(indentS);
  List<ElementDefinition> children=getChildren(elements,elem);
  String name=tail(elem.getPath());
  String en=asValue ? "String_Node_Str" : name;
  if (en.contains("String_Node_Str"))   en=en.replace("String_Node_Str",upFirst(type.getCode()));
  boolean unbounded=elem.hasBase() && elem.getBase().hasMax() ? elem.getBase().getMax().equals("String_Node_Str") : "String_Node_Str".equals(elem.getMax());
  String defPage=igp.getLinkForProfile(sd,sd.getUrl());
  if (defPage.contains("String_Node_Str"))   defPage=defPage.substring(0,defPage.indexOf("String_Node_Str"));
  b.append("String_Node_Str" + (defPage + "String_Node_Str" + pathName+ "String_Node_Str"+ en) + "String_Node_Str"+ Utilities.escapeXml(getEnhancedDefinition(elem))+ "String_Node_Str"+ en+ "String_Node_Str");
  boolean delayedClose=false;
  if (unbounded)   b.append("String_Node_Str");
  if (type == null || children.size() > 0) {
    assert(children.size() > 0);
    b.append("String_Node_Str");
    delayedClose=true;
  }
 else   if (type.getCode() == null) {
    b.append("String_Node_Str");
  }
 else   if (isPrimitive(type.getCode())) {
    if (!(type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str")))     b.append("String_Node_Str");
    if (elem.hasFixed())     b.append(Utilities.escapeJson(((PrimitiveType)elem.getFixed()).asStringValue()));
 else {
      String l=getSrcFile(type.getCode());
      if (l == null)       b.append("String_Node_Str" + type.getCode() + "String_Node_Str");
 else       b.append("String_Node_Str" + suffix(l,type.getCode()) + "String_Node_Str"+ type.getCode()+ "String_Node_Str");
    }
    if (!(type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str") || type.getCode().equals("String_Node_Str")))     b.append("String_Node_Str");
  }
 else {
    b.append("String_Node_Str");
    b.append("String_Node_Str" + suffix(getSrcFile(type.getCode()),type.getCode()) + "String_Node_Str"+ type.getCode()+ "String_Node_Str");
    if (type.hasProfile()) {
      StructureDefinition tsd=context.fetchResource(StructureDefinition.class,type.getProfile().get(0).getValue());
      if (tsd != null)       b.append("String_Node_Str" + tsd.getUserString("String_Node_Str") + "String_Node_Str"+ tsd.getType()+ "String_Node_Str"+ tsd.getName()+ "String_Node_Str");
 else       b.append("String_Node_Str" + type.getProfile() + "String_Node_Str");
    }
    if (type.hasTargetProfile()) {
      if (type.getTargetProfile().get(0).getValue().startsWith("String_Node_Str")) {
        String t=type.getTargetProfile().get(0).getValue().substring(40);
        if (hasType(t))         b.append("String_Node_Str" + suffix(getSrcFile(t),t) + "String_Node_Str"+ t+ "String_Node_Str");
 else         if (hasResource(t))         b.append("String_Node_Str" + prefix + t.toLowerCase()+ "String_Node_Str"+ t+ "String_Node_Str");
 else         b.append("String_Node_Str" + t + "String_Node_Str");
      }
 else       b.append("String_Node_Str" + type.getTargetProfile() + "String_Node_Str");
    }
    b.append("String_Node_Str");
  }
  if (!delayedClose) {
    if (unbounded) {
      b.append("String_Node_Str");
    }
    if (!last)     b.append("String_Node_Str");
  }
  b.append("String_Node_Str");
  writeCardinality(unbounded,b,elem);
  if (!elem.hasFixed()) {
    if (elem.hasBinding() && elem.getBinding().hasValueSet()) {
      ValueSet vs=resolveValueSet(elem.getBinding().getValueSet());
      if (vs != null)       b.append("String_Node_Str" + prefix + vs.getUserData("String_Node_Str")+ "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
 else       if (elem.getBinding().getValueSet() instanceof UriType)       b.append("String_Node_Str" + ((UriType)elem.getBinding().getValueSet()).getValue() + "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
 else       b.append("String_Node_Str" + ((Reference)elem.getBinding().getValueSet()).getReference() + "String_Node_Str"+ Utilities.escapeXml(elem.getShort())+ "String_Node_Str");
    }
 else     b.append("String_Node_Str" + Utilities.escapeXml(elem.getShort()) + "String_Node_Str");
  }
  b.append("String_Node_Str");
  if (delayedClose) {
    int c=0;
    int l=lastChild(children);
    boolean extDone=false;
    for (    ElementDefinition child : children) {
      if (isExtension(child)) {
        if (!extDone)         generateCoreElemExtension(b,sd.getSnapshot().getElement(),child,children,indent + 1,pathName + "String_Node_Str" + name,false,child.getType().get(0),++c == l,complex);
        extDone=true;
      }
 else       if (child.hasSlicing())       generateCoreElemSliced(b,sd.getSnapshot().getElement(),child,children,indent + 1,pathName + "String_Node_Str" + name,false,child.hasType() ? child.getType().get(0) : null,++c == l,complex);
 else       if (wasSliced(child,children))       ;
 else       if (child.getType().size() == 1 || allTypesAreReference(child))       generateCoreElem(b,elements,child,indent + 1,pathName + "String_Node_Str" + name,false,child.getType().get(0),++c == l,false);
 else {
        if (!"String_Node_Str".equals(child.getMax())) {
          b.append("String_Node_Str" + Utilities.escapeXml(child.getShort()) + "String_Node_Str"+ Integer.toString(child.getType().size())+ "String_Node_Str");
          for (          TypeRefComponent t : child.getType())           generateCoreElem(b,elements,child,indent + 1,pathName + "String_Node_Str" + name,false,t,++c == l,false);
        }
      }
    }
    b.append(indentS);
    b.append("String_Node_Str");
    if (unbounded)     b.append("String_Node_Str");
    if (!last)     b.append("String_Node_Str");
    b.append("String_Node_Str");
  }
}