InternalEObject.EOPPOSITE_FEATURE_BASE - feature.getFeatureID(),
InternalEObject.EOPPOSITE_FEATURE_BASE - owner.eClass().getFeatureID(feature),
    public void dynamicSet(InternalEObject owner, EStructuralFeature.Internal.DynamicValueHolder settings, int index, Object newValue)    {      Object oldValue = settings.dynamicGet(index);      boolean oldIsSet = oldValue != null;      if (isUnsettable() && oldValue == NIL)      {        oldValue = null;      }      NotificationChain notifications = null;      if (hasInverse())      {        if (oldValue != newValue)        {          if (oldValue != null)          {            InternalEObject internalEObject = (InternalEObject)oldValue;            notifications =               internalEObject.eInverseRemove                (owner,                 internalEObject.eClass().getFeatureID(inverseFeature),                 null,                 notifications);          }          if (newValue != null)          {            InternalEObject internalEObject = (InternalEObject)newValue;            notifications =              internalEObject.eInverseAdd                (owner,                 internalEObject.eClass().getFeatureID(inverseFeature),                 null,                 notifications);          }        }      }      else if (isContainment())      {        if (oldValue != newValue)        {          if (oldValue != null)          {            notifications =               ((InternalEObject)oldValue).eInverseRemove                (owner,                 InternalEObject.EOPPOSITE_FEATURE_BASE - feature.getFeatureID(),                 null,                 notifications);          }          if (newValue != null)          {            notifications =               ((InternalEObject)newValue).eInverseAdd                (owner,                 InternalEObject.EOPPOSITE_FEATURE_BASE - feature.getFeatureID(),                 null,                 notifications);          }        }      }      if (newValue == null && isUnsettable())      {        settings.dynamicSet(index, NIL);      }      else      {        settings.dynamicSet(index, newValue);      }      if (owner.eNotificationRequired())      {        Notification notification =           new ENotificationImpl            (owner,              Notification.SET,              feature,             oldValue,              newValue,             isUnsettable() && !oldIsSet);        if (notifications == null)        {          owner.eNotify(notification);        }        else        {          notifications.add(notification);          notifications.dispatch();        }      }      else if (notifications != null)      {        notifications.dispatch();      }    }