/**
   * 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
    UMLPackage theUMLPackage =
        (UMLPackage) EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
    TypesPackage theTypesPackage =
        (TypesPackage) EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes

    // Initialize classes, features, and operations; add parameters
    initEClass(
        flowPortEClass,
        FlowPort.class,
        "FlowPort",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getFlowPort_Base_Port(),
        theUMLPackage.getPort(),
        null,
        "base_Port",
        null,
        1,
        1,
        FlowPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getFlowPort_IsAtomic(),
        theTypesPackage.getBoolean(),
        "isAtomic",
        "false",
        1,
        1,
        FlowPort.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        !IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getFlowPort_IsConjugated(),
        theTypesPackage.getBoolean(),
        "isConjugated",
        null,
        0,
        1,
        FlowPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getFlowPort_Direction(),
        this.getFlowDirection(),
        "direction",
        "inout",
        1,
        1,
        FlowPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEOperation(
        getFlowPort__GetIcon(), theUMLPackage.getImage(), "getIcon", 1, 1, IS_UNIQUE, !IS_ORDERED);

    initEClass(
        flowPropertyEClass,
        FlowProperty.class,
        "FlowProperty",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getFlowProperty_Base_Property(),
        theUMLPackage.getProperty(),
        null,
        "base_Property",
        null,
        1,
        1,
        FlowProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getFlowProperty_Direction(),
        this.getFlowDirection(),
        "direction",
        "inout",
        1,
        1,
        FlowProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEOperation(
        getFlowProperty__GetIcon(),
        theUMLPackage.getImage(),
        "getIcon",
        1,
        1,
        IS_UNIQUE,
        !IS_ORDERED);

    initEClass(
        flowSpecificationEClass,
        FlowSpecification.class,
        "FlowSpecification",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getFlowSpecification_Base_Interface(),
        theUMLPackage.getInterface(),
        null,
        "base_Interface",
        null,
        1,
        1,
        FlowSpecification.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        itemFlowEClass,
        ItemFlow.class,
        "ItemFlow",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getItemFlow_Base_InformationFlow(),
        theUMLPackage.getInformationFlow(),
        null,
        "base_InformationFlow",
        null,
        1,
        1,
        ItemFlow.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getItemFlow_ItemProperty(),
        theUMLPackage.getProperty(),
        null,
        "itemProperty",
        null,
        0,
        1,
        ItemFlow.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    // Initialize enums and add enum literals
    initEEnum(flowDirectionEEnum, FlowDirection.class, "FlowDirection");
    addEEnumLiteral(flowDirectionEEnum, FlowDirection.IN);
    addEEnumLiteral(flowDirectionEEnum, FlowDirection.OUT);
    addEEnumLiteral(flowDirectionEEnum, FlowDirection.INOUT);
  }
  /**
   * 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
    TypesPackage theTypesPackage =
        (TypesPackage) EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
    org.eclipse.uml2.types.TypesPackage theTypesPackage_1 =
        (org.eclipse.uml2.types.TypesPackage)
            EPackage.Registry.INSTANCE.getEPackage(org.eclipse.uml2.types.TypesPackage.eNS_URI);
    UMLPackage theUMLPackage =
        (UMLPackage) EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes

    // Initialize classes and features; add operations and parameters
    initEClass(
        modelicaValuePropertyEClass,
        ModelicaValueProperty.class,
        "ModelicaValueProperty",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getModelicaValueProperty_Causality(),
        theTypesPackage.getModelicaCausalityKind(),
        "causality",
        "none",
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_Variability(),
        theTypesPackage.getModelicaVariabilityKind(),
        "variability",
        "continuous",
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_FlowFlag(),
        theTypesPackage.getModelicaFlowFlagKind(),
        "flowFlag",
        "none",
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_Scope(),
        theTypesPackage.getModelicaScopeKind(),
        "scope",
        "none",
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_IsFinal(),
        theTypesPackage_1.getBoolean(),
        "isFinal",
        "false",
        1,
        1,
        ModelicaValueProperty.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_ConditionalExpression(),
        theTypesPackage_1.getString(),
        "conditionalExpression",
        null,
        0,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_Modification(),
        theTypesPackage_1.getString(),
        "modification",
        null,
        0,
        -1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_IsReplaceable(),
        theTypesPackage_1.getBoolean(),
        "isReplaceable",
        "false",
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_DeclarationEquation(),
        theTypesPackage_1.getString(),
        "declarationEquation",
        null,
        0,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaValueProperty_ArraySize(),
        theTypesPackage_1.getString(),
        "arraySize",
        null,
        0,
        -1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getModelicaValueProperty_Base_Property(),
        theUMLPackage.getProperty(),
        null,
        "base_Property",
        null,
        1,
        1,
        ModelicaValueProperty.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        modelicaPartEClass,
        ModelicaPart.class,
        "ModelicaPart",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getModelicaPart_ArraySize(),
        theTypesPackage_1.getString(),
        "arraySize",
        null,
        0,
        -1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getModelicaPart_Scope(),
        theTypesPackage.getModelicaScopeKind(),
        "scope",
        "none",
        1,
        1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPart_Modification(),
        theTypesPackage_1.getString(),
        "modification",
        null,
        0,
        -1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPart_IsReplaceable(),
        theTypesPackage_1.getBoolean(),
        "isReplaceable",
        "false",
        1,
        1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPart_ConditionalExpression(),
        theTypesPackage_1.getString(),
        "conditionalExpression",
        null,
        0,
        1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPart_IsFinal(),
        theTypesPackage_1.getBoolean(),
        "isFinal",
        "false",
        1,
        1,
        ModelicaPart.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getModelicaPart_Base_Property(),
        theUMLPackage.getProperty(),
        null,
        "base_Property",
        null,
        1,
        1,
        ModelicaPart.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        modelicaPortEClass,
        ModelicaPort.class,
        "ModelicaPort",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getModelicaPort_IsReplaceable(),
        theTypesPackage_1.getBoolean(),
        "isReplaceable",
        "false",
        1,
        1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPort_ConditionalExpression(),
        theTypesPackage_1.getString(),
        "conditionalExpression",
        null,
        0,
        1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPort_Modification(),
        theTypesPackage_1.getString(),
        "modification",
        null,
        0,
        -1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPort_ArraySize(),
        theTypesPackage_1.getString(),
        "arraySize",
        null,
        0,
        -1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getModelicaPort_Causality(),
        theTypesPackage.getModelicaCausalityKind(),
        "causality",
        "none",
        1,
        1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaPort_IsFinal(),
        theTypesPackage_1.getBoolean(),
        "isFinal",
        "false",
        1,
        1,
        ModelicaPort.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getModelicaPort_Base_Port(),
        theUMLPackage.getPort(),
        null,
        "base_Port",
        null,
        1,
        1,
        ModelicaPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        modelicaFunctionParameterEClass,
        ModelicaFunctionParameter.class,
        "ModelicaFunctionParameter",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getModelicaFunctionParameter_Base_Parameter(),
        theUMLPackage.getParameter(),
        null,
        "base_Parameter",
        null,
        1,
        1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_DeclarationEquation(),
        theTypesPackage_1.getString(),
        "declarationEquation",
        null,
        0,
        1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_IsReplaceable(),
        theTypesPackage_1.getBoolean(),
        "isReplaceable",
        "false",
        1,
        1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_Variability(),
        theTypesPackage.getModelicaVariabilityKind(),
        "variability",
        "continuous",
        1,
        1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_Causality(),
        theTypesPackage.getModelicaCausalityKind(),
        "causality",
        "input",
        1,
        1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_IsFinal(),
        theTypesPackage_1.getBoolean(),
        "isFinal",
        "false",
        1,
        1,
        ModelicaFunctionParameter.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_Modification(),
        theTypesPackage_1.getString(),
        "modification",
        null,
        0,
        -1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getModelicaFunctionParameter_ArraySize(),
        theTypesPackage_1.getString(),
        "arraySize",
        null,
        0,
        -1,
        ModelicaFunctionParameter.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
  }