gt: 		else if (eNotificationRequired())
context: /**
   * <copyright>
   * </copyright>
   *
   * $Id$
   */
  package grl.impl;
  
  import grl.Evaluation;
  import grl.EvaluationRange;
  import grl.GrlPackage;
  
  import org.eclipse.emf.common.notify.Notification;
  import org.eclipse.emf.common.notify.NotificationChain;
  
  import org.eclipse.emf.ecore.EClass;
  import org.eclipse.emf.ecore.InternalEObject;
  
  import org.eclipse.emf.ecore.impl.ENotificationImpl;
  import org.eclipse.emf.ecore.impl.EObjectImpl;
  
  import org.eclipse.emf.ecore.util.EcoreUtil;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model object '<em><b>Evaluation Range</b></em>'.
   * <!-- end-user-doc -->
   * <p>
   * The following features are implemented:
   * <ul>
   *   <li>{@link grl.impl.EvaluationRangeImpl#getStart <em>Start</em>}</li>
   *   <li>{@link grl.impl.EvaluationRangeImpl#getEnd <em>End</em>}</li>
   *   <li>{@link grl.impl.EvaluationRangeImpl#getStep <em>Step</em>}</li>
   *   <li>{@link grl.impl.EvaluationRangeImpl#getEval <em>Eval</em>}</li>
   * </ul>
   * </p>
   *
   * @generated
   */
  public class EvaluationRangeImpl extends EObjectImpl implements EvaluationRange {
  	/**
  	 * The default value of the '{@link #getStart() <em>Start</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getStart()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final int START_EDEFAULT = 0;
  
  	/**
  	 * The cached value of the '{@link #getStart() <em>Start</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getStart()
  	 * @generated
  	 * @ordered
  	 */
  	protected int start = START_EDEFAULT;
  
  	/**
  	 * The default value of the '{@link #getEnd() <em>End</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getEnd()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final int END_EDEFAULT = 0;
  
  	/**
  	 * The cached value of the '{@link #getEnd() <em>End</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getEnd()
  	 * @generated
  	 * @ordered
  	 */
  	protected int end = END_EDEFAULT;
  
  	/**
  	 * The default value of the '{@link #getStep() <em>Step</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getStep()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final int STEP_EDEFAULT = 1;
  
  	/**
  	 * The cached value of the '{@link #getStep() <em>Step</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getStep()
  	 * @generated
  	 * @ordered
  	 */
  	protected int step = STEP_EDEFAULT;
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	protected EvaluationRangeImpl() {
  		super();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	protected EClass eStaticClass() {
  		return GrlPackage.Literals.EVALUATION_RANGE;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public int getStart() {
  		return start;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setStart(int newStart) {
  		int oldStart = start;
  		start = newStart;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, GrlPackage.EVALUATION_RANGE__START, oldStart, start));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public int getEnd() {
  		return end;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setEnd(int newEnd) {
  		int oldEnd = end;
  		end = newEnd;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, GrlPackage.EVALUATION_RANGE__END, oldEnd, end));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public int getStep() {
  		return step;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setStep(int newStep) {
  		int oldStep = step;
  		step = newStep;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, GrlPackage.EVALUATION_RANGE__STEP, oldStep, step));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public Evaluation getEval() {
  		if (eContainerFeatureID() != GrlPackage.EVALUATION_RANGE__EVAL) return null;
  		return (Evaluation)eContainer();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public NotificationChain basicSetEval(Evaluation newEval, NotificationChain msgs) {
  		msgs = eBasicSetContainer((InternalEObject)newEval, GrlPackage.EVALUATION_RANGE__EVAL, msgs);
  		return msgs;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setEval(Evaluation newEval) {
  		if (newEval != eInternalContainer() || (eContainerFeatureID() != GrlPackage.EVALUATION_RANGE__EVAL && newEval != null)) {
  			if (EcoreUtil.isAncestor(this, newEval))
  				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
  			NotificationChain msgs = null;
  			if (eInternalContainer() != null)
  				msgs = eBasicRemoveFromContainer(msgs);
  			if (newEval != null)
  				msgs = ((InternalEObject)newEval).eInverseAdd(this, GrlPackage.EVALUATION__EVAL_RANGE, Evaluation.class, msgs);
  			msgs = basicSetEval(newEval, msgs);
  			if (msgs != null) msgs.dispatch();
  		}
  