/**
   * 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);

    // Obtain other dependent packages
    XMLTypePackage theXMLTypePackage =
        (XMLTypePackage) EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes

    // Initialize classes and features; add operations and parameters
    initEClass(
        componentEClass,
        Component.class,
        "Component",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getComponent_Mixed(),
        ecorePackage.getEFeatureMapEntry(),
        "mixed",
        null,
        0,
        -1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Enabled(),
        ecorePackage.getEBoolean(),
        "enabled",
        "true",
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Factory(),
        ecorePackage.getEString(),
        "factory",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Immediate(),
        ecorePackage.getEBoolean(),
        "immediate",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Name(),
        ecorePackage.getEString(),
        "name",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Activate(),
        ecorePackage.getEString(),
        "activate",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Deactivate(),
        ecorePackage.getEString(),
        "deactivate",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_Modified(),
        ecorePackage.getEString(),
        "modified",
        null,
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_ConfigurationPolicy(),
        this.getConfigurationPolicy(),
        "configurationPolicy",
        "optional",
        0,
        1,
        Component.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getComponent_Implementation(),
        this.getImplementation(),
        null,
        "implementation",
        null,
        1,
        1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getComponent_AllProperties(),
        ecorePackage.getEFeatureMapEntry(),
        "allProperties",
        null,
        0,
        -1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getComponent_Property(),
        this.getProperty(),
        null,
        "property",
        null,
        0,
        -1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getComponent_Properties(),
        this.getProperties(),
        null,
        "properties",
        null,
        0,
        -1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getComponent_Service(),
        this.getService(),
        null,
        "service",
        null,
        0,
        1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getComponent_Reference(),
        this.getReference(),
        null,
        "reference",
        null,
        0,
        -1,
        Component.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        implementationEClass,
        Implementation.class,
        "Implementation",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getImplementation_Class(),
        ecorePackage.getEString(),
        "class",
        null,
        1,
        1,
        Implementation.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        propertyEClass,
        Property.class,
        "Property",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getProperty_Value(),
        theXMLTypePackage.getString(),
        "value",
        null,
        0,
        1,
        Property.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getProperty_Name(),
        theXMLTypePackage.getString(),
        "name",
        null,
        1,
        1,
        Property.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getProperty_Type(),
        this.getJavaType(),
        "type",
        "String",
        0,
        1,
        Property.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getProperty_Value1(),
        theXMLTypePackage.getString(),
        "value1",
        null,
        0,
        1,
        Property.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        propertiesEClass,
        Properties.class,
        "Properties",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getProperties_Entry(),
        ecorePackage.getEString(),
        "entry",
        null,
        1,
        1,
        Properties.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        serviceEClass,
        Service.class,
        "Service",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getService_Provide(),
        this.getProvide(),
        null,
        "provide",
        null,
        1,
        -1,
        Service.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getService_Servicefactory(),
        theXMLTypePackage.getBoolean(),
        "servicefactory",
        "false",
        0,
        1,
        Service.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        provideEClass,
        Provide.class,
        "Provide",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    EGenericType g1 = createEGenericType(ecorePackage.getEJavaClass());
    EGenericType g2 = createEGenericType();
    g1.getETypeArguments().add(g2);
    initEAttribute(
        getProvide_Interface(),
        g1,
        "interface",
        null,
        1,
        1,
        Provide.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        referenceEClass,
        Reference.class,
        "Reference",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getReference_Bind(),
        ecorePackage.getEString(),
        "bind",
        null,
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Cardinality(),
        this.getCardinality(),
        "cardinality",
        "1..1",
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Interface(),
        ecorePackage.getEString(),
        "interface",
        null,
        1,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Name(),
        ecorePackage.getEString(),
        "name",
        null,
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Policy(),
        this.getPolicy(),
        "policy",
        "static",
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Target(),
        theXMLTypePackage.getString(),
        "target",
        null,
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getReference_Unbind(),
        ecorePackage.getEString(),
        "unbind",
        null,
        0,
        1,
        Reference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    // Initialize enums and add enum literals
    initEEnum(policyEEnum, Policy.class, "Policy");
    addEEnumLiteral(policyEEnum, Policy.STATIC);
    addEEnumLiteral(policyEEnum, Policy.DYNAMIC);

    initEEnum(cardinalityEEnum, Cardinality.class, "Cardinality");
    addEEnumLiteral(cardinalityEEnum, Cardinality._01);
    addEEnumLiteral(cardinalityEEnum, Cardinality._0N);
    addEEnumLiteral(cardinalityEEnum, Cardinality._11);
    addEEnumLiteral(cardinalityEEnum, Cardinality._1N);

    initEEnum(configurationPolicyEEnum, ConfigurationPolicy.class, "ConfigurationPolicy");
    addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.OPTIONAL);
    addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.REQUIRE);
    addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.IGNORE);

    initEEnum(javaTypeEEnum, JavaType.class, "JavaType");
    addEEnumLiteral(javaTypeEEnum, JavaType.STRING);
    addEEnumLiteral(javaTypeEEnum, JavaType.LONG);
    addEEnumLiteral(javaTypeEEnum, JavaType.DOUBLE);
    addEEnumLiteral(javaTypeEEnum, JavaType.FLOAT);
    addEEnumLiteral(javaTypeEEnum, JavaType.INTEGER);
    addEEnumLiteral(javaTypeEEnum, JavaType.BYTE);
    addEEnumLiteral(javaTypeEEnum, JavaType.CHARACTER);
    addEEnumLiteral(javaTypeEEnum, JavaType.BOOLEAN);
    addEEnumLiteral(javaTypeEEnum, JavaType.SHORT);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
    createExtendedMetaDataAnnotations();
    // http://www.eclipse.org/emf/2002/Ecore
    createEcoreAnnotations();
  }
  /**
   * 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);

    // Obtain other dependent packages
    XMLTypePackage theXMLTypePackage =
        (XMLTypePackage) EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes

    // Initialize classes and features; add operations and parameters
    initEClass(
        bundleEClass,
        Bundle.class,
        "Bundle",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getBundle_Value(),
        theXMLTypePackage.getAnyURI(),
        "value",
        null,
        0,
        1,
        Bundle.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getBundle_Dependency(),
        theXMLTypePackage.getBoolean(),
        "dependency",
        null,
        0,
        1,
        Bundle.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getBundle_Start(),
        theXMLTypePackage.getBoolean(),
        "start",
        null,
        0,
        1,
        Bundle.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getBundle_StartLevel(),
        theXMLTypePackage.getInt(),
        "startLevel",
        null,
        0,
        1,
        Bundle.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        configEClass,
        Config.class,
        "Config",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getConfig_Value(),
        theXMLTypePackage.getString(),
        "value",
        null,
        0,
        1,
        Config.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getConfig_Name(),
        theXMLTypePackage.getString(),
        "name",
        null,
        1,
        1,
        Config.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        configFileEClass,
        ConfigFile.class,
        "ConfigFile",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getConfigFile_Value(),
        theXMLTypePackage.getString(),
        "value",
        null,
        0,
        1,
        ConfigFile.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getConfigFile_Finalname(),
        theXMLTypePackage.getString(),
        "finalname",
        null,
        1,
        1,
        ConfigFile.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        dependencyEClass,
        Dependency.class,
        "Dependency",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getDependency_Value(),
        this.getFeatureName(),
        "value",
        null,
        0,
        1,
        Dependency.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getDependency_Version(),
        theXMLTypePackage.getString(),
        "version",
        "0.0.0",
        0,
        1,
        Dependency.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        documentRootEClass,
        DocumentRoot.class,
        "DocumentRoot",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getDocumentRoot_Mixed(),
        ecorePackage.getEFeatureMapEntry(),
        "mixed",
        null,
        0,
        -1,
        null,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getDocumentRoot_XMLNSPrefixMap(),
        ecorePackage.getEStringToStringMapEntry(),
        null,
        "xMLNSPrefixMap",
        null,
        0,
        -1,
        null,
        IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getDocumentRoot_XSISchemaLocation(),
        ecorePackage.getEStringToStringMapEntry(),
        null,
        "xSISchemaLocation",
        null,
        0,
        -1,
        null,
        IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getDocumentRoot_Features(),
        this.getFeaturesRoot(),
        null,
        "features",
        null,
        0,
        -2,
        null,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);

    initEClass(
        featureEClass,
        Feature.class,
        "Feature",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getFeature_Group(),
        ecorePackage.getEFeatureMapEntry(),
        "group",
        null,
        0,
        -1,
        Feature.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeature_Details(),
        theXMLTypePackage.getString(),
        "details",
        null,
        0,
        -1,
        Feature.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getFeature_Config(),
        this.getConfig(),
        null,
        "config",
        null,
        0,
        -1,
        Feature.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getFeature_Configfile(),
        this.getConfigFile(),
        null,
        "configfile",
        null,
        0,
        -1,
        Feature.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getFeature_Feature(),
        this.getDependency(),
        null,
        "feature",
        null,
        0,
        -1,
        Feature.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getFeature_Bundle(),
        this.getBundle(),
        null,
        "bundle",
        null,
        0,
        -1,
        Feature.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeature_Description(),
        theXMLTypePackage.getString(),
        "description",
        null,
        0,
        1,
        Feature.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeature_Name(),
        this.getFeatureName(),
        "name",
        null,
        1,
        1,
        Feature.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeature_Resolver(),
        this.getResolver(),
        "resolver",
        null,
        0,
        1,
        Feature.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeature_Version(),
        theXMLTypePackage.getString(),
        "version",
        "0.0.0",
        0,
        1,
        Feature.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        featuresRootEClass,
        FeaturesRoot.class,
        "FeaturesRoot",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getFeaturesRoot_Group(),
        ecorePackage.getEFeatureMapEntry(),
        "group",
        null,
        0,
        -1,
        FeaturesRoot.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeaturesRoot_Repository(),
        theXMLTypePackage.getAnyURI(),
        "repository",
        null,
        0,
        -1,
        FeaturesRoot.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getFeaturesRoot_Feature(),
        this.getFeature(),
        null,
        "feature",
        null,
        0,
        -1,
        FeaturesRoot.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getFeaturesRoot_Name(),
        theXMLTypePackage.getString(),
        "name",
        null,
        0,
        1,
        FeaturesRoot.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    // Initialize data types
    initEDataType(
        featureNameEDataType,
        String.class,
        "FeatureName",
        IS_SERIALIZABLE,
        !IS_GENERATED_INSTANCE_CLASS);
    initEDataType(
        resolverEDataType, String.class, "Resolver", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
    createExtendedMetaDataAnnotations();
  }
  /**
   * 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);

    // Obtain other dependent packages
    GeppettoPackage theGeppettoPackage =
        (GeppettoPackage) EPackage.Registry.INSTANCE.getEPackage(GeppettoPackage.eNS_URI);
    TypesPackage theTypesPackage =
        (TypesPackage) EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
    XMLTypePackage theXMLTypePackage =
        (XMLTypePackage) EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
    ValuesPackage theValuesPackage =
        (ValuesPackage) EPackage.Registry.INSTANCE.getEPackage(ValuesPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    variableEClass.getESuperTypes().add(theGeppettoPackage.getNode());

    // Initialize classes, features, and operations; add parameters
    initEClass(
        variableEClass,
        Variable.class,
        "Variable",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getVariable_AnonymousTypes(),
        theTypesPackage.getType(),
        null,
        "anonymousTypes",
        null,
        0,
        -1,
        Variable.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getVariable_Types(),
        theTypesPackage.getType(),
        theTypesPackage.getType_ReferencedVariables(),
        "types",
        null,
        0,
        -1,
        Variable.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getVariable_InitialValues(),
        this.getTypeToValueMap(),
        null,
        "initialValues",
        null,
        0,
        -1,
        Variable.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getVariable_Static(),
        theXMLTypePackage.getBoolean(),
        "static",
        null,
        0,
        1,
        Variable.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getVariable_Position(),
        theValuesPackage.getPoint(),
        null,
        "position",
        null,
        0,
        1,
        Variable.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        typeToValueMapEClass,
        Map.Entry.class,
        "TypeToValueMap",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        !IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getTypeToValueMap_Key(),
        theTypesPackage.getType(),
        null,
        "key",
        null,
        1,
        1,
        Map.Entry.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getTypeToValueMap_Value(),
        theValuesPackage.getValue(),
        null,
        "value",
        null,
        1,
        1,
        Map.Entry.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
  }