gt: 				if (coreType) return getAnyAttribute();
context: /**
   */
  package org.w3._2005._07.scxml.impl;
  
  import java.util.Collection;
  
  import org.eclipse.emf.common.notify.Notification;
  import org.eclipse.emf.common.notify.NotificationChain;
  
  import org.eclipse.emf.common.util.EList;
  
  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.MinimalEObjectImpl;
  
  import org.eclipse.emf.ecore.util.BasicFeatureMap;
  import org.eclipse.emf.ecore.util.FeatureMap;
  import org.eclipse.emf.ecore.util.InternalEList;
  
  import org.w3._2005._07.scxml.ScxmlDonedataType;
  import org.w3._2005._07.scxml.ScxmlFinalType;
  import org.w3._2005._07.scxml.ScxmlOnentryType;
  import org.w3._2005._07.scxml.ScxmlOnexitType;
  import org.w3._2005._07.scxml.ScxmlPackage;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model object '<em><b>Final Type</b></em>'.
   * <!-- end-user-doc -->
   * <p>
   * The following features are implemented:
   * <ul>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getScxmlFinalMix <em>Scxml Final Mix</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getOnentry <em>Onentry</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getOnexit <em>Onexit</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getDonedata <em>Donedata</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getAny <em>Any</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getId <em>Id</em>}</li>
   *   <li>{@link org.w3._2005._07.scxml.impl.ScxmlFinalTypeImpl#getAnyAttribute <em>Any Attribute</em>}</li>
   * </ul>
   * </p>
   *
   * @generated
   */
  public class ScxmlFinalTypeImpl extends MinimalEObjectImpl.Container implements ScxmlFinalType {
  	/**
  	 * The cached value of the '{@link #getScxmlFinalMix() <em>Scxml Final Mix</em>}' attribute list.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getScxmlFinalMix()
  	 * @generated
  	 * @ordered
  	 */
  	protected FeatureMap scxmlFinalMix;
  
  	/**
  	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getId()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final String ID_EDEFAULT = null;
  
  	/**
  	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getId()
  	 * @generated
  	 * @ordered
  	 */
  	protected String id = ID_EDEFAULT;
  
  	/**
  	 * The cached value of the '{@link #getAnyAttribute() <em>Any Attribute</em>}' attribute list.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getAnyAttribute()
  	 * @generated
  	 * @ordered
  	 */
  	protected FeatureMap anyAttribute;
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	protected ScxmlFinalTypeImpl() {
  		super();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	protected EClass eStaticClass() {
  		return ScxmlPackage.Literals.SCXML_FINAL_TYPE;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public FeatureMap getScxmlFinalMix() {
  		if (scxmlFinalMix == null) {
  			scxmlFinalMix = new BasicFeatureMap(this, ScxmlPackage.SCXML_FINAL_TYPE__SCXML_FINAL_MIX);
  		}
  		return scxmlFinalMix;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public EList<ScxmlOnentryType> getOnentry() {
  		return getScxmlFinalMix().list(ScxmlPackage.Literals.SCXML_FINAL_TYPE__ONENTRY);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public EList<ScxmlOnexitType> getOnexit() {
  		return getScxmlFinalMix().list(ScxmlPackage.Literals.SCXML_FINAL_TYPE__ONEXIT);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public EList<ScxmlDonedataType> getDonedata() {
  		return getScxmlFinalMix().list(ScxmlPackage.Literals.SCXML_FINAL_TYPE__DONEDATA);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public FeatureMap getAny() {
  		return (FeatureMap)getScxmlFinalMix().<FeatureMap.Entry>list(ScxmlPackage.Literals.SCXML_FINAL_TYPE__ANY);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public String getId() {
  		return id;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setId(String newId) {
  		String oldId = id;
  		id = newId;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, ScxmlPackage.SCXML_FINAL_TYPE__ID, oldId, id));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public FeatureMap getAnyAttribute() {
  		if (anyAttribute == null) {
  			anyAttribute = new BasicFeatureMap(this, ScxmlPackage.SCXML_FINAL_TYPE__ANY_ATTRIBUTE);
  		}
  		return anyAttribute;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
  		switch (featureID) {
  			case ScxmlPackage.SCXML_FINAL_TYPE__SCXML_FINAL_MIX:
  				return ((InternalEList<?>)getScxmlFinalMix()).basicRemove(otherEnd, msgs);
  			case ScxmlPackage.SCXML_FINAL_TYPE__ONENTRY:
  				return ((InternalEList<?>)getOnentry()).basicRemove(otherEnd, msgs);
  			case ScxmlPackage.SCXML_FINAL_TYPE__ONEXIT:
  				return ((InternalEList<?>)getOnexit()).basicRemove(otherEnd, msgs);
  			case ScxmlPackage.SCXML_FINAL_TYPE__DONEDATA:
  				return ((InternalEList<?>)getDonedata()).basicRemove(otherEnd, msgs);
  			case ScxmlPackage.SCXML_FINAL_TYPE__ANY:
  				return ((InternalEList<?>)getAny()).basicRemove(otherEnd, msgs);
  			case ScxmlPackage.SCXML_FINAL_TYPE__ANY_ATTRIBUTE:
  				return ((InternalEList<?>)getAnyAttribute()).basicRemove(otherEnd, msgs);
  		}
  		return super.eInverseRemove(otherEnd, featureID, msgs);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public Object eGet(int featureID, boolean resolve, boolean coreType) {
  		switch (featureID) {
  			case ScxmlPackage.SCXML_FINAL_TYPE__SCXML_FINAL_MIX:
  				if (coreType) return getScxmlFinalMix();
  				return ((FeatureMap.Internal)getScxmlFinalMix()).getWrapper();
  			case ScxmlPackage.SCXML_FINAL_TYPE__ONENTRY:
  				return getOnentry();
  			case ScxmlPackage.SCXML_FINAL_TYPE__ONEXIT:
  				return getOnexit();
  			case ScxmlPackage.SCXML_FINAL_TYPE__DONEDATA:
  				return getDonedata();
  			case ScxmlPackage.SCXML_FINAL_TYPE__ANY:
  				if (coreType) return getAny();
  				return ((FeatureMap.Internal)getAny()).getWrapper();
  			case ScxmlPackage.SCXML_FINAL_TYPE__ID:
  				return getId();
  			case ScxmlPackage.SCXML_FINAL_TYPE__ANY_ATTRIBUTE:
  