Program: 64305
Project: 64305
Buggy source:
public void processChild(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts,Descriptor xmlDescriptor,Mapping mapping) throws SAXException {
  if (xmlDescriptor == null) {
    DescriptorNotFoundContentHandler handler=new DescriptorNotFoundContentHandler(unmarshalRecord,mapping);
    String qnameString=xPathFragment.getLocalName();
    if (xPathFragment.getPrefix() != null) {
      qnameString=xPathFragment.getPrefix() + Constants.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);
    CoreAbstractSession session=unmarshalRecord.getSession();
    Class classValue=xmlDescriptor.getInheritancePolicy().classFromRow(new org.eclipse.persistence.oxm.record.UnmarshalRecord(unmarshalRecord),session);
    if (classValue == null) {
      XPathQName leafElementType=unmarshalRecord.getLeafElementType();
      if (leafElementType != null) {
        Object indicator=xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
        if (indicator != null) {
          classValue=(Class)indicator;
        }
      }
    }
    if (classValue != null) {
      xmlDescriptor=(Descriptor)session.getDescriptor(classValue);
    }
 else {
      if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
        throw DescriptorException.missingClassIndicatorField(unmarshalRecord,(org.eclipse.persistence.oxm.XMLDescriptor)xmlDescriptor.getInheritancePolicy().getDescriptor());
      }
    }
  }
  ObjectBuilder targetObjectBuilder=(ObjectBuilder)xmlDescriptor.getObjectBuilder();
  UnmarshalRecord childRecord=unmarshalRecord.getChildUnmarshalRecord(targetObjectBuilder);
  childRecord.setAttributes(atts);
  childRecord.startDocument();
  childRecord.initializeRecord((Mapping)null);
  childRecord.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),xPathFragment.getShortName(),atts);
  XMLReader xmlReader=unmarshalRecord.getXMLReader();
  xmlReader.setContentHandler(childRecord);
  xmlReader.setLexicalHandler(childRecord);
}

Fixed version (ground truth):
public void processChild(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts,Descriptor xmlDescriptor,Mapping mapping) throws SAXException {
  if (xmlDescriptor == null) {
    DescriptorNotFoundContentHandler handler=new DescriptorNotFoundContentHandler(unmarshalRecord,mapping);
    String qnameString=xPathFragment.getLocalName();
    if (xPathFragment.getPrefix() != null) {
      qnameString=xPathFragment.getPrefix() + Constants.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);
    CoreAbstractSession session=unmarshalRecord.getSession();
    Class classValue=((ObjectBuilder)xmlDescriptor.getObjectBuilder()).classFromRow(unmarshalRecord,session);
    if (classValue == null) {
      XPathQName leafElementType=unmarshalRecord.getLeafElementType();
      if (leafElementType != null) {
        Object indicator=xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
        if (indicator != null) {
          classValue=(Class)indicator;
        }
      }
    }
    if (classValue != null) {
      xmlDescriptor=(Descriptor)session.getDescriptor(classValue);
    }
 else {
      if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
        throw DescriptorException.missingClassIndicatorField(unmarshalRecord,(org.eclipse.persistence.oxm.XMLDescriptor)xmlDescriptor.getInheritancePolicy().getDescriptor());
      }
    }
  }
  ObjectBuilder targetObjectBuilder=(ObjectBuilder)xmlDescriptor.getObjectBuilder();
  UnmarshalRecord childRecord=unmarshalRecord.getChildUnmarshalRecord(targetObjectBuilder);
  childRecord.setAttributes(atts);
  childRecord.startDocument();
  childRecord.initializeRecord((Mapping)null);
  childRecord.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),xPathFragment.getShortName(),atts);
  XMLReader xmlReader=unmarshalRecord.getXMLReader();
  xmlReader.setContentHandler(childRecord);
  xmlReader.setLexicalHandler(childRecord);
}