newValues = newValues != null ? newValues : NSArray.EmptyArray;
if (realSourceObject instanceof EOEnterpriseObject && // only add/remove if we have an EO and handle a relationship
((EOEnterpriseObject) realSourceObject).classDescriptionForDestinationKey(realRelationshipKey) != null) {
EOEnterpriseObject eo = (EOEnterpriseObject) realSourceObject;
NSArray currentValues = (NSArray) eo.valueForKey(realRelationshipKey);
currentValues = currentValues != null ? currentValues : NSArray.EmptyArray;
for (int i = currentValues.count() - 1; i >= 0; i--) {
EOEnterpriseObject o = (EOEnterpriseObject) currentValues.objectAtIndex(i);
if (newValues.indexOfIdenticalObject(o) == NSArray.NotFound) { // not found