gt: 			refRefName = (EReference)eResolveProxy(oldRefRefName);
context: /**
   */
  package mutatorenvironment.impl;
  
  import mutatorenvironment.AttributeEvaluationType;
  import mutatorenvironment.MutatorenvironmentPackage;
  import mutatorenvironment.ObSelectionStrategy;
  import mutatorenvironment.Operator;
  import mutatorenvironment.ReferenceEvaluation;
  
  import org.eclipse.emf.common.notify.Notification;
  import org.eclipse.emf.common.notify.NotificationChain;
  
  import org.eclipse.emf.ecore.EAttribute;
  import org.eclipse.emf.ecore.EClass;
  import org.eclipse.emf.ecore.EReference;
  import org.eclipse.emf.ecore.InternalEObject;
  
  import org.eclipse.emf.ecore.impl.ENotificationImpl;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model object '<em><b>Reference Evaluation</b></em>'.
   * <!-- end-user-doc -->
   * <p>
   * The following features are implemented:
   * </p>
   * <ul>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getName <em>Name</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getRefName <em>Ref Name</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getRefRefName <em>Ref Ref Name</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getOperator <em>Operator</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getValue <em>Value</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getRefType <em>Ref Type</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getAttName <em>Att Name</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#getAttValue <em>Att Value</em>}</li>
   *   <li>{@link mutatorenvironment.impl.ReferenceEvaluationImpl#isContainer <em>Container</em>}</li>
   * </ul>
   *
   * @generated
   */
  public class ReferenceEvaluationImpl extends EvaluationImpl implements ReferenceEvaluation {
  	/**
  	 * The cached value of the '{@link #getName() <em>Name</em>}' reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getName()
  	 * @generated
  	 * @ordered
  	 */
  	protected EReference name;
  
  	/**
  	 * The cached value of the '{@link #getRefName() <em>Ref Name</em>}' reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getRefName()
  	 * @generated
  	 * @ordered
  	 */
  	protected EReference refName;
  
  	/**
  	 * The cached value of the '{@link #getRefRefName() <em>Ref Ref Name</em>}' reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getRefRefName()
  	 * @generated
  	 * @ordered
  	 */
  	protected EReference refRefName;
  
  	/**
  	 * The default value of the '{@link #getOperator() <em>Operator</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getOperator()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final Operator OPERATOR_EDEFAULT = Operator.EQUALS;
  
  	/**
  	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getOperator()
  	 * @generated
  	 * @ordered
  	 */
  	protected Operator operator = OPERATOR_EDEFAULT;
  
  	/**
  	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getValue()
  	 * @generated
  	 * @ordered
  	 */
  	protected ObSelectionStrategy value;
  
  	/**
  	 * The cached value of the '{@link #getRefType() <em>Ref Type</em>}' reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getRefType()
  	 * @generated
  	 * @ordered
  	 */
  	protected EReference refType;
  
  	/**
  	 * The cached value of the '{@link #getAttName() <em>Att Name</em>}' reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getAttName()
  	 * @generated
  	 * @ordered
  	 */
  	protected EAttribute attName;
  
  	/**
  	 * The cached value of the '{@link #getAttValue() <em>Att Value</em>}' containment reference.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getAttValue()
  	 * @generated
  	 * @ordered
  	 */
  	protected AttributeEvaluationType attValue;
  
  	/**
  	 * The default value of the '{@link #isContainer() <em>Container</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #isContainer()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final boolean CONTAINER_EDEFAULT = false;
  
  	/**
  	 * The cached value of the '{@link #isContainer() <em>Container</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #isContainer()
  	 * @generated
  	 * @ordered
  	 */
  	protected boolean container = CONTAINER_EDEFAULT;
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	protected ReferenceEvaluationImpl() {
  		super();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	protected EClass eStaticClass() {
  		return MutatorenvironmentPackage.Literals.REFERENCE_EVALUATION;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getName() {
  		if (name != null && name.eIsProxy()) {
  			InternalEObject oldName = (InternalEObject)name;
  			name = (EReference)eResolveProxy(oldName);
  			if (name != oldName) {
  				if (eNotificationRequired())
  					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MutatorenvironmentPackage.REFERENCE_EVALUATION__NAME, oldName, name));
  			}
  		}
  		return name;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public EReference basicGetName() {
  		return name;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public void setName(EReference newName) {
  		EReference oldName = name;
  		name = newName;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, MutatorenvironmentPackage.REFERENCE_EVALUATION__NAME, oldName, name));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getRefName() {
  		if (refName != null && refName.eIsProxy()) {
  			InternalEObject oldRefName = (InternalEObject)refName;
  			refName = (EReference)eResolveProxy(oldRefName);
  			if (refName != oldRefName) {
  				if (eNotificationRequired())
  					eNotify(new ENotificationImpl(this, Notification.RESOLVE, MutatorenvironmentPackage.REFERENCE_EVALUATION__REF_NAME, oldRefName, refName));
  			}
  		}
  		return refName;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public EReference basicGetRefName() {
  		return refName;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public void setRefName(EReference newRefName) {
  		EReference oldRefName = refName;
  		refName = newRefName;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, MutatorenvironmentPackage.REFERENCE_EVALUATION__REF_NAME, oldRefName, refName));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getRefRefName() {
  		if (refRefName != null && refRefName.eIsProxy()) {
  			InternalEObject oldRefRefName = (InternalEObject)refRefName;
  