Program: 68074
Project: 68074
Buggy source:
private void processNonRoot(String namespaceURI,String localName,String qName,Attributes atts) throws SAXException {
  DataObject owner=(DataObject)currentDataObjects.peek();
  if ((owner != null) && !owner.getType().isOpen()) {
    return;
  }
  Property globalProperty=aHelperContext.getXSDHelper().getGlobalProperty(namespaceURI,localName,true);
  if (globalProperty != null) {
    currentProperties.push(globalProperty);
    SDOType theType=((SDOType)globalProperty.getType());
    if (globalProperty.getType().isDataType()) {
      depth++;
    }
 else {
      XMLDescriptor xmlDescriptor=theType.getXmlDescriptor();
      giveToOXToProcess(namespaceURI,localName,qName,atts,xmlDescriptor);
    }
  }
 else {
    String typeName=localName;
    String typeUri=namespaceURI;
    QName typeAttribute=getTypeAttributeQName(atts);
    Type newType=null;
    if (typeAttribute != null) {
      typeName=typeAttribute.getLocalPart();
      typeUri=typeAttribute.getNamespaceURI();
      newType=aHelperContext.getTypeHelper().getType(typeUri,typeName);
    }
    if (newType == null) {
      newType=aHelperContext.getTypeHelper().getType(SDOConstants.ORACLE_SDO_URL,"String_Node_Str");
      Property property=defineNewSDOProperty(namespaceURI,localName,true,newType);
      DataObject newDO=aHelperContext.getDataFactory().create(newType);
      processAttributes(atts,newDO,false);
      currentDataObjects.push(newDO);
      depth++;
      parentRecord.setCurrentObject(newDO);
      currentProperties.push(property);
    }
 else {
      XMLDescriptor xmlDescriptor=((SDOType)newType).getXmlDescriptor();
      giveToOXToProcess(namespaceURI,localName,qName,atts,xmlDescriptor);
      Property property=defineNewSDOProperty(namespaceURI,localName,true,newType);
      currentProperties.push(property);
      return;
    }
  }
}

Fixed version (ground truth):
private void processNonRoot(String namespaceURI,String localName,String qName,Attributes atts) throws SAXException {
  DataObject owner=(DataObject)currentDataObjects.peek();
  if ((owner != null) && !owner.getType().isOpen()) {
    return;
  }
  Property globalProperty=aHelperContext.getXSDHelper().getGlobalProperty(namespaceURI,localName,true);
  if (globalProperty != null) {
    currentProperties.push(globalProperty);
    SDOType theType=((SDOType)globalProperty.getType());
    if (globalProperty.getType().isDataType()) {
      depth++;
    }
 else {
      XMLDescriptor xmlDescriptor=theType.getXmlDescriptor();
      giveToOXToProcess(namespaceURI,localName,qName,atts,xmlDescriptor);
    }
  }
 else {
    String typeName=localName;
    String typeUri=namespaceURI;
    QName typeAttribute=getTypeAttributeQName(atts);
    Type newType=null;
    if (typeAttribute != null) {
      typeName=typeAttribute.getLocalPart();
      typeUri=typeAttribute.getNamespaceURI();
      newType=aHelperContext.getTypeHelper().getType(typeUri,typeName);
    }
    if (newType == null) {
      newType=aHelperContext.getTypeHelper().getType(SDOConstants.ORACLE_SDO_URL,"String_Node_Str");
      Type dataObjectType=aHelperContext.getTypeHelper().getType(SDOConstants.SDO_URL,"String_Node_Str");
      Property property=defineNewSDOProperty(namespaceURI,localName,true,dataObjectType);
      DataObject newDO=aHelperContext.getDataFactory().create(newType);
      processAttributes(atts,newDO,false);
      currentDataObjects.push(newDO);
      depth++;
      parentRecord.setCurrentObject(newDO);
      currentProperties.push(property);
    }
 else {
      XMLDescriptor xmlDescriptor=((SDOType)newType).getXmlDescriptor();
      giveToOXToProcess(namespaceURI,localName,qName,atts,xmlDescriptor);
      Property property=defineNewSDOProperty(namespaceURI,localName,true,newType);
      currentProperties.push(property);
      return;
    }
  }
}