Program: 67095
Project: 67095
Buggy source:
public void setInternal(SDOProperty property,Object value,boolean updateSequence) throws UnsupportedOperationException, IllegalArgumentException {
  if (null == getType()) {
    throw new UnsupportedOperationException("String_Node_Str");
  }
  if (property.isOpenContent() && !getType().isOpen()) {
    throw new IllegalArgumentException("String_Node_Str" + this + "String_Node_Str"+ property.getName());
  }
  Object oldValue=get(property);
  boolean wasSet=isSet(property);
  if (wasSet && (oldValue == value)) {
    return;
  }
 else {
    _setModified(true);
  }
  if (property.isMany()) {
    List listValue;
    if (null == value) {
      listValue=new ListWrapper(this,property);
    }
 else {
      try {
        listValue=(List)value;
      }
 catch (      ClassCastException e) {
        throw new IllegalArgumentException("String_Node_Str");
      }
    }
    if (property.isContainment() || isContainedByDataGraph(property)) {
      for (      Object next : listValue) {
        if (next instanceof SDODataObject) {
          if (parentContains((SDODataObject)next)) {
            throw new IllegalArgumentException("String_Node_Str");
          }
        }
      }
    }
    ListWrapper oldValueListWrapper=(ListWrapper)oldValue;
    oldValueListWrapper.clear(updateSequence);
    oldValueListWrapper.addAll((Collection)value,updateSequence);
  }
 else {
    if (property.isContainment() || isContainedByDataGraph(property)) {
      if (parentContains(value)) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      if (null != oldValue) {
        detach(property,oldValue);
      }
      SDODataObject dataObjectValue=(SDODataObject)value;
      if (dataObjectValue != null) {
        updateContainment(property,dataObjectValue);
      }
    }
    setPropertyInternal(property,value,updateSequence);
  }
  if (getType().isOpen() && property.isOpenContent()) {
    addOpenContentProperty(property);
  }
}

Fixed version (ground truth):
public void setInternal(SDOProperty property,Object value,boolean updateSequence) throws UnsupportedOperationException, IllegalArgumentException {
  if (null == getType()) {
    throw new UnsupportedOperationException("String_Node_Str");
  }
  if (property.isOpenContent() && !getType().isOpen()) {
    throw new IllegalArgumentException("String_Node_Str" + this + "String_Node_Str"+ property.getName());
  }
  Object oldValue=get(property);
  boolean wasSet=isSet(property);
  if (wasSet && (oldValue == value)) {
    return;
  }
 else {
    _setModified(true);
  }
  if (property.isMany()) {
    List listValue;
    if (null == value) {
      listValue=new ListWrapper(this,property);
    }
 else {
      try {
        listValue=(List)value;
      }
 catch (      ClassCastException e) {
        throw new IllegalArgumentException("String_Node_Str");
      }
    }
    if (property.isContainment() || isContainedByDataGraph(property)) {
      for (      Object next : listValue) {
        if (next instanceof SDODataObject) {
          if (parentContains(next)) {
            throw new IllegalArgumentException("String_Node_Str");
          }
        }
      }
    }
    ListWrapper oldValueListWrapper=(ListWrapper)oldValue;
    oldValueListWrapper.clear(updateSequence);
    oldValueListWrapper.addAll((Collection)value,updateSequence);
  }
 else {
    if (property.isContainment() || isContainedByDataGraph(property)) {
      if (parentContains(value)) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      if (null != oldValue) {
        detach(property,oldValue);
      }
      SDODataObject dataObjectValue=(SDODataObject)value;
      if (dataObjectValue != null) {
        updateContainment(property,dataObjectValue);
      }
    }
    setPropertyInternal(property,value,updateSequence);
  }
  if (getType().isOpen() && property.isOpenContent()) {
    addOpenContentProperty(property);
  }
}