Program: 66599
Project: 66599
Buggy source:
public void processChild(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts,XMLDescriptor xmlDescriptor,DatabaseMapping mapping) throws SAXException {
  if (xmlDescriptor == null) {
    DescriptorNotFoundContentHandler handler=new DescriptorNotFoundContentHandler(unmarshalRecord,mapping);
    String qnameString=xPathFragment.getLocalName();
    if (xPathFragment.getPrefix() != null) {
      qnameString=xPathFragment.getPrefix() + XMLConstants.COLON + qnameString;
    }
    handler.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),qnameString,atts);
    XMLReader xmlReader=unmarshalRecord.getXMLReader();
    xmlReader.setContentHandler(handler);
    xmlReader.setLexicalHandler(handler);
    return;
  }
  if (xmlDescriptor.hasInheritance()) {
    unmarshalRecord.setAttributes(atts);
    Class classValue=xmlDescriptor.getInheritancePolicy().classFromRow(unmarshalRecord,unmarshalRecord.getSession());
    if (classValue == null) {
      QName leafElementType=unmarshalRecord.getLeafElementType();
      if (leafElementType != null) {
        Object indicator=xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
        if (indicator == null) {
          throw DescriptorException.missingClassForIndicatorFieldValue(leafElementType,xmlDescriptor.getInheritancePolicy().getDescriptor());
        }
        classValue=(Class)indicator;
      }
    }
    if (classValue != null) {
      xmlDescriptor=(XMLDescriptor)unmarshalRecord.getSession().getDescriptor(classValue);
    }
 else {
      if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
        throw DescriptorException.missingClassIndicatorField(unmarshalRecord,xmlDescriptor.getInheritancePolicy().getDescriptor());
      }
    }
  }
  TreeObjectBuilder targetObjectBuilder=(TreeObjectBuilder)xmlDescriptor.getObjectBuilder();
  UnmarshalRecord childRecord=unmarshalRecord.getChildUnmarshalRecord(targetObjectBuilder);
  unmarshalRecord.setChildRecord(childRecord);
  childRecord.setAttributes(atts);
  childRecord.startDocument();
  childRecord.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),xPathFragment.getShortName(),atts);
  unmarshalRecord.getXMLReader().setContentHandler(unmarshalRecord.getChildRecord());
  try {
    unmarshalRecord.getXMLReader().setProperty("String_Node_Str",unmarshalRecord.getChildRecord());
  }
 catch (  SAXNotRecognizedException ex) {
  }
catch (  SAXNotSupportedException ex) {
  }
}

Fixed version (ground truth):
public void processChild(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts,XMLDescriptor xmlDescriptor,DatabaseMapping mapping) throws SAXException {
  if (xmlDescriptor == null) {
    DescriptorNotFoundContentHandler handler=new DescriptorNotFoundContentHandler(unmarshalRecord,mapping);
    String qnameString=xPathFragment.getLocalName();
    if (xPathFragment.getPrefix() != null) {
      qnameString=xPathFragment.getPrefix() + XMLConstants.COLON + qnameString;
    }
    handler.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),qnameString,atts);
    XMLReader xmlReader=unmarshalRecord.getXMLReader();
    xmlReader.setContentHandler(handler);
    xmlReader.setLexicalHandler(handler);
    return;
  }
  if (xmlDescriptor.hasInheritance()) {
    unmarshalRecord.setAttributes(atts);
    Class classValue=xmlDescriptor.getInheritancePolicy().classFromRow(unmarshalRecord,unmarshalRecord.getSession());
    if (classValue == null) {
      QName leafElementType=unmarshalRecord.getLeafElementType();
      if (leafElementType != null) {
        Object indicator=xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
        if (indicator == null) {
          throw DescriptorException.missingClassForIndicatorFieldValue(leafElementType,xmlDescriptor.getInheritancePolicy().getDescriptor());
        }
        classValue=(Class)indicator;
      }
    }
    if (classValue != null) {
      xmlDescriptor=(XMLDescriptor)unmarshalRecord.getSession().getDescriptor(classValue);
    }
 else {
      if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
        throw DescriptorException.missingClassIndicatorField(unmarshalRecord,xmlDescriptor.getInheritancePolicy().getDescriptor());
      }
    }
  }
  TreeObjectBuilder targetObjectBuilder=(TreeObjectBuilder)xmlDescriptor.getObjectBuilder();
  UnmarshalRecord childRecord=unmarshalRecord.getChildUnmarshalRecord(targetObjectBuilder);
  unmarshalRecord.setChildRecord(childRecord);
  childRecord.setAttributes(atts);
  childRecord.startDocument();
  childRecord.initializeRecord(null);
  childRecord.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),xPathFragment.getShortName(),atts);
  unmarshalRecord.getXMLReader().setContentHandler(unmarshalRecord.getChildRecord());
  try {
    unmarshalRecord.getXMLReader().setProperty("String_Node_Str",unmarshalRecord.getChildRecord());
  }
 catch (  SAXNotRecognizedException ex) {
  }
catch (  SAXNotSupportedException ex) {
  }
}