/**
 * generated by Xtext 2.12.0
 */
package com.minres.rdl.rdl.impl;

import com.minres.rdl.rdl.ComponentDefinition;
import com.minres.rdl.rdl.ComponentDefinitionType;
import com.minres.rdl.rdl.ComponentInstance;
import com.minres.rdl.rdl.Concat;
import com.minres.rdl.rdl.ConcatElem;
import com.minres.rdl.rdl.DefaultProperyAssignment;
import com.minres.rdl.rdl.Entity;
import com.minres.rdl.rdl.EnumBody;
import com.minres.rdl.rdl.EnumDefinition;
import com.minres.rdl.rdl.EnumEntry;
import com.minres.rdl.rdl.EnumProperty;
import com.minres.rdl.rdl.ExplicitPropertyAssignment;
import com.minres.rdl.rdl.ImmediateInstantiation;
import com.minres.rdl.rdl.Include;
import com.minres.rdl.rdl.InstancePropertyRef;
import com.minres.rdl.rdl.InstanceRef;
import com.minres.rdl.rdl.NamedInstantiation;
import com.minres.rdl.rdl.PostPropertyAssignment;
import com.minres.rdl.rdl.PropertyAssignment;
import com.minres.rdl.rdl.PropertyAssignmentRhs;
import com.minres.rdl.rdl.PropertyComponent;
import com.minres.rdl.rdl.PropertyDefault;
import com.minres.rdl.rdl.PropertyDefinition;
import com.minres.rdl.rdl.PropertyEnum;
import com.minres.rdl.rdl.PropertyModifier;
import com.minres.rdl.rdl.PropertyTypeName;
import com.minres.rdl.rdl.PropertyUsage;
import com.minres.rdl.rdl.RValue;
import com.minres.rdl.rdl.RValueConstant;
import com.minres.rdl.rdl.Range;
import com.minres.rdl.rdl.RdlFactory;
import com.minres.rdl.rdl.RdlPackage;
import com.minres.rdl.rdl.Root;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class RdlPackageImpl extends EPackageImpl implements RdlPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rootEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass includeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass propertyDefinitionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass propertyDefaultEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass propertyUsageEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentDefinitionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedInstantiationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass immediateInstantiationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentInstanceEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rangeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass propertyAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass defaultProperyAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass explicitPropertyAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass postPropertyAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass instancePropertyRefEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass entityEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass instanceRefEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass propertyAssignmentRhsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass concatEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass concatElemEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumDefinitionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumBodyEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumEntryEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumPropertyEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum propertyTypeNameEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum propertyComponentEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum componentDefinitionTypeEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum propertyEnumEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum rValueConstantEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum propertyModifierEEnum = null;

  /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see com.minres.rdl.rdl.RdlPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private RdlPackageImpl()
  {
    super(eNS_URI, RdlFactory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link RdlPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static RdlPackage init()
  {
    if (isInited) return (RdlPackage)EPackage.Registry.INSTANCE.getEPackage(RdlPackage.eNS_URI);

    // Obtain or create and register package
    RdlPackageImpl theRdlPackage = (RdlPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof RdlPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new RdlPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theRdlPackage.createPackageContents();

    // Initialize created meta-data
    theRdlPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theRdlPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(RdlPackage.eNS_URI, theRdlPackage);
    return theRdlPackage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRoot()
  {
    return rootEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_Includes()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_ComponentDefinitions()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_EnumDefinitions()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_NamedInstantiations()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_PropertyAssignments()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRoot_PropertyDefinitions()
  {
    return (EReference)rootEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInclude()
  {
    return includeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getInclude_ImportURI()
  {
    return (EAttribute)includeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPropertyDefinition()
  {
    return propertyDefinitionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPropertyDefinition_Type()
  {
    return (EAttribute)propertyDefinitionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyDefinition_Usage()
  {
    return (EReference)propertyDefinitionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyDefinition_Default()
  {
    return (EReference)propertyDefinitionEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPropertyDefault()
  {
    return propertyDefaultEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPropertyDefault_String()
  {
    return (EAttribute)propertyDefaultEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPropertyDefault_Value()
  {
    return (EAttribute)propertyDefaultEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPropertyUsage()
  {
    return propertyUsageEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPropertyUsage_Components()
  {
    return (EAttribute)propertyUsageEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentDefinition()
  {
    return componentDefinitionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentDefinition_Type()
  {
    return (EAttribute)componentDefinitionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentDefinition_Name()
  {
    return (EAttribute)componentDefinitionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentDefinition_ComponentDefinitions()
  {
    return (EReference)componentDefinitionEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentDefinition_NamedInstantiations()
  {
    return (EReference)componentDefinitionEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentDefinition_PropertyAssignments()
  {
    return (EReference)componentDefinitionEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentDefinition_EnumDefinitions()
  {
    return (EReference)componentDefinitionEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentDefinition_ImmediateInstantiation()
  {
    return (EReference)componentDefinitionEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedInstantiation()
  {
    return namedInstantiationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedInstantiation_External()
  {
    return (EAttribute)namedInstantiationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedInstantiation_Internal()
  {
    return (EAttribute)namedInstantiationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedInstantiation_Alias()
  {
    return (EAttribute)namedInstantiationEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedInstantiation_Component()
  {
    return (EReference)namedInstantiationEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedInstantiation_ComponentInstances()
  {
    return (EReference)namedInstantiationEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getImmediateInstantiation()
  {
    return immediateInstantiationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getImmediateInstantiation_External()
  {
    return (EAttribute)immediateInstantiationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getImmediateInstantiation_ComponentInstances()
  {
    return (EReference)immediateInstantiationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentInstance()
  {
    return componentInstanceEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentInstance_Range()
  {
    return (EReference)componentInstanceEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentInstance_Reset()
  {
    return (EAttribute)componentInstanceEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentInstance_Address()
  {
    return (EAttribute)componentInstanceEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentInstance_AddrInc()
  {
    return (EAttribute)componentInstanceEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getComponentInstance_AddrMod()
  {
    return (EAttribute)componentInstanceEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRange()
  {
    return rangeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRange_Start()
  {
    return (EAttribute)rangeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRange_End()
  {
    return (EAttribute)rangeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRange_Size()
  {
    return (EAttribute)rangeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPropertyAssignment()
  {
    return propertyAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDefaultProperyAssignment()
  {
    return defaultProperyAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExplicitPropertyAssignment()
  {
    return explicitPropertyAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getExplicitPropertyAssignment_Modifier()
  {
    return (EAttribute)explicitPropertyAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getExplicitPropertyAssignment_Name()
  {
    return (EAttribute)explicitPropertyAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExplicitPropertyAssignment_Rhs()
  {
    return (EReference)explicitPropertyAssignmentEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPostPropertyAssignment()
  {
    return postPropertyAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPostPropertyAssignment_Instance()
  {
    return (EReference)postPropertyAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPostPropertyAssignment_PropertyEnum()
  {
    return (EAttribute)postPropertyAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPostPropertyAssignment_Property()
  {
    return (EReference)postPropertyAssignmentEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPostPropertyAssignment_Rhs()
  {
    return (EReference)postPropertyAssignmentEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInstancePropertyRef()
  {
    return instancePropertyRefEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getInstancePropertyRef_Instance()
  {
    return (EReference)instancePropertyRefEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getInstancePropertyRef_PropertyEnum()
  {
    return (EAttribute)instancePropertyRefEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getInstancePropertyRef_Property()
  {
    return (EReference)instancePropertyRefEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEntity()
  {
    return entityEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEntity_Name()
  {
    return (EAttribute)entityEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInstanceRef()
  {
    return instanceRefEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getInstanceRef_Instance()
  {
    return (EReference)instanceRefEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getInstanceRef_Tail()
  {
    return (EReference)instanceRefEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPropertyAssignmentRhs()
  {
    return propertyAssignmentRhsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyAssignmentRhs_Value()
  {
    return (EReference)propertyAssignmentRhsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyAssignmentRhs_InstPropRef()
  {
    return (EReference)propertyAssignmentRhsEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyAssignmentRhs_EnumRef()
  {
    return (EReference)propertyAssignmentRhsEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyAssignmentRhs_Enums()
  {
    return (EReference)propertyAssignmentRhsEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPropertyAssignmentRhs_Elements()
  {
    return (EReference)propertyAssignmentRhsEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConcat()
  {
    return concatEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConcat_Elements()
  {
    return (EReference)concatEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConcatElem()
  {
    return concatElemEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConcatElem_InstPropRef()
  {
    return (EReference)concatElemEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getConcatElem_Value()
  {
    return (EAttribute)concatElemEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRValue()
  {
    return rValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRValue_Val()
  {
    return (EAttribute)rValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRValue_Num()
  {
    return (EAttribute)rValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRValue_Str()
  {
    return (EAttribute)rValueEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumDefinition()
  {
    return enumDefinitionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumDefinition_Body()
  {
    return (EReference)enumDefinitionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumBody()
  {
    return enumBodyEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumBody_Entries()
  {
    return (EReference)enumBodyEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumEntry()
  {
    return enumEntryEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumEntry_Name()
  {
    return (EAttribute)enumEntryEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumEntry_Index()
  {
    return (EAttribute)enumEntryEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumEntry_Properties()
  {
    return (EReference)enumEntryEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumProperty()
  {
    return enumPropertyEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumProperty_Name()
  {
    return (EAttribute)enumPropertyEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumProperty_Value()
  {
    return (EAttribute)enumPropertyEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getPropertyTypeName()
  {
    return propertyTypeNameEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getPropertyComponent()
  {
    return propertyComponentEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getComponentDefinitionType()
  {
    return componentDefinitionTypeEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getPropertyEnum()
  {
    return propertyEnumEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getRValueConstant()
  {
    return rValueConstantEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getPropertyModifier()
  {
    return propertyModifierEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public RdlFactory getRdlFactory()
  {
    return (RdlFactory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    rootEClass = createEClass(ROOT);
    createEReference(rootEClass, ROOT__INCLUDES);
    createEReference(rootEClass, ROOT__COMPONENT_DEFINITIONS);
    createEReference(rootEClass, ROOT__ENUM_DEFINITIONS);
    createEReference(rootEClass, ROOT__NAMED_INSTANTIATIONS);
    createEReference(rootEClass, ROOT__PROPERTY_ASSIGNMENTS);
    createEReference(rootEClass, ROOT__PROPERTY_DEFINITIONS);

    includeEClass = createEClass(INCLUDE);
    createEAttribute(includeEClass, INCLUDE__IMPORT_URI);

    propertyDefinitionEClass = createEClass(PROPERTY_DEFINITION);
    createEAttribute(propertyDefinitionEClass, PROPERTY_DEFINITION__TYPE);
    createEReference(propertyDefinitionEClass, PROPERTY_DEFINITION__USAGE);
    createEReference(propertyDefinitionEClass, PROPERTY_DEFINITION__DEFAULT);

    propertyDefaultEClass = createEClass(PROPERTY_DEFAULT);
    createEAttribute(propertyDefaultEClass, PROPERTY_DEFAULT__STRING);
    createEAttribute(propertyDefaultEClass, PROPERTY_DEFAULT__VALUE);

    propertyUsageEClass = createEClass(PROPERTY_USAGE);
    createEAttribute(propertyUsageEClass, PROPERTY_USAGE__COMPONENTS);

    componentDefinitionEClass = createEClass(COMPONENT_DEFINITION);
    createEAttribute(componentDefinitionEClass, COMPONENT_DEFINITION__TYPE);
    createEAttribute(componentDefinitionEClass, COMPONENT_DEFINITION__NAME);
    createEReference(componentDefinitionEClass, COMPONENT_DEFINITION__COMPONENT_DEFINITIONS);
    createEReference(componentDefinitionEClass, COMPONENT_DEFINITION__NAMED_INSTANTIATIONS);
    createEReference(componentDefinitionEClass, COMPONENT_DEFINITION__PROPERTY_ASSIGNMENTS);
    createEReference(componentDefinitionEClass, COMPONENT_DEFINITION__ENUM_DEFINITIONS);
    createEReference(componentDefinitionEClass, COMPONENT_DEFINITION__IMMEDIATE_INSTANTIATION);

    namedInstantiationEClass = createEClass(NAMED_INSTANTIATION);
    createEAttribute(namedInstantiationEClass, NAMED_INSTANTIATION__EXTERNAL);
    createEAttribute(namedInstantiationEClass, NAMED_INSTANTIATION__INTERNAL);
    createEAttribute(namedInstantiationEClass, NAMED_INSTANTIATION__ALIAS);
    createEReference(namedInstantiationEClass, NAMED_INSTANTIATION__COMPONENT);
    createEReference(namedInstantiationEClass, NAMED_INSTANTIATION__COMPONENT_INSTANCES);

    immediateInstantiationEClass = createEClass(IMMEDIATE_INSTANTIATION);
    createEAttribute(immediateInstantiationEClass, IMMEDIATE_INSTANTIATION__EXTERNAL);
    createEReference(immediateInstantiationEClass, IMMEDIATE_INSTANTIATION__COMPONENT_INSTANCES);

    componentInstanceEClass = createEClass(COMPONENT_INSTANCE);
    createEReference(componentInstanceEClass, COMPONENT_INSTANCE__RANGE);
    createEAttribute(componentInstanceEClass, COMPONENT_INSTANCE__RESET);
    createEAttribute(componentInstanceEClass, COMPONENT_INSTANCE__ADDRESS);
    createEAttribute(componentInstanceEClass, COMPONENT_INSTANCE__ADDR_INC);
    createEAttribute(componentInstanceEClass, COMPONENT_INSTANCE__ADDR_MOD);

    rangeEClass = createEClass(RANGE);
    createEAttribute(rangeEClass, RANGE__START);
    createEAttribute(rangeEClass, RANGE__END);
    createEAttribute(rangeEClass, RANGE__SIZE);

    propertyAssignmentEClass = createEClass(PROPERTY_ASSIGNMENT);

    defaultProperyAssignmentEClass = createEClass(DEFAULT_PROPERY_ASSIGNMENT);

    explicitPropertyAssignmentEClass = createEClass(EXPLICIT_PROPERTY_ASSIGNMENT);
    createEAttribute(explicitPropertyAssignmentEClass, EXPLICIT_PROPERTY_ASSIGNMENT__MODIFIER);
    createEAttribute(explicitPropertyAssignmentEClass, EXPLICIT_PROPERTY_ASSIGNMENT__NAME);
    createEReference(explicitPropertyAssignmentEClass, EXPLICIT_PROPERTY_ASSIGNMENT__RHS);

    postPropertyAssignmentEClass = createEClass(POST_PROPERTY_ASSIGNMENT);
    createEReference(postPropertyAssignmentEClass, POST_PROPERTY_ASSIGNMENT__INSTANCE);
    createEAttribute(postPropertyAssignmentEClass, POST_PROPERTY_ASSIGNMENT__PROPERTY_ENUM);
    createEReference(postPropertyAssignmentEClass, POST_PROPERTY_ASSIGNMENT__PROPERTY);
    createEReference(postPropertyAssignmentEClass, POST_PROPERTY_ASSIGNMENT__RHS);

    instancePropertyRefEClass = createEClass(INSTANCE_PROPERTY_REF);
    createEReference(instancePropertyRefEClass, INSTANCE_PROPERTY_REF__INSTANCE);
    createEAttribute(instancePropertyRefEClass, INSTANCE_PROPERTY_REF__PROPERTY_ENUM);
    createEReference(instancePropertyRefEClass, INSTANCE_PROPERTY_REF__PROPERTY);

    entityEClass = createEClass(ENTITY);
    createEAttribute(entityEClass, ENTITY__NAME);

    instanceRefEClass = createEClass(INSTANCE_REF);
    createEReference(instanceRefEClass, INSTANCE_REF__INSTANCE);
    createEReference(instanceRefEClass, INSTANCE_REF__TAIL);

    propertyAssignmentRhsEClass = createEClass(PROPERTY_ASSIGNMENT_RHS);
    createEReference(propertyAssignmentRhsEClass, PROPERTY_ASSIGNMENT_RHS__VALUE);
    createEReference(propertyAssignmentRhsEClass, PROPERTY_ASSIGNMENT_RHS__INST_PROP_REF);
    createEReference(propertyAssignmentRhsEClass, PROPERTY_ASSIGNMENT_RHS__ENUM_REF);
    createEReference(propertyAssignmentRhsEClass, PROPERTY_ASSIGNMENT_RHS__ENUMS);
    createEReference(propertyAssignmentRhsEClass, PROPERTY_ASSIGNMENT_RHS__ELEMENTS);

    concatEClass = createEClass(CONCAT);
    createEReference(concatEClass, CONCAT__ELEMENTS);

    concatElemEClass = createEClass(CONCAT_ELEM);
    createEReference(concatElemEClass, CONCAT_ELEM__INST_PROP_REF);
    createEAttribute(concatElemEClass, CONCAT_ELEM__VALUE);

    rValueEClass = createEClass(RVALUE);
    createEAttribute(rValueEClass, RVALUE__VAL);
    createEAttribute(rValueEClass, RVALUE__NUM);
    createEAttribute(rValueEClass, RVALUE__STR);

    enumDefinitionEClass = createEClass(ENUM_DEFINITION);
    createEReference(enumDefinitionEClass, ENUM_DEFINITION__BODY);

    enumBodyEClass = createEClass(ENUM_BODY);
    createEReference(enumBodyEClass, ENUM_BODY__ENTRIES);

    enumEntryEClass = createEClass(ENUM_ENTRY);
    createEAttribute(enumEntryEClass, ENUM_ENTRY__NAME);
    createEAttribute(enumEntryEClass, ENUM_ENTRY__INDEX);
    createEReference(enumEntryEClass, ENUM_ENTRY__PROPERTIES);

    enumPropertyEClass = createEClass(ENUM_PROPERTY);
    createEAttribute(enumPropertyEClass, ENUM_PROPERTY__NAME);
    createEAttribute(enumPropertyEClass, ENUM_PROPERTY__VALUE);

    // Create enums
    propertyTypeNameEEnum = createEEnum(PROPERTY_TYPE_NAME);
    propertyComponentEEnum = createEEnum(PROPERTY_COMPONENT);
    componentDefinitionTypeEEnum = createEEnum(COMPONENT_DEFINITION_TYPE);
    propertyEnumEEnum = createEEnum(PROPERTY_ENUM);
    rValueConstantEEnum = createEEnum(RVALUE_CONSTANT);
    propertyModifierEEnum = createEEnum(PROPERTY_MODIFIER);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    propertyDefinitionEClass.getESuperTypes().add(this.getEntity());
    componentInstanceEClass.getESuperTypes().add(this.getEntity());
    defaultProperyAssignmentEClass.getESuperTypes().add(this.getPropertyAssignment());
    explicitPropertyAssignmentEClass.getESuperTypes().add(this.getPropertyAssignment());
    explicitPropertyAssignmentEClass.getESuperTypes().add(this.getDefaultProperyAssignment());
    postPropertyAssignmentEClass.getESuperTypes().add(this.getPropertyAssignment());
    enumDefinitionEClass.getESuperTypes().add(this.getEntity());

    // Initialize classes and features; add operations and parameters
    initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRoot_Includes(), this.getInclude(), null, "includes", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_ComponentDefinitions(), this.getComponentDefinition(), null, "componentDefinitions", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_EnumDefinitions(), this.getEnumDefinition(), null, "enumDefinitions", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_NamedInstantiations(), this.getNamedInstantiation(), null, "namedInstantiations", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_PropertyAssignments(), this.getPropertyAssignment(), null, "propertyAssignments", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_PropertyDefinitions(), this.getPropertyDefinition(), null, "propertyDefinitions", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(includeEClass, Include.class, "Include", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getInclude_ImportURI(), ecorePackage.getEString(), "importURI", null, 0, 1, Include.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(propertyDefinitionEClass, PropertyDefinition.class, "PropertyDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPropertyDefinition_Type(), this.getPropertyTypeName(), "type", null, 0, 1, PropertyDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyDefinition_Usage(), this.getPropertyUsage(), null, "usage", null, 0, 1, PropertyDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyDefinition_Default(), this.getPropertyDefault(), null, "default", null, 0, 1, PropertyDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(propertyDefaultEClass, PropertyDefault.class, "PropertyDefault", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPropertyDefault_String(), ecorePackage.getEString(), "string", null, 0, 1, PropertyDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPropertyDefault_Value(), ecorePackage.getEJavaObject(), "value", null, 0, 1, PropertyDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(propertyUsageEClass, PropertyUsage.class, "PropertyUsage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPropertyUsage_Components(), this.getPropertyComponent(), "components", null, 0, -1, PropertyUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentDefinitionEClass, ComponentDefinition.class, "ComponentDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getComponentDefinition_Type(), this.getComponentDefinitionType(), "type", null, 0, 1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getComponentDefinition_Name(), ecorePackage.getEString(), "name", null, 0, 1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getComponentDefinition_ComponentDefinitions(), this.getComponentDefinition(), null, "componentDefinitions", null, 0, -1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getComponentDefinition_NamedInstantiations(), this.getNamedInstantiation(), null, "namedInstantiations", null, 0, -1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getComponentDefinition_PropertyAssignments(), this.getPropertyAssignment(), null, "propertyAssignments", null, 0, -1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getComponentDefinition_EnumDefinitions(), this.getEnumDefinition(), null, "enumDefinitions", null, 0, -1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getComponentDefinition_ImmediateInstantiation(), this.getImmediateInstantiation(), null, "immediateInstantiation", null, 0, 1, ComponentDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(namedInstantiationEClass, NamedInstantiation.class, "NamedInstantiation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNamedInstantiation_External(), ecorePackage.getEBoolean(), "external", null, 0, 1, NamedInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNamedInstantiation_Internal(), ecorePackage.getEBoolean(), "internal", null, 0, 1, NamedInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNamedInstantiation_Alias(), ecorePackage.getEString(), "alias", null, 0, 1, NamedInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedInstantiation_Component(), this.getComponentDefinition(), null, "component", null, 0, 1, NamedInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedInstantiation_ComponentInstances(), this.getComponentInstance(), null, "componentInstances", null, 0, -1, NamedInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(immediateInstantiationEClass, ImmediateInstantiation.class, "ImmediateInstantiation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getImmediateInstantiation_External(), ecorePackage.getEBoolean(), "external", null, 0, 1, ImmediateInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getImmediateInstantiation_ComponentInstances(), this.getComponentInstance(), null, "componentInstances", null, 0, -1, ImmediateInstantiation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentInstanceEClass, ComponentInstance.class, "ComponentInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getComponentInstance_Range(), this.getRange(), null, "range", null, 0, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getComponentInstance_Reset(), ecorePackage.getEJavaObject(), "reset", null, 0, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getComponentInstance_Address(), ecorePackage.getEJavaObject(), "address", null, 0, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getComponentInstance_AddrInc(), ecorePackage.getEJavaObject(), "addrInc", null, 0, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getComponentInstance_AddrMod(), ecorePackage.getEJavaObject(), "addrMod", null, 0, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(rangeEClass, Range.class, "Range", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRange_Start(), ecorePackage.getEJavaObject(), "start", null, 0, 1, Range.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRange_End(), ecorePackage.getEJavaObject(), "end", null, 0, 1, Range.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRange_Size(), ecorePackage.getEJavaObject(), "size", null, 0, 1, Range.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(propertyAssignmentEClass, PropertyAssignment.class, "PropertyAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(defaultProperyAssignmentEClass, DefaultProperyAssignment.class, "DefaultProperyAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(explicitPropertyAssignmentEClass, ExplicitPropertyAssignment.class, "ExplicitPropertyAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getExplicitPropertyAssignment_Modifier(), this.getPropertyModifier(), "modifier", null, 0, 1, ExplicitPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getExplicitPropertyAssignment_Name(), this.getPropertyEnum(), "name", null, 0, 1, ExplicitPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExplicitPropertyAssignment_Rhs(), this.getPropertyAssignmentRhs(), null, "rhs", null, 0, 1, ExplicitPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(postPropertyAssignmentEClass, PostPropertyAssignment.class, "PostPropertyAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPostPropertyAssignment_Instance(), this.getInstanceRef(), null, "instance", null, 0, 1, PostPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPostPropertyAssignment_PropertyEnum(), this.getPropertyEnum(), "propertyEnum", null, 0, 1, PostPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPostPropertyAssignment_Property(), this.getPropertyDefinition(), null, "property", null, 0, 1, PostPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPostPropertyAssignment_Rhs(), this.getPropertyAssignmentRhs(), null, "rhs", null, 0, 1, PostPropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(instancePropertyRefEClass, InstancePropertyRef.class, "InstancePropertyRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getInstancePropertyRef_Instance(), this.getInstanceRef(), null, "instance", null, 0, 1, InstancePropertyRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getInstancePropertyRef_PropertyEnum(), this.getPropertyEnum(), "propertyEnum", null, 0, 1, InstancePropertyRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInstancePropertyRef_Property(), this.getPropertyDefinition(), null, "property", null, 0, 1, InstancePropertyRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(entityEClass, Entity.class, "Entity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getEntity_Name(), ecorePackage.getEString(), "name", null, 0, 1, Entity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(instanceRefEClass, InstanceRef.class, "InstanceRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getInstanceRef_Instance(), this.getEntity(), null, "instance", null, 0, 1, InstanceRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInstanceRef_Tail(), this.getInstanceRef(), null, "tail", null, 0, 1, InstanceRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(propertyAssignmentRhsEClass, PropertyAssignmentRhs.class, "PropertyAssignmentRhs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPropertyAssignmentRhs_Value(), this.getRValue(), null, "value", null, 0, 1, PropertyAssignmentRhs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyAssignmentRhs_InstPropRef(), this.getInstancePropertyRef(), null, "instPropRef", null, 0, 1, PropertyAssignmentRhs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyAssignmentRhs_EnumRef(), this.getEnumDefinition(), null, "enumRef", null, 0, 1, PropertyAssignmentRhs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyAssignmentRhs_Enums(), this.getEnumBody(), null, "enums", null, 0, 1, PropertyAssignmentRhs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPropertyAssignmentRhs_Elements(), this.getConcat(), null, "elements", null, 0, 1, PropertyAssignmentRhs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(concatEClass, Concat.class, "Concat", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getConcat_Elements(), this.getConcatElem(), null, "elements", null, 0, -1, Concat.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(concatElemEClass, ConcatElem.class, "ConcatElem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getConcatElem_InstPropRef(), this.getInstancePropertyRef(), null, "instPropRef", null, 0, 1, ConcatElem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getConcatElem_Value(), ecorePackage.getEJavaObject(), "value", null, 0, 1, ConcatElem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(rValueEClass, RValue.class, "RValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRValue_Val(), this.getRValueConstant(), "val", null, 0, 1, RValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRValue_Num(), ecorePackage.getEJavaObject(), "num", null, 0, 1, RValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRValue_Str(), ecorePackage.getEString(), "str", null, 0, 1, RValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumDefinitionEClass, EnumDefinition.class, "EnumDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getEnumDefinition_Body(), this.getEnumBody(), null, "body", null, 0, 1, EnumDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumBodyEClass, EnumBody.class, "EnumBody", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getEnumBody_Entries(), this.getEnumEntry(), null, "entries", null, 0, -1, EnumBody.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumEntryEClass, EnumEntry.class, "EnumEntry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getEnumEntry_Name(), ecorePackage.getEString(), "name", null, 0, 1, EnumEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getEnumEntry_Index(), ecorePackage.getEJavaObject(), "index", null, 0, 1, EnumEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEnumEntry_Properties(), this.getEnumProperty(), null, "properties", null, 0, -1, EnumEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumPropertyEClass, EnumProperty.class, "EnumProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getEnumProperty_Name(), ecorePackage.getEString(), "name", null, 0, 1, EnumProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getEnumProperty_Value(), ecorePackage.getEString(), "value", null, 0, 1, EnumProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Initialize enums and add enum literals
    initEEnum(propertyTypeNameEEnum, PropertyTypeName.class, "PropertyTypeName");
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.STRING);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.NUMBER);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.BOOLEAN);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.ADDRMAP);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.REG);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.REGFILE);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.FIELD);
    addEEnumLiteral(propertyTypeNameEEnum, PropertyTypeName.REF);

    initEEnum(propertyComponentEEnum, PropertyComponent.class, "PropertyComponent");
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.SIGNAL);
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.ADDRMAP);
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.REG);
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.REGFILE);
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.FIELD);
    addEEnumLiteral(propertyComponentEEnum, PropertyComponent.ALL);

    initEEnum(componentDefinitionTypeEEnum, ComponentDefinitionType.class, "ComponentDefinitionType");
    addEEnumLiteral(componentDefinitionTypeEEnum, ComponentDefinitionType.SIGNAL);
    addEEnumLiteral(componentDefinitionTypeEEnum, ComponentDefinitionType.ADDRMAP);
    addEEnumLiteral(componentDefinitionTypeEEnum, ComponentDefinitionType.REGFILE);
    addEEnumLiteral(componentDefinitionTypeEEnum, ComponentDefinitionType.REG);
    addEEnumLiteral(componentDefinitionTypeEEnum, ComponentDefinitionType.FIELD);

    initEEnum(propertyEnumEEnum, PropertyEnum.class, "PropertyEnum");
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.UNSPECIFIED);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.NAME);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DESC);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ARBITER);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RSET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RCLR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.WOCLR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.WOSET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.WE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.WEL);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SWWE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SWWEL);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HWSET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HWCLR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SWMOD);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SWACC);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.STICKY);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.STICKYBIT);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.INTR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ANDED);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ORED);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.XORED);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.COUNTER);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.OVERFLOW);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SHAREDEXTBUS);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ERREXTBUS);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RESET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.LITTLEENDIAN);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.BIGENDIAN);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RSVDSET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RSVDSETX);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.BRIDGE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SHARED);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.MSB0);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.LSB0);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SYNC);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ASYNC);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.CPUIF_RESET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.FIELD_RESET);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ACTIVEHIGH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ACTIVELOW);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SINGLEPULSE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.UNDERFLOW);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.INCR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DECR);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.INCRWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DECRWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.INCRVALUE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DECRVALUE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SATURATE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DECRSATURATE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.THRESHOLD);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DECRTHRESHOLD);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DONTCOMPARE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.DONTTEST);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.INTERNAL);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ALIGNMENT);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.REGWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.FIELDWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SIGNALWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ACCESSWIDTH);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.SW);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HW);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ADDRESSING);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.PRECEDENCE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ENCODE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.RESETSIGNAL);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.CLOCK);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.MASK);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.ENABLE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HWENABLE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HWMASK);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HALTMASK);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HALTENABLE);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.HALT);
    addEEnumLiteral(propertyEnumEEnum, PropertyEnum.NEXT);

    initEEnum(rValueConstantEEnum, RValueConstant.class, "RValueConstant");
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.UNDEFINED);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.TRUE);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.FALSE);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.RW);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.WR);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.R);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.W);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.NA);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.COMPACT);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.REGALIGN);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.FULLALIGN);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.HW);
    addEEnumLiteral(rValueConstantEEnum, RValueConstant.SW);

    initEEnum(propertyModifierEEnum, PropertyModifier.class, "PropertyModifier");
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.UNDEFINED);
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.POSEDGE);
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.NEGEDGE);
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.BOTHEDGE);
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.LEVEL);
    addEEnumLiteral(propertyModifierEEnum, PropertyModifier.NONSTICKY);

    // Create resource
    createResource(eNS_URI);
  }

} //RdlPackageImpl
