Program: 44433
Project: 44433
Buggy source:
public void generate(MetaData data){
  String type=getType(data.patternList);
  if (type.length() > 0) {
    type="String_Node_Str" + type + "String_Node_Str"+ type+ "String_Node_Str";
  }
  p("String_Node_Str" + data.name + type+ "String_Node_Str");
  List<MetaData> props=data.properties;
  boolean hasAttribs=false;
  boolean hasElems=false;
  for (  MetaData d : props) {
    hasAttribs=hasAttribs || d.nodeType == MetaData.XML_ATTRIBUTE;
    hasElems=hasElems || d.nodeType == MetaData.XML_ELEMENT;
  }
  if (hasAttribs) {
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    for (    MetaData d : props) {
      if (d.nodeType == MetaData.XML_ATTRIBUTE) {
        p("String_Node_Str" + d.name + "String_Node_Str"+ d.dataType+ "String_Node_Str"+ RNGMetadataAPI.cardinToString(d.min,d.max)+ "String_Node_Str"+ RNGMetadataAPI.listToString(d.choiceList)+ "String_Node_Str");
      }
      ;
    }
    p("String_Node_Str");
    p("String_Node_Str");
  }
  if (hasElems) {
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    for (    MetaData d : props) {
      if (d.nodeType == MetaData.XML_ELEMENT) {
        if (!d.isChoiceGroup) {
          String typeStr="String_Node_Str";
          if (d.patternList.size() > 0) {
            typeStr="String_Node_Str" + getType(d.patternList) + "String_Node_Str"+ getType(d.patternList)+ "String_Node_Str";
          }
          p("String_Node_Str" + d.name + "String_Node_Str"+ typeStr+ "String_Node_Str"+ RNGMetadataAPI.cardinToString(d.min,d.max)+ "String_Node_Str"+ RNGMetadataAPI.listToString(d.choiceList)+ "String_Node_Str");
          ;
        }
 else {
          p("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str" + RNGMetadataAPI.cardinToString(d.min,d.max) + "String_Node_Str"+ RNGMetadataAPI.propertiesToString(d)+ "String_Node_Str");
          ;
        }
      }
    }
    p("String_Node_Str");
    p("String_Node_Str");
  }
  if (data.hasTextNode) {
    p("String_Node_Str");
  }
  p("String_Node_Str" + data.documentation + "String_Node_Str");
}

Fixed version (ground truth):
public void generate(MetaData data){
  String type=getType(data.patternList);
  if (type.length() > 0) {
    type="String_Node_Str" + type + "String_Node_Str"+ type+ "String_Node_Str";
  }
  p("String_Node_Str" + data.name + type+ "String_Node_Str");
  List<MetaData> props=data.properties;
  boolean hasAttribs=false;
  boolean hasElems=false;
  for (  MetaData d : props) {
    hasAttribs=hasAttribs || d.nodeType == MetaData.XML_ATTRIBUTE;
    hasElems=hasElems || d.nodeType == MetaData.XML_ELEMENT;
  }
  if (hasAttribs) {
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    for (    MetaData d : props) {
      if (d.nodeType == MetaData.XML_ATTRIBUTE) {
        p("String_Node_Str" + d.name + "String_Node_Str"+ d.dataType+ "String_Node_Str"+ RNGMetadataAPI.cardinToString(d.min,d.max)+ "String_Node_Str"+ RNGMetadataAPI.listToString(d.choiceList)+ "String_Node_Str");
      }
      ;
    }
    p("String_Node_Str");
    p("String_Node_Str");
  }
  if (hasElems) {
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    p("String_Node_Str");
    for (    MetaData d : props) {
      if (d.nodeType == MetaData.XML_ELEMENT) {
        if (!d.isChoiceGroup) {
          String typeStr="String_Node_Str";
          if (d.patternList.size() > 0) {
            typeStr="String_Node_Str" + getType(d.patternList) + "String_Node_Str"+ getType(d.patternList)+ "String_Node_Str";
          }
          p("String_Node_Str" + d.name + "String_Node_Str"+ typeStr+ "String_Node_Str"+ RNGMetadataAPI.cardinToString(d.min,d.max)+ "String_Node_Str"+ RNGMetadataAPI.listToString(d.choiceList)+ "String_Node_Str");
          ;
        }
 else {
          p("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str" + RNGMetadataAPI.cardinToString(d.min,d.max) + "String_Node_Str"+ (d.properties.size() > 0 ? RNGMetadataAPI.propertiesToString(d) : "String_Node_Str")+ "String_Node_Str");
          ;
        }
      }
    }
    p("String_Node_Str");
    p("String_Node_Str");
  }
  if (data.hasTextNode) {
    p("String_Node_Str" + data.dataType + "String_Node_Str");
  }
  p("String_Node_Str" + data.documentation + "String_Node_Str");
}