Program: 68056
Project: 68056
Buggy source:
private SDOProperty buildPropertyFromDataObject(DataObject dataObject,Type containingType,List types){
  String nameValue=dataObject.getString("String_Node_Str");
  Object typeObjectValue=dataObject.get("String_Node_Str");
  SDOProperty newProperty=new SDOProperty(aHelperContext);
  newProperty.setName(nameValue);
  Type typeValue=(Type)getValueFromObject(typeObjectValue,types);
  newProperty.setType(typeValue);
  if (typeValue != null) {
    if (typeValue == SDOConstants.SDO_BYTES) {
      newProperty.setXsdType(XMLConstants.BASE_64_BINARY_QNAME);
    }
 else     if (typeValue.isDataType()) {
      if (isBaseTypeBytes(typeValue)) {
        newProperty.setXsdType(XMLConstants.BASE_64_BINARY_QNAME);
      }
    }
  }
  if (dataObject.isSet("String_Node_Str")) {
    newProperty.setContainment(dataObject.getBoolean("String_Node_Str"));
  }
 else {
    if (typeValue != null) {
      newProperty.setContainment(!typeValue.isDataType());
    }
  }
  newProperty.setReadOnly(dataObject.getBoolean("String_Node_Str"));
  newProperty.setMany(dataObject.getBoolean("String_Node_Str"));
  newProperty.setNullable(dataObject.getBoolean("String_Node_Str"));
  List aliasNames=dataObject.getList("String_Node_Str");
  for (int i=0; i < aliasNames.size(); i++) {
    Object aliasName=aliasNames.get(i);
    newProperty.getAliasNames().add(aliasName);
  }
  Object opposite=dataObject.get("String_Node_Str");
  if (opposite != null) {
    if (opposite instanceof Property) {
      newProperty.setOpposite((Property)opposite);
    }
  }
  if (dataObject.isSet("String_Node_Str")) {
    newProperty.setDefault(dataObject.get("String_Node_Str"));
  }
  List openProps=((SDODataObject)dataObject)._getOpenContentProperties();
  for (int i=0; i < openProps.size(); i++) {
    SDOProperty nextProp=(SDOProperty)openProps.get(i);
    Object value=getValueFromObject(dataObject.get(nextProp),types);
    newProperty.setInstanceProperty(nextProp,value);
  }
  List openPropsAttrs=((SDODataObject)dataObject)._getOpenContentPropertiesAttributes();
  for (int i=0; i < openPropsAttrs.size(); i++) {
    SDOProperty nextProp=(SDOProperty)openPropsAttrs.get(i);
    Object value=getValueFromObject(dataObject.get(nextProp),types);
    newProperty.setInstanceProperty(nextProp,value);
  }
  if (newProperty.getType() == null) {
    throw SDOException.noTypeSpecifiedForProperty(newProperty.getName());
  }
  if (containingType != null) {
    ((SDOType)containingType).addDeclaredProperty(newProperty);
    if (aHelperContext.getXSDHelper().isElement(newProperty) || newProperty.getType().isChangeSummaryType()) {
      newProperty.setNamespaceQualified(true);
    }
    newProperty.buildMapping(containingType.getURI());
  }
  return newProperty;
}

Fixed version (ground truth):
private SDOProperty buildPropertyFromDataObject(DataObject dataObject,Type containingType,List types){
  String nameValue=dataObject.getString("String_Node_Str");
  Object typeObjectValue=dataObject.get("String_Node_Str");
  SDOProperty newProperty=new SDOProperty(aHelperContext);
  newProperty.setName(nameValue);
  Type typeValue=(Type)getValueFromObject(typeObjectValue,types);
  newProperty.setType(typeValue);
  if (typeValue != null) {
    if (typeValue == SDOConstants.SDO_BYTES) {
      newProperty.setXsdType(XMLConstants.BASE_64_BINARY_QNAME);
    }
 else     if (typeValue.isDataType()) {
      if (isBaseTypeBytes(typeValue)) {
        newProperty.setXsdType(XMLConstants.BASE_64_BINARY_QNAME);
      }
    }
  }
  if (dataObject.isSet("String_Node_Str")) {
    newProperty.setContainment(dataObject.getBoolean("String_Node_Str"));
  }
 else {
    if (typeValue != null) {
      newProperty.setContainment(!typeValue.isDataType());
    }
  }
  newProperty.setReadOnly(dataObject.getBoolean("String_Node_Str"));
  newProperty.setMany(dataObject.getBoolean("String_Node_Str"));
  newProperty.setNullable(dataObject.getBoolean("String_Node_Str"));
  List aliasNames=dataObject.getList("String_Node_Str");
  for (int i=0; i < aliasNames.size(); i++) {
    Object aliasName=aliasNames.get(i);
    newProperty.getAliasNames().add(aliasName);
  }
  Object opposite=dataObject.get("String_Node_Str");
  if (opposite != null) {
    if (opposite instanceof SDOProperty) {
      newProperty.setOpposite((SDOProperty)opposite);
      ((SDOProperty)opposite).setOpposite(newProperty);
    }
 else     if (opposite instanceof DataObject) {
      SDOProperty prop=(SDOProperty)typeValue.getProperty(((DataObject)opposite).getString("String_Node_Str"));
      if (prop != null) {
        newProperty.setOpposite(prop);
        prop.setOpposite(newProperty);
      }
    }
  }
  if (dataObject.isSet("String_Node_Str")) {
    newProperty.setDefault(dataObject.get("String_Node_Str"));
  }
  List openProps=((SDODataObject)dataObject)._getOpenContentProperties();
  for (int i=0; i < openProps.size(); i++) {
    SDOProperty nextProp=(SDOProperty)openProps.get(i);
    Object value=getValueFromObject(dataObject.get(nextProp),types);
    newProperty.setInstanceProperty(nextProp,value);
  }
  List openPropsAttrs=((SDODataObject)dataObject)._getOpenContentPropertiesAttributes();
  for (int i=0; i < openPropsAttrs.size(); i++) {
    SDOProperty nextProp=(SDOProperty)openPropsAttrs.get(i);
    Object value=getValueFromObject(dataObject.get(nextProp),types);
    newProperty.setInstanceProperty(nextProp,value);
  }
  if (newProperty.getType() == null) {
    throw SDOException.noTypeSpecifiedForProperty(newProperty.getName());
  }
  if (containingType != null) {
    ((SDOType)containingType).addDeclaredProperty(newProperty);
    if (aHelperContext.getXSDHelper().isElement(newProperty) || newProperty.getType().isChangeSummaryType()) {
      newProperty.setNamespaceQualified(true);
    }
    newProperty.buildMapping(containingType.getURI());
  }
  return newProperty;
}