private void adjustTransientOppositeReference( InternalEObject instance, InternalEObject object, EReference oppositeReference) { boolean wasDeliver = object.eDeliver(); // Disable notifications if (wasDeliver) { object.eSetDeliver(false); } try { if (oppositeReference.isMany()) { @SuppressWarnings("unchecked") InternalEList<Object> list = (InternalEList<Object>) object.eGet(oppositeReference); list.basicAdd(instance, null); } else { if (object.eGet(oppositeReference) != instance) { object.eInverseAdd( instance, oppositeReference.getFeatureID(), ((EObject) instance).getClass(), null); } } } finally { if (wasDeliver) { object.eSetDeliver(true); } } }