InternalEObject.EOPPOSITE_FEATURE_BASE - feature.getFeatureID(),
InternalEObject.EOPPOSITE_FEATURE_BASE - owner.eClass().getFeatureID(feature),
    public NotificationChain dynamicInverseAdd      (InternalEObject owner, EStructuralFeature.Internal.DynamicValueHolder settings, int index, InternalEObject otherEnd, NotificationChain notifications)    {      Object oldValue = settings.dynamicGet(index);      if (oldValue == NIL)      {        oldValue = null;      }      if (hasInverse())      {        if (oldValue != otherEnd && oldValue != null)        {          InternalEObject internalEObject = (InternalEObject)oldValue;          notifications =             internalEObject.eInverseRemove              (owner,               internalEObject.eClass().getFeatureID(inverseFeature),               null,               notifications);        }      }      else if (isContainment())      {        if (oldValue != null)        {          notifications =             ((InternalEObject)oldValue).eInverseRemove              (owner,               InternalEObject.EOPPOSITE_FEATURE_BASE - feature.getFeatureID(),               null,               notifications);        }      }      settings.dynamicSet(index, otherEnd);      if (owner.eNotificationRequired())      {        if (notifications == null) notifications = new NotificationChainImpl(4);        notifications.add          (new ENotificationImpl             (owner,               Notification.SET,               feature,              oldValue,               otherEnd));      }      return notifications;    }