/**
   * 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
    TimingPackage theTimingPackage =
        (TimingPackage) EPackage.Registry.INSTANCE.getEPackage(TimingPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    delayConstraintEClass.getESuperTypes().add(theTimingPackage.getTimingConstraint());
    ageTimingConstraintEClass.getESuperTypes().add(this.getDelayConstraint());
    eventConstraintEClass.getESuperTypes().add(theTimingPackage.getTimingConstraint());
    inputSynchronizationConstraintEClass.getESuperTypes().add(this.getAgeTimingConstraint());
    outputSynchronizationConstraintEClass.getESuperTypes().add(this.getReactionConstraint());
    reactionConstraintEClass.getESuperTypes().add(this.getDelayConstraint());
    sporadicEventConstraintEClass.getESuperTypes().add(this.getEventConstraint());
    periodicEventConstraintEClass.getESuperTypes().add(this.getEventConstraint());
    patternEventConstraintEClass.getESuperTypes().add(this.getEventConstraint());
    arbitraryEventConstraintEClass.getESuperTypes().add(this.getEventConstraint());

    // Initialize classes and features; add operations and parameters
    initEClass(
        delayConstraintEClass,
        DelayConstraint.class,
        "DelayConstraint",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getDelayConstraint_Jitter(),
        theTimingPackage.getTimeDuration(),
        null,
        "jitter",
        null,
        0,
        1,
        DelayConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getDelayConstraint_Nominal(),
        theTimingPackage.getTimeDuration(),
        null,
        "nominal",
        null,
        0,
        1,
        DelayConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getDelayConstraint_Scope(),
        theTimingPackage.getEventChain(),
        null,
        "scope",
        null,
        0,
        1,
        DelayConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        ageTimingConstraintEClass,
        AgeTimingConstraint.class,
        "AgeTimingConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    initEClass(
        eventConstraintEClass,
        EventConstraint.class,
        "EventConstraint",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getEventConstraint_Event(),
        theTimingPackage.getEvent(),
        null,
        "event",
        null,
        0,
        1,
        EventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventConstraint_Offset(),
        theTimingPackage.getTimeDuration(),
        null,
        "offset",
        null,
        0,
        1,
        EventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        inputSynchronizationConstraintEClass,
        InputSynchronizationConstraint.class,
        "InputSynchronizationConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getInputSynchronizationConstraint_Width(),
        theTimingPackage.getTimeDuration(),
        null,
        "width",
        null,
        1,
        1,
        InputSynchronizationConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        outputSynchronizationConstraintEClass,
        OutputSynchronizationConstraint.class,
        "OutputSynchronizationConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getOutputSynchronizationConstraint_Width(),
        theTimingPackage.getTimeDuration(),
        null,
        "width",
        null,
        1,
        1,
        OutputSynchronizationConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        reactionConstraintEClass,
        ReactionConstraint.class,
        "ReactionConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    initEClass(
        sporadicEventConstraintEClass,
        SporadicEventConstraint.class,
        "SporadicEventConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getSporadicEventConstraint_Jitter(),
        theTimingPackage.getTimeDuration(),
        null,
        "jitter",
        null,
        0,
        1,
        SporadicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getSporadicEventConstraint_Period(),
        theTimingPackage.getTimeDuration(),
        null,
        "period",
        null,
        1,
        1,
        SporadicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getSporadicEventConstraint_MaximumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "maximumInterArrivalTime",
        null,
        0,
        1,
        SporadicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getSporadicEventConstraint_MinimumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "minimumInterArrivalTime",
        null,
        1,
        1,
        SporadicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        periodicEventConstraintEClass,
        PeriodicEventConstraint.class,
        "PeriodicEventConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getPeriodicEventConstraint_Jitter(),
        theTimingPackage.getTimeDuration(),
        null,
        "jitter",
        null,
        1,
        1,
        PeriodicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getPeriodicEventConstraint_Period(),
        theTimingPackage.getTimeDuration(),
        null,
        "period",
        null,
        1,
        1,
        PeriodicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getPeriodicEventConstraint_MinimumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "minimumInterArrivalTime",
        null,
        1,
        1,
        PeriodicEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        patternEventConstraintEClass,
        PatternEventConstraint.class,
        "PatternEventConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getPatternEventConstraint_Period(),
        theTimingPackage.getTimeDuration(),
        null,
        "period",
        null,
        1,
        1,
        PatternEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getPatternEventConstraint_MinimumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "minimumInterArrivalTime",
        null,
        1,
        1,
        PatternEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getPatternEventConstraint_Occurence(),
        theTimingPackage.getTimeDuration(),
        null,
        "occurence",
        null,
        1,
        -1,
        PatternEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getPatternEventConstraint_Jitter(),
        theTimingPackage.getTimeDuration(),
        null,
        "jitter",
        null,
        1,
        1,
        PatternEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        arbitraryEventConstraintEClass,
        ArbitraryEventConstraint.class,
        "ArbitraryEventConstraint",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getArbitraryEventConstraint_MinimumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "minimumInterArrivalTime",
        null,
        1,
        -1,
        ArbitraryEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getArbitraryEventConstraint_MaximumInterArrivalTime(),
        theTimingPackage.getTimeDuration(),
        null,
        "maximumInterArrivalTime",
        null,
        1,
        -1,
        ArbitraryEventConstraint.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
  }
  /**
   * 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
    TimingPackage theTimingPackage =
        (TimingPackage) EPackage.Registry.INSTANCE.getEPackage(TimingPackage.eNS_URI);
    FunctionmodelingPackage theFunctionmodelingPackage =
        (FunctionmodelingPackage)
            EPackage.Registry.INSTANCE.getEPackage(FunctionmodelingPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    eventFunctionFlowPortEClass.getESuperTypes().add(theTimingPackage.getEvent());
    eventFunctionClientServerPortEClass.getESuperTypes().add(theTimingPackage.getEvent());
    eventFunctionEClass.getESuperTypes().add(theTimingPackage.getEvent());

    // Initialize classes and features; add operations and parameters
    initEClass(
        eventFunctionFlowPortEClass,
        EventFunctionFlowPort.class,
        "EventFunctionFlowPort",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getEventFunctionFlowPort_Port(),
        theFunctionmodelingPackage.getFunctionPort(),
        null,
        "port",
        null,
        1,
        1,
        EventFunctionFlowPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventFunctionFlowPort_Port_path(),
        theFunctionmodelingPackage.getFunctionPrototype(),
        null,
        "port_path",
        null,
        0,
        -1,
        EventFunctionFlowPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        eventFunctionClientServerPortEClass,
        EventFunctionClientServerPort.class,
        "EventFunctionClientServerPort",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getEventFunctionClientServerPort_EventKind(),
        this.getEventFunctionClientServerPortKind(),
        "eventKind",
        null,
        1,
        1,
        EventFunctionClientServerPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventFunctionClientServerPort_Port(),
        theFunctionmodelingPackage.getFunctionClientServerPort(),
        null,
        "port",
        null,
        1,
        1,
        EventFunctionClientServerPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventFunctionClientServerPort_Port_path(),
        theFunctionmodelingPackage.getFunctionPrototype(),
        null,
        "port_path",
        null,
        0,
        -1,
        EventFunctionClientServerPort.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        eventFunctionEClass,
        EventFunction.class,
        "EventFunction",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getEventFunction_Function(),
        theFunctionmodelingPackage.getFunctionPrototype(),
        null,
        "function",
        null,
        0,
        1,
        EventFunction.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventFunction_FunctionType(),
        theFunctionmodelingPackage.getFunctionType(),
        null,
        "functionType",
        null,
        0,
        1,
        EventFunction.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        !IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getEventFunction_Function_path(),
        theFunctionmodelingPackage.getFunctionPrototype(),
        null,
        "function_path",
        null,
        0,
        -1,
        EventFunction.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(
        eventFunctionClientServerPortKindEEnum,
        EventFunctionClientServerPortKind.class,
        "EventFunctionClientServerPortKind");
    addEEnumLiteral(
        eventFunctionClientServerPortKindEEnum, EventFunctionClientServerPortKind.RECEIVED_REQUEST);
    addEEnumLiteral(
        eventFunctionClientServerPortKindEEnum, EventFunctionClientServerPortKind.SENT_RESPONSE);
    addEEnumLiteral(
        eventFunctionClientServerPortKindEEnum, EventFunctionClientServerPortKind.SENT_REQUEST);
    addEEnumLiteral(
        eventFunctionClientServerPortKindEEnum,
        EventFunctionClientServerPortKind.RECEIVED_RESPONSE);
  }