Program: 65809
Project: 65809
Buggy source:
public void setupInheritance(SDOType parentType){
  if (parentType == null) {
    addClassIndicator(getXmlDescriptor(),getImplClass(),true);
  }
 else {
    if ((parentType.getURI() != null) && (!parentType.getURI().equals(SDOConstants.SDO_URL))) {
      if (!parentType.getXmlDescriptor().hasInheritance()) {
        addClassIndicator(parentType.getXmlDescriptor(),parentType.getImplClass(),false);
      }
      XMLDescriptor parentDescriptor=(XMLDescriptor)parentType.getXmlDescriptor().getInheritancePolicy().getRootParentDescriptor();
      NamespaceResolver parentNR=parentDescriptor.getNonNullNamespaceResolver();
      if (parentNR != null) {
        for (int i=0; i < parentNR.getNamespaces().size(); i++) {
          Namespace nextNamespace=(Namespace)parentNR.getNamespaces().get(i);
          if ((!nextNamespace.getPrefix().equals(XMLConstants.XMLNS)) && (!nextNamespace.getNamespaceURI().equals(XMLConstants.SCHEMA_URL)) && (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDOJAVA_URL))&& (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDOXML_URL))&& (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDO_URL))) {
            getXmlDescriptor().getNonNullNamespaceResolver().put(nextNamespace.getPrefix(),nextNamespace.getNamespaceURI());
          }
        }
      }
      if (getInstanceClassName() != null) {
        String indicator=getName();
        String prefix=parentDescriptor.getNamespaceResolver().resolveNamespaceURI(getURI());
        if (prefix == null) {
          prefix=getXmlDescriptor().getNamespaceResolver().resolveNamespaceURI(getURI());
          if (prefix != null) {
            parentDescriptor.getNamespaceResolver().put(prefix,getURI());
          }
        }
        if (prefix != null) {
          indicator=prefix + SDOConstants.SDO_XPATH_NS_SEPARATOR_FRAGMENT + indicator;
        }
        Class implClass=getImplClass();
        parentDescriptor.getInheritancePolicy().addClassIndicator(implClass,indicator);
        parentDescriptor.getInheritancePolicy().setShouldReadSubclasses(true);
        Class parentClass=parentType.getImplClass();
        getXmlDescriptor().getInheritancePolicy().setParentClass(parentClass);
        getXmlDescriptor().getInheritancePolicy().setParentDescriptor(parentType.getXmlDescriptor());
        parentType.getXmlDescriptor().getNamespaceResolver().put(XMLConstants.SCHEMA_INSTANCE_PREFIX,XMLConstants.SCHEMA_INSTANCE_URL);
        getXmlDescriptor().getNamespaceResolver().put(XMLConstants.SCHEMA_INSTANCE_PREFIX,XMLConstants.SCHEMA_INSTANCE_URL);
      }
    }
  }
  for (int i=0; i < subTypes.size(); i++) {
    SDOType nextSubType=(SDOType)subTypes.get(i);
    if (!nextSubType.isDataType() && nextSubType.isSubType()) {
      nextSubType.setupInheritance(this);
    }
  }
}

Fixed version (ground truth):
public void setupInheritance(SDOType parentType){
  if (parentType == null) {
    addClassIndicator(getXmlDescriptor(),getImplClass(),true);
  }
 else {
    if ((parentType.getURI() != null) && (!parentType.getURI().equals(SDOConstants.SDO_URL))) {
      if (!parentType.getXmlDescriptor().hasInheritance()) {
        addClassIndicator(parentType.getXmlDescriptor(),parentType.getImplClass(),false);
      }
      XMLDescriptor parentDescriptor=(XMLDescriptor)parentType.getXmlDescriptor().getInheritancePolicy().getRootParentDescriptor();
      NamespaceResolver parentNR=parentDescriptor.getNonNullNamespaceResolver();
      if (parentNR != null) {
        for (int i=0; i < parentNR.getNamespaces().size(); i++) {
          Namespace nextNamespace=(Namespace)parentNR.getNamespaces().get(i);
          if ((!nextNamespace.getPrefix().equals(XMLConstants.XMLNS)) && (!nextNamespace.getNamespaceURI().equals(XMLConstants.SCHEMA_URL)) && (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDOJAVA_URL))&& (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDOXML_URL))&& (!nextNamespace.getNamespaceURI().equals(SDOConstants.SDO_URL))) {
            getXmlDescriptor().getNonNullNamespaceResolver().put(nextNamespace.getPrefix(),nextNamespace.getNamespaceURI());
          }
        }
      }
      if (getInstanceClassName() != null) {
        String indicator=getName();
        String prefix=parentDescriptor.getNamespaceResolver().resolveNamespaceURI(getURI());
        if (prefix == null) {
          prefix=getXmlDescriptor().getNamespaceResolver().resolveNamespaceURI(getURI());
          if (prefix != null) {
            parentDescriptor.getNamespaceResolver().put(prefix,getURI());
          }
        }
        if (prefix != null) {
          indicator=prefix + SDOConstants.SDO_XPATH_NS_SEPARATOR_FRAGMENT + indicator;
        }
        Class implClass=getImplClass();
        parentDescriptor.getInheritancePolicy().addClassIndicator(implClass,indicator);
        parentDescriptor.getInheritancePolicy().setShouldReadSubclasses(true);
        Class parentClass=parentType.getImplClass();
        getXmlDescriptor().getInheritancePolicy().setParentClass(parentClass);
        getXmlDescriptor().getInheritancePolicy().setParentDescriptor(parentType.getXmlDescriptor());
        parentType.getXmlDescriptor().getNamespaceResolver().put(XMLConstants.SCHEMA_INSTANCE_PREFIX,XMLConstants.SCHEMA_INSTANCE_URL);
        getXmlDescriptor().getNamespaceResolver().put(XMLConstants.SCHEMA_INSTANCE_PREFIX,XMLConstants.SCHEMA_INSTANCE_URL);
      }
    }
  }
  if (isBaseType()) {
    for (int i=0; i < subTypes.size(); i++) {
      SDOType nextSubType=(SDOType)subTypes.get(i);
      if (!nextSubType.isDataType() && nextSubType.isSubType()) {
        nextSubType.setupInheritance(this);
      }
    }
  }
}