/**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public InputPin getTarget() {
   if (target != null && target.eIsProxy()) {
     InternalEObject oldTarget = (InternalEObject) target;
     target = (InputPin) eResolveProxy(oldTarget);
     if (target != oldTarget) {
       InternalEObject newTarget = (InternalEObject) target;
       NotificationChain msgs =
           oldTarget.eInverseRemove(
               this, EOPPOSITE_FEATURE_BASE - UMLPackage.SEND_SIGNAL_ACTION__TARGET, null, null);
       if (newTarget.eInternalContainer() == null) {
         msgs =
             newTarget.eInverseAdd(
                 this, EOPPOSITE_FEATURE_BASE - UMLPackage.SEND_SIGNAL_ACTION__TARGET, null, msgs);
       }
       if (msgs != null) msgs.dispatch();
       if (eNotificationRequired())
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 UMLPackage.SEND_SIGNAL_ACTION__TARGET,
                 oldTarget,
                 target));
     }
   }
   return target;
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public Expression getArgument() {
   if (argument != null && argument.eIsProxy()) {
     InternalEObject oldArgument = (InternalEObject) argument;
     argument = (Expression) eResolveProxy(oldArgument);
     if (argument != oldArgument) {
       InternalEObject newArgument = (InternalEObject) argument;
       NotificationChain msgs =
           oldArgument.eInverseRemove(
               this, ExpressionsPackage.EXPRESSION__ARGUMENT_OF, Expression.class, null);
       if (newArgument.eInternalContainer() == null) {
         msgs =
             newArgument.eInverseAdd(
                 this, ExpressionsPackage.EXPRESSION__ARGUMENT_OF, Expression.class, msgs);
       }
       if (msgs != null) msgs.dispatch();
       if (eNotificationRequired())
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 ExpressionsPackage.EXPRESSION_WITH_ARGUMENT__ARGUMENT,
                 oldArgument,
                 argument));
     }
   }
   return argument;
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public R4EFileVersion getFile() {
   if (file != null && file.eIsProxy()) {
     InternalEObject oldFile = (InternalEObject) file;
     file = (R4EFileVersion) eResolveProxy(oldFile);
     if (file != oldFile) {
       InternalEObject newFile = (InternalEObject) file;
       NotificationChain msgs =
           oldFile.eInverseRemove(
               this,
               EOPPOSITE_FEATURE_BASE - RModelPackage.R4E_ANOMALY_TEXT_POSITION__FILE,
               null,
               null);
       if (newFile.eInternalContainer() == null) {
         msgs =
             newFile.eInverseAdd(
                 this,
                 EOPPOSITE_FEATURE_BASE - RModelPackage.R4E_ANOMALY_TEXT_POSITION__FILE,
                 null,
                 msgs);
       }
       if (msgs != null) msgs.dispatch();
       if (eNotificationRequired())
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 RModelPackage.R4E_ANOMALY_TEXT_POSITION__FILE,
                 oldFile,
                 file));
     }
   }
   return file;
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public FunctionSignature getCharacteristicFunction() {
   if (characteristicFunction != null && characteristicFunction.eIsProxy()) {
     InternalEObject oldCharacteristicFunction = (InternalEObject) characteristicFunction;
     characteristicFunction = (FunctionSignature) eResolveProxy(oldCharacteristicFunction);
     if (characteristicFunction != oldCharacteristicFunction) {
       InternalEObject newCharacteristicFunction = (InternalEObject) characteristicFunction;
       NotificationChain msgs =
           oldCharacteristicFunction.eInverseRemove(
               this, ClassesPackage.FUNCTION_SIGNATURE__DIMENSION, FunctionSignature.class, null);
       if (newCharacteristicFunction.eInternalContainer() == null) {
         msgs =
             newCharacteristicFunction.eInverseAdd(
                 this,
                 ClassesPackage.FUNCTION_SIGNATURE__DIMENSION,
                 FunctionSignature.class,
                 msgs);
       }
       if (msgs != null) msgs.dispatch();
       if (eNotificationRequired())
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 AnalyticsPackage.DIMENSION__CHARACTERISTIC_FUNCTION,
                 oldCharacteristicFunction,
                 characteristicFunction));
     }
   }
   return characteristicFunction;
 }
 @Override
 public NotificationChain inverseAdd(E object, NotificationChain notifications) {
   InternalEObject internalEObject = (InternalEObject) object;
   if (hasNavigableInverse()) {
     if (!hasInstanceClass()) {
       return internalEObject.eInverseAdd(
           owner,
           internalEObject.eClass().getFeatureID(getInverseEReference()),
           null,
           notifications);
     } else {
       return internalEObject.eInverseAdd(
           owner, getInverseFeatureID(), getInverseFeatureClass(), notifications);
     }
   } else {
     return internalEObject.eInverseAdd(
         owner, InternalEObject.EOPPOSITE_FEATURE_BASE - getFeatureID(), null, notifications);
   }
 }
  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);
      }
    }
  }