{
    if (eOpposite != null && eOpposite.eIsProxy())
    {
      InternalEObject oldEOpposite = (InternalEObject)eOpposite;
      eOpposite = (EReference)eResolveProxy(oldEOpposite);
      if (eOpposite != oldEOpposite)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, EcorePackage.EREFERENCE__EOPPOSITE, oldEOpposite, eOpposite));
      }
    }
    return eOpposite;
  }