/**
 * generated by Xtext 2.16.0
 */
package be.uantwerpen.cosys.contractLang.impl;

import be.uantwerpen.cosys.contractLang.AbsencePattern;
import be.uantwerpen.cosys.contractLang.AbsoluteValue;
import be.uantwerpen.cosys.contractLang.Action;
import be.uantwerpen.cosys.contractLang.AfterScope;
import be.uantwerpen.cosys.contractLang.AfterUntilScope;
import be.uantwerpen.cosys.contractLang.AndExpression;
import be.uantwerpen.cosys.contractLang.AssignAction;
import be.uantwerpen.cosys.contractLang.Average;
import be.uantwerpen.cosys.contractLang.BeforeScope;
import be.uantwerpen.cosys.contractLang.BetweenScope;
import be.uantwerpen.cosys.contractLang.BoundedExistencePattern;
import be.uantwerpen.cosys.contractLang.ClosedInterval;
import be.uantwerpen.cosys.contractLang.Constraint;
import be.uantwerpen.cosys.contractLang.Contract;
import be.uantwerpen.cosys.contractLang.ContractLangFactory;
import be.uantwerpen.cosys.contractLang.ContractLangPackage;
import be.uantwerpen.cosys.contractLang.ContractRef;
import be.uantwerpen.cosys.contractLang.ContractSet;
import be.uantwerpen.cosys.contractLang.CosimUnit;
import be.uantwerpen.cosys.contractLang.Derivative;
import be.uantwerpen.cosys.contractLang.Difference;
import be.uantwerpen.cosys.contractLang.DomainValue;
import be.uantwerpen.cosys.contractLang.Equality;
import be.uantwerpen.cosys.contractLang.Event;
import be.uantwerpen.cosys.contractLang.ExistencePattern;
import be.uantwerpen.cosys.contractLang.Expression;
import be.uantwerpen.cosys.contractLang.FMUInstance;
import be.uantwerpen.cosys.contractLang.FMUProperty;
import be.uantwerpen.cosys.contractLang.FMUPropertyEnum;
import be.uantwerpen.cosys.contractLang.FMUSignal;
import be.uantwerpen.cosys.contractLang.False;
import be.uantwerpen.cosys.contractLang.FloatValue;
import be.uantwerpen.cosys.contractLang.Force;
import be.uantwerpen.cosys.contractLang.Frequency;
import be.uantwerpen.cosys.contractLang.GloballyScope;
import be.uantwerpen.cosys.contractLang.GreaterThan;
import be.uantwerpen.cosys.contractLang.Infinity;
import be.uantwerpen.cosys.contractLang.IntValue;
import be.uantwerpen.cosys.contractLang.Interval;
import be.uantwerpen.cosys.contractLang.IntervalBound;
import be.uantwerpen.cosys.contractLang.Kilometers;
import be.uantwerpen.cosys.contractLang.KilometersPerHour;
import be.uantwerpen.cosys.contractLang.LessThan;
import be.uantwerpen.cosys.contractLang.LowerTimeBound;
import be.uantwerpen.cosys.contractLang.MaxDurationPattern;
import be.uantwerpen.cosys.contractLang.MetaStatement;
import be.uantwerpen.cosys.contractLang.Meters;
import be.uantwerpen.cosys.contractLang.MetersPerSecond;
import be.uantwerpen.cosys.contractLang.MinDurationPattern;
import be.uantwerpen.cosys.contractLang.NumValue;
import be.uantwerpen.cosys.contractLang.Occurrence;
import be.uantwerpen.cosys.contractLang.OpenInterval;
import be.uantwerpen.cosys.contractLang.Operator;
import be.uantwerpen.cosys.contractLang.Order;
import be.uantwerpen.cosys.contractLang.Pattern;
import be.uantwerpen.cosys.contractLang.Percentage;
import be.uantwerpen.cosys.contractLang.PowerBondSuggestion;
import be.uantwerpen.cosys.contractLang.PrecStatement;
import be.uantwerpen.cosys.contractLang.PrecedenceChain1NPattern;
import be.uantwerpen.cosys.contractLang.PrecedencePattern;
import be.uantwerpen.cosys.contractLang.ProbGreater;
import be.uantwerpen.cosys.contractLang.ProbGreaterEq;
import be.uantwerpen.cosys.contractLang.ProbLess;
import be.uantwerpen.cosys.contractLang.ProbLessEq;
import be.uantwerpen.cosys.contractLang.Probability;
import be.uantwerpen.cosys.contractLang.Property;
import be.uantwerpen.cosys.contractLang.QualValue;
import be.uantwerpen.cosys.contractLang.RecurrencePattern;
import be.uantwerpen.cosys.contractLang.ResponseChain1NPattern;
import be.uantwerpen.cosys.contractLang.ResponseChainN1Pattern;
import be.uantwerpen.cosys.contractLang.ResponseInvariancePattern;
import be.uantwerpen.cosys.contractLang.ResponsePattern;
import be.uantwerpen.cosys.contractLang.Root;
import be.uantwerpen.cosys.contractLang.SAHARAProperty;
import be.uantwerpen.cosys.contractLang.SAHARAPropertyEnum;
import be.uantwerpen.cosys.contractLang.SAHARAUnit;
import be.uantwerpen.cosys.contractLang.SAHARA_C_Enum;
import be.uantwerpen.cosys.contractLang.SAHARA_E_Enum;
import be.uantwerpen.cosys.contractLang.SAHARA_S_Enum;
import be.uantwerpen.cosys.contractLang.Scope;
import be.uantwerpen.cosys.contractLang.SingleTime;
import be.uantwerpen.cosys.contractLang.Statement;
import be.uantwerpen.cosys.contractLang.StatementAnd;
import be.uantwerpen.cosys.contractLang.StatementNot;
import be.uantwerpen.cosys.contractLang.StatementOp;
import be.uantwerpen.cosys.contractLang.StatementOr;
import be.uantwerpen.cosys.contractLang.StatementRef;
import be.uantwerpen.cosys.contractLang.SteadyStatePattern;
import be.uantwerpen.cosys.contractLang.SteadyStateSuggestion;
import be.uantwerpen.cosys.contractLang.StringValue;
import be.uantwerpen.cosys.contractLang.Time;
import be.uantwerpen.cosys.contractLang.TimeInterval;
import be.uantwerpen.cosys.contractLang.TimeUnit;
import be.uantwerpen.cosys.contractLang.TransientStatePattern;
import be.uantwerpen.cosys.contractLang.True;
import be.uantwerpen.cosys.contractLang.Unit;
import be.uantwerpen.cosys.contractLang.Unitless;
import be.uantwerpen.cosys.contractLang.UniversalityPattern;
import be.uantwerpen.cosys.contractLang.UntilPattern;
import be.uantwerpen.cosys.contractLang.UpperTimeBound;
import be.uantwerpen.cosys.contractLang.Value;
import be.uantwerpen.cosys.contractLang.ValueWithUnit;
import be.uantwerpen.cosys.contractLang.VarOrVarOp;
import be.uantwerpen.cosys.contractLang.Variable;

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 ContractLangPackageImpl extends EPackageImpl implements ContractLangPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rootEClass = null;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum saharA_C_EnumEEnum = 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 be.uantwerpen.cosys.contractLang.ContractLangPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private ContractLangPackageImpl()
  {
    super(eNS_URI, ContractLangFactory.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 ContractLangPackage#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 ContractLangPackage init()
  {
    if (isInited) return (ContractLangPackage)EPackage.Registry.INSTANCE.getEPackage(ContractLangPackage.eNS_URI);

    // Obtain or create and register package
    Object registeredContractLangPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
    ContractLangPackageImpl theContractLangPackage = registeredContractLangPackage instanceof ContractLangPackageImpl ? (ContractLangPackageImpl)registeredContractLangPackage : new ContractLangPackageImpl();

    isInited = true;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public EAttribute getContract_DoGenSTL()
  {
    return (EAttribute)contractEClass.getEStructuralFeatures().get(6);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public ContractLangFactory getContractLangFactory()
  {
    return (ContractLangFactory)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__CONTRACT);
    createEReference(rootEClass, ROOT__CONTRACT_SET);

    contractSetEClass = createEClass(CONTRACT_SET);
    createEAttribute(contractSetEClass, CONTRACT_SET__NAME);
    createEReference(contractSetEClass, CONTRACT_SET__CONTRACTS);

    contractRefEClass = createEClass(CONTRACT_REF);
    createEReference(contractRefEClass, CONTRACT_REF__CONTRACT);

    contractEClass = createEClass(CONTRACT);
    createEAttribute(contractEClass, CONTRACT__NAME);
    createEAttribute(contractEClass, CONTRACT__DESCRIPTION);
    createEReference(contractEClass, CONTRACT__STATEMENTS);
    createEReference(contractEClass, CONTRACT__SCOPE);
    createEReference(contractEClass, CONTRACT__PATTERN);
    createEReference(contractEClass, CONTRACT__ACTION);
    createEAttribute(contractEClass, CONTRACT__DO_GEN_STL);

    eventEClass = createEClass(EVENT);

    propertyEClass = createEClass(PROPERTY);

    metaStatementEClass = createEClass(META_STATEMENT);

    statementRefEClass = createEClass(STATEMENT_REF);
    createEReference(statementRefEClass, STATEMENT_REF__STATEMENT);

    statementEClass = createEClass(STATEMENT);
    createEAttribute(statementEClass, STATEMENT__NAME);
    createEReference(statementEClass, STATEMENT__VAR);
    createEReference(statementEClass, STATEMENT__OPER);
    createEReference(statementEClass, STATEMENT__EXPR);

    statementOpEClass = createEClass(STATEMENT_OP);

    statementAndEClass = createEClass(STATEMENT_AND);
    createEReference(statementAndEClass, STATEMENT_AND__STATEMENT1);
    createEReference(statementAndEClass, STATEMENT_AND__STATEMENT2);

    statementOrEClass = createEClass(STATEMENT_OR);
    createEReference(statementOrEClass, STATEMENT_OR__STATEMENT1);
    createEReference(statementOrEClass, STATEMENT_OR__STATEMENT2);

    statementNotEClass = createEClass(STATEMENT_NOT);
    createEReference(statementNotEClass, STATEMENT_NOT__STATEMENT);

    scopeEClass = createEClass(SCOPE);

    globallyScopeEClass = createEClass(GLOBALLY_SCOPE);

    beforeScopeEClass = createEClass(BEFORE_SCOPE);
    createEReference(beforeScopeEClass, BEFORE_SCOPE__EVENT);

    afterScopeEClass = createEClass(AFTER_SCOPE);
    createEReference(afterScopeEClass, AFTER_SCOPE__EVENT);

    betweenScopeEClass = createEClass(BETWEEN_SCOPE);
    createEReference(betweenScopeEClass, BETWEEN_SCOPE__FIRST);
    createEReference(betweenScopeEClass, BETWEEN_SCOPE__SECOND);

    afterUntilScopeEClass = createEClass(AFTER_UNTIL_SCOPE);
    createEReference(afterUntilScopeEClass, AFTER_UNTIL_SCOPE__FIRST);
    createEReference(afterUntilScopeEClass, AFTER_UNTIL_SCOPE__SECOND);

    patternEClass = createEClass(PATTERN);
    createEReference(patternEClass, PATTERN__PROB);

    occurrenceEClass = createEClass(OCCURRENCE);
    createEReference(occurrenceEClass, OCCURRENCE__STATEMENT);

    universalityPatternEClass = createEClass(UNIVERSALITY_PATTERN);
    createEReference(universalityPatternEClass, UNIVERSALITY_PATTERN__TIME);

    absencePatternEClass = createEClass(ABSENCE_PATTERN);
    createEReference(absencePatternEClass, ABSENCE_PATTERN__TIME);

    existencePatternEClass = createEClass(EXISTENCE_PATTERN);
    createEReference(existencePatternEClass, EXISTENCE_PATTERN__TIME);

    boundedExistencePatternEClass = createEClass(BOUNDED_EXISTENCE_PATTERN);
    createEAttribute(boundedExistencePatternEClass, BOUNDED_EXISTENCE_PATTERN__N);
    createEReference(boundedExistencePatternEClass, BOUNDED_EXISTENCE_PATTERN__TIME);

    transientStatePatternEClass = createEClass(TRANSIENT_STATE_PATTERN);
    createEReference(transientStatePatternEClass, TRANSIENT_STATE_PATTERN__TIME);

    steadyStatePatternEClass = createEClass(STEADY_STATE_PATTERN);

    minDurationPatternEClass = createEClass(MIN_DURATION_PATTERN);
    createEReference(minDurationPatternEClass, MIN_DURATION_PATTERN__DURATION);

    maxDurationPatternEClass = createEClass(MAX_DURATION_PATTERN);
    createEReference(maxDurationPatternEClass, MAX_DURATION_PATTERN__DURATION);

    recurrencePatternEClass = createEClass(RECURRENCE_PATTERN);
    createEReference(recurrencePatternEClass, RECURRENCE_PATTERN__TIME);

    precStatementEClass = createEClass(PREC_STATEMENT);
    createEReference(precStatementEClass, PREC_STATEMENT__STATEMENT);
    createEReference(precStatementEClass, PREC_STATEMENT__TIME);
    createEReference(precStatementEClass, PREC_STATEMENT__CONSTRAINT);

    orderEClass = createEClass(ORDER);

    precedencePatternEClass = createEClass(PRECEDENCE_PATTERN);
    createEReference(precedencePatternEClass, PRECEDENCE_PATTERN__FIRST);
    createEReference(precedencePatternEClass, PRECEDENCE_PATTERN__SECOND);
    createEReference(precedencePatternEClass, PRECEDENCE_PATTERN__INTERVAL);

    precedenceChain1NPatternEClass = createEClass(PRECEDENCE_CHAIN1_NPATTERN);
    createEReference(precedenceChain1NPatternEClass, PRECEDENCE_CHAIN1_NPATTERN__SECOND);
    createEReference(precedenceChain1NPatternEClass, PRECEDENCE_CHAIN1_NPATTERN__STATEMENTS);
    createEReference(precedenceChain1NPatternEClass, PRECEDENCE_CHAIN1_NPATTERN__FIRST);
    createEReference(precedenceChain1NPatternEClass, PRECEDENCE_CHAIN1_NPATTERN__INTERVAL);
    createEReference(precedenceChain1NPatternEClass, PRECEDENCE_CHAIN1_NPATTERN__CONSTRAINT);

    untilPatternEClass = createEClass(UNTIL_PATTERN);
    createEReference(untilPatternEClass, UNTIL_PATTERN__FIRST);
    createEReference(untilPatternEClass, UNTIL_PATTERN__SECOND);
    createEReference(untilPatternEClass, UNTIL_PATTERN__TIME);

    responsePatternEClass = createEClass(RESPONSE_PATTERN);
    createEReference(responsePatternEClass, RESPONSE_PATTERN__FIRST);
    createEReference(responsePatternEClass, RESPONSE_PATTERN__SECOND);
    createEReference(responsePatternEClass, RESPONSE_PATTERN__TIME);
    createEReference(responsePatternEClass, RESPONSE_PATTERN__CONSTRAINT);

    responseChain1NPatternEClass = createEClass(RESPONSE_CHAIN1_NPATTERN);
    createEReference(responseChain1NPatternEClass, RESPONSE_CHAIN1_NPATTERN__FIRST);
    createEReference(responseChain1NPatternEClass, RESPONSE_CHAIN1_NPATTERN__SECOND);
    createEReference(responseChain1NPatternEClass, RESPONSE_CHAIN1_NPATTERN__TIME);
    createEReference(responseChain1NPatternEClass, RESPONSE_CHAIN1_NPATTERN__CONSTRAINT);
    createEReference(responseChain1NPatternEClass, RESPONSE_CHAIN1_NPATTERN__STATEMENTS);

    responseChainN1PatternEClass = createEClass(RESPONSE_CHAIN_N1_PATTERN);
    createEReference(responseChainN1PatternEClass, RESPONSE_CHAIN_N1_PATTERN__SECOND);
    createEReference(responseChainN1PatternEClass, RESPONSE_CHAIN_N1_PATTERN__STATEMENTS);
    createEReference(responseChainN1PatternEClass, RESPONSE_CHAIN_N1_PATTERN__FIRST);
    createEReference(responseChainN1PatternEClass, RESPONSE_CHAIN_N1_PATTERN__TIME);
    createEReference(responseChainN1PatternEClass, RESPONSE_CHAIN_N1_PATTERN__CONSTRAINT);

    responseInvariancePatternEClass = createEClass(RESPONSE_INVARIANCE_PATTERN);
    createEReference(responseInvariancePatternEClass, RESPONSE_INVARIANCE_PATTERN__FIRST);
    createEReference(responseInvariancePatternEClass, RESPONSE_INVARIANCE_PATTERN__SECOND);
    createEReference(responseInvariancePatternEClass, RESPONSE_INVARIANCE_PATTERN__TIME);

    constraintEClass = createEClass(CONSTRAINT);
    createEReference(constraintEClass, CONSTRAINT__STATEMENT);

    timeEClass = createEClass(TIME);
    createEReference(timeEClass, TIME__UNIT);

    timeIntervalEClass = createEClass(TIME_INTERVAL);
    createEReference(timeIntervalEClass, TIME_INTERVAL__LBOUND);
    createEReference(timeIntervalEClass, TIME_INTERVAL__MIN);
    createEReference(timeIntervalEClass, TIME_INTERVAL__MAX);
    createEReference(timeIntervalEClass, TIME_INTERVAL__RBOUND);

    upperTimeBoundEClass = createEClass(UPPER_TIME_BOUND);
    createEReference(upperTimeBoundEClass, UPPER_TIME_BOUND__VAL);

    lowerTimeBoundEClass = createEClass(LOWER_TIME_BOUND);
    createEReference(lowerTimeBoundEClass, LOWER_TIME_BOUND__VAL);

    singleTimeEClass = createEClass(SINGLE_TIME);
    createEReference(singleTimeEClass, SINGLE_TIME__VAL);

    timeUnitEClass = createEClass(TIME_UNIT);
    createEAttribute(timeUnitEClass, TIME_UNIT__MILLISECONDS);
    createEAttribute(timeUnitEClass, TIME_UNIT__SECONDS);

    probabilityEClass = createEClass(PROBABILITY);
    createEReference(probabilityEClass, PROBABILITY__PROB);

    probLessEClass = createEClass(PROB_LESS);

    probLessEqEClass = createEClass(PROB_LESS_EQ);

    probGreaterEClass = createEClass(PROB_GREATER);

    probGreaterEqEClass = createEClass(PROB_GREATER_EQ);

    actionEClass = createEClass(ACTION);

    varOrVarOpEClass = createEClass(VAR_OR_VAR_OP);

    operatorEClass = createEClass(OPERATOR);

    expressionEClass = createEClass(EXPRESSION);

    numValueEClass = createEClass(NUM_VALUE);

    infinityEClass = createEClass(INFINITY);
    createEAttribute(infinityEClass, INFINITY__V);

    intValueEClass = createEClass(INT_VALUE);
    createEAttribute(intValueEClass, INT_VALUE__V);

    floatValueEClass = createEClass(FLOAT_VALUE);
    createEAttribute(floatValueEClass, FLOAT_VALUE__V);

    unitEClass = createEClass(UNIT);

    unitlessEClass = createEClass(UNITLESS);

    percentageEClass = createEClass(PERCENTAGE);

    derivativeEClass = createEClass(DERIVATIVE);
    createEReference(derivativeEClass, DERIVATIVE__VAR);

    absoluteValueEClass = createEClass(ABSOLUTE_VALUE);
    createEReference(absoluteValueEClass, ABSOLUTE_VALUE__VAR);

    differenceEClass = createEClass(DIFFERENCE);
    createEReference(differenceEClass, DIFFERENCE__VAR);
    createEReference(differenceEClass, DIFFERENCE__VAR2);

    averageEClass = createEClass(AVERAGE);
    createEReference(averageEClass, AVERAGE__VAR);
    createEReference(averageEClass, AVERAGE__DURATION);

    equalityEClass = createEClass(EQUALITY);

    greaterThanEClass = createEClass(GREATER_THAN);
    createEAttribute(greaterThanEClass, GREATER_THAN__EQUAL_TO);

    lessThanEClass = createEClass(LESS_THAN);
    createEAttribute(lessThanEClass, LESS_THAN__EQUAL_TO);

    andExpressionEClass = createEClass(AND_EXPRESSION);
    createEReference(andExpressionEClass, AND_EXPRESSION__ARG0);
    createEReference(andExpressionEClass, AND_EXPRESSION__ARG1);

    trueEClass = createEClass(TRUE);

    falseEClass = createEClass(FALSE);

    stringValueEClass = createEClass(STRING_VALUE);
    createEAttribute(stringValueEClass, STRING_VALUE__VAL);

    qualValueEClass = createEClass(QUAL_VALUE);
    createEAttribute(qualValueEClass, QUAL_VALUE__VAL);

    intervalEClass = createEClass(INTERVAL);
    createEReference(intervalEClass, INTERVAL__LBOUND);
    createEReference(intervalEClass, INTERVAL__MIN);
    createEReference(intervalEClass, INTERVAL__MAX);
    createEReference(intervalEClass, INTERVAL__UNIT);
    createEReference(intervalEClass, INTERVAL__RBOUND);

    intervalBoundEClass = createEClass(INTERVAL_BOUND);

    openIntervalEClass = createEClass(OPEN_INTERVAL);

    closedIntervalEClass = createEClass(CLOSED_INTERVAL);

    valueWithUnitEClass = createEClass(VALUE_WITH_UNIT);
    createEReference(valueWithUnitEClass, VALUE_WITH_UNIT__VAL);
    createEReference(valueWithUnitEClass, VALUE_WITH_UNIT__UNIT);

    assignActionEClass = createEClass(ASSIGN_ACTION);

    valueEClass = createEClass(VALUE);

    domainValueEClass = createEClass(DOMAIN_VALUE);

    variableEClass = createEClass(VARIABLE);

    fmuPropertyEClass = createEClass(FMU_PROPERTY);
    createEReference(fmuPropertyEClass, FMU_PROPERTY__FMU);
    createEAttribute(fmuPropertyEClass, FMU_PROPERTY__PROPERTY);

    fmuInstanceEClass = createEClass(FMU_INSTANCE);
    createEAttribute(fmuInstanceEClass, FMU_INSTANCE__NAME);

    fmuSignalEClass = createEClass(FMU_SIGNAL);
    createEAttribute(fmuSignalEClass, FMU_SIGNAL__NAME);

    steadyStateSuggestionEClass = createEClass(STEADY_STATE_SUGGESTION);

    powerBondSuggestionEClass = createEClass(POWER_BOND_SUGGESTION);
    createEReference(powerBondSuggestionEClass, POWER_BOND_SUGGESTION__OTHER_SIGNAL);

    cosimUnitEClass = createEClass(COSIM_UNIT);

    frequencyEClass = createEClass(FREQUENCY);

    saharaPropertyEClass = createEClass(SAHARA_PROPERTY);
    createEAttribute(saharaPropertyEClass, SAHARA_PROPERTY__VAL);

    saharA_SEClass = createEClass(SAHARA_S);
    createEAttribute(saharA_SEClass, SAHARA_S__VAL);

    saharA_EEClass = createEClass(SAHARA_E);
    createEAttribute(saharA_EEClass, SAHARA_E__VAL);

    saharA_CEClass = createEClass(SAHARA_C);
    createEAttribute(saharA_CEClass, SAHARA_C__VAL);

    saharaUnitEClass = createEClass(SAHARA_UNIT);

    metersEClass = createEClass(METERS);

    metersPerSecondEClass = createEClass(METERS_PER_SECOND);

    kilometersEClass = createEClass(KILOMETERS);

    kilometersPerHourEClass = createEClass(KILOMETERS_PER_HOUR);

    forceEClass = createEClass(FORCE);

    // Create enums
    loW_MED_HIGHEEnum = createEEnum(LOW_MED_HIGH);
    fmuPropertyEnumEEnum = createEEnum(FMU_PROPERTY_ENUM);
    saharaPropertyEnumEEnum = createEEnum(SAHARA_PROPERTY_ENUM);
    saharA_S_EnumEEnum = createEEnum(SAHARA_SENUM);
    saharA_E_EnumEEnum = createEEnum(SAHARA_EENUM);
    saharA_C_EnumEEnum = createEEnum(SAHARA_CENUM);
  }

  /**
   * <!-- 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
    eventEClass.getESuperTypes().add(this.getStatement());
    propertyEClass.getESuperTypes().add(this.getStatement());
    statementRefEClass.getESuperTypes().add(this.getMetaStatement());
    statementOpEClass.getESuperTypes().add(this.getMetaStatement());
    statementAndEClass.getESuperTypes().add(this.getStatementOp());
    statementOrEClass.getESuperTypes().add(this.getStatementOp());
    statementNotEClass.getESuperTypes().add(this.getStatementOp());
    globallyScopeEClass.getESuperTypes().add(this.getScope());
    beforeScopeEClass.getESuperTypes().add(this.getScope());
    afterScopeEClass.getESuperTypes().add(this.getScope());
    betweenScopeEClass.getESuperTypes().add(this.getScope());
    afterUntilScopeEClass.getESuperTypes().add(this.getScope());
    occurrenceEClass.getESuperTypes().add(this.getPattern());
    universalityPatternEClass.getESuperTypes().add(this.getOccurrence());
    absencePatternEClass.getESuperTypes().add(this.getOccurrence());
    existencePatternEClass.getESuperTypes().add(this.getOccurrence());
    boundedExistencePatternEClass.getESuperTypes().add(this.getOccurrence());
    transientStatePatternEClass.getESuperTypes().add(this.getOccurrence());
    steadyStatePatternEClass.getESuperTypes().add(this.getOccurrence());
    minDurationPatternEClass.getESuperTypes().add(this.getOccurrence());
    maxDurationPatternEClass.getESuperTypes().add(this.getOccurrence());
    recurrencePatternEClass.getESuperTypes().add(this.getOccurrence());
    orderEClass.getESuperTypes().add(this.getPattern());
    precedencePatternEClass.getESuperTypes().add(this.getOrder());
    precedenceChain1NPatternEClass.getESuperTypes().add(this.getOrder());
    untilPatternEClass.getESuperTypes().add(this.getOrder());
    responsePatternEClass.getESuperTypes().add(this.getOrder());
    responseChain1NPatternEClass.getESuperTypes().add(this.getOrder());
    responseChainN1PatternEClass.getESuperTypes().add(this.getOrder());
    responseInvariancePatternEClass.getESuperTypes().add(this.getOrder());
    timeIntervalEClass.getESuperTypes().add(this.getTime());
    upperTimeBoundEClass.getESuperTypes().add(this.getTime());
    lowerTimeBoundEClass.getESuperTypes().add(this.getTime());
    singleTimeEClass.getESuperTypes().add(this.getTime());
    timeUnitEClass.getESuperTypes().add(this.getUnit());
    numValueEClass.getESuperTypes().add(this.getExpression());
    numValueEClass.getESuperTypes().add(this.getValue());
    infinityEClass.getESuperTypes().add(this.getNumValue());
    intValueEClass.getESuperTypes().add(this.getNumValue());
    floatValueEClass.getESuperTypes().add(this.getNumValue());
    unitlessEClass.getESuperTypes().add(this.getUnit());
    percentageEClass.getESuperTypes().add(this.getUnit());
    derivativeEClass.getESuperTypes().add(this.getVarOrVarOp());
    absoluteValueEClass.getESuperTypes().add(this.getVarOrVarOp());
    differenceEClass.getESuperTypes().add(this.getVarOrVarOp());
    averageEClass.getESuperTypes().add(this.getVarOrVarOp());
    equalityEClass.getESuperTypes().add(this.getOperator());
    greaterThanEClass.getESuperTypes().add(this.getOperator());
    lessThanEClass.getESuperTypes().add(this.getOperator());
    andExpressionEClass.getESuperTypes().add(this.getExpression());
    trueEClass.getESuperTypes().add(this.getExpression());
    trueEClass.getESuperTypes().add(this.getValue());
    falseEClass.getESuperTypes().add(this.getExpression());
    falseEClass.getESuperTypes().add(this.getValue());
    stringValueEClass.getESuperTypes().add(this.getExpression());
    stringValueEClass.getESuperTypes().add(this.getValue());
    qualValueEClass.getESuperTypes().add(this.getExpression());
    qualValueEClass.getESuperTypes().add(this.getValue());
    intervalEClass.getESuperTypes().add(this.getExpression());
    openIntervalEClass.getESuperTypes().add(this.getIntervalBound());
    closedIntervalEClass.getESuperTypes().add(this.getIntervalBound());
    valueWithUnitEClass.getESuperTypes().add(this.getExpression());
    valueWithUnitEClass.getESuperTypes().add(this.getValue());
    assignActionEClass.getESuperTypes().add(this.getAction());
    domainValueEClass.getESuperTypes().add(this.getExpression());
    variableEClass.getESuperTypes().add(this.getVarOrVarOp());
    fmuPropertyEClass.getESuperTypes().add(this.getVariable());
    fmuSignalEClass.getESuperTypes().add(this.getVariable());
    steadyStateSuggestionEClass.getESuperTypes().add(this.getDomainValue());
    powerBondSuggestionEClass.getESuperTypes().add(this.getDomainValue());
    cosimUnitEClass.getESuperTypes().add(this.getUnit());
    frequencyEClass.getESuperTypes().add(this.getCosimUnit());
    saharaPropertyEClass.getESuperTypes().add(this.getVariable());
    saharA_SEClass.getESuperTypes().add(this.getAssignAction());
    saharA_EEClass.getESuperTypes().add(this.getAssignAction());
    saharA_CEClass.getESuperTypes().add(this.getAssignAction());
    saharaUnitEClass.getESuperTypes().add(this.getUnit());
    metersEClass.getESuperTypes().add(this.getSAHARAUnit());
    metersPerSecondEClass.getESuperTypes().add(this.getSAHARAUnit());
    kilometersEClass.getESuperTypes().add(this.getSAHARAUnit());
    kilometersPerHourEClass.getESuperTypes().add(this.getSAHARAUnit());
    forceEClass.getESuperTypes().add(this.getSAHARAUnit());

    // Initialize classes and features; add operations and parameters
    initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRoot_Contract(), this.getContract(), null, "contract", 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_ContractSet(), this.getContractSet(), null, "contractSet", 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(contractSetEClass, ContractSet.class, "ContractSet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getContractSet_Name(), ecorePackage.getEString(), "name", null, 0, 1, ContractSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getContractSet_Contracts(), ecorePackage.getEObject(), null, "contracts", null, 0, -1, ContractSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(contractRefEClass, ContractRef.class, "ContractRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getContractRef_Contract(), this.getContract(), null, "contract", null, 0, 1, ContractRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(contractEClass, Contract.class, "Contract", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getContract_Name(), ecorePackage.getEString(), "name", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getContract_Description(), ecorePackage.getEString(), "description", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getContract_Statements(), this.getStatement(), null, "statements", null, 0, -1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getContract_Scope(), this.getScope(), null, "scope", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getContract_Pattern(), this.getPattern(), null, "pattern", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getContract_Action(), this.getAction(), null, "action", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getContract_DoGenSTL(), ecorePackage.getEBoolean(), "doGenSTL", null, 0, 1, Contract.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(metaStatementEClass, MetaStatement.class, "MetaStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(statementRefEClass, StatementRef.class, "StatementRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getStatementRef_Statement(), this.getStatement(), null, "statement", null, 0, 1, StatementRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(statementEClass, Statement.class, "Statement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getStatement_Name(), ecorePackage.getEString(), "name", null, 0, 1, Statement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getStatement_Var(), this.getVarOrVarOp(), null, "var", null, 0, 1, Statement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getStatement_Oper(), this.getOperator(), null, "oper", null, 0, 1, Statement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getStatement_Expr(), this.getExpression(), null, "expr", null, 0, 1, Statement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(statementOpEClass, StatementOp.class, "StatementOp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(statementAndEClass, StatementAnd.class, "StatementAnd", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getStatementAnd_Statement1(), this.getMetaStatement(), null, "statement1", null, 0, 1, StatementAnd.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getStatementAnd_Statement2(), this.getMetaStatement(), null, "statement2", null, 0, 1, StatementAnd.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(statementOrEClass, StatementOr.class, "StatementOr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getStatementOr_Statement1(), this.getMetaStatement(), null, "statement1", null, 0, 1, StatementOr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getStatementOr_Statement2(), this.getMetaStatement(), null, "statement2", null, 0, 1, StatementOr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(statementNotEClass, StatementNot.class, "StatementNot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getStatementNot_Statement(), this.getMetaStatement(), null, "statement", null, 0, 1, StatementNot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(scopeEClass, Scope.class, "Scope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(globallyScopeEClass, GloballyScope.class, "GloballyScope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(beforeScopeEClass, BeforeScope.class, "BeforeScope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getBeforeScope_Event(), this.getEvent(), null, "event", null, 0, 1, BeforeScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(afterScopeEClass, AfterScope.class, "AfterScope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAfterScope_Event(), this.getEvent(), null, "event", null, 0, 1, AfterScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(betweenScopeEClass, BetweenScope.class, "BetweenScope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getBetweenScope_First(), this.getEvent(), null, "first", null, 0, 1, BetweenScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBetweenScope_Second(), this.getEvent(), null, "second", null, 0, 1, BetweenScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(afterUntilScopeEClass, AfterUntilScope.class, "AfterUntilScope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAfterUntilScope_First(), this.getEvent(), null, "first", null, 0, 1, AfterUntilScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAfterUntilScope_Second(), this.getEvent(), null, "second", null, 0, 1, AfterUntilScope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(patternEClass, Pattern.class, "Pattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPattern_Prob(), this.getProbability(), null, "prob", null, 0, 1, Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(occurrenceEClass, Occurrence.class, "Occurrence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getOccurrence_Statement(), this.getStatement(), null, "statement", null, 0, 1, Occurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(universalityPatternEClass, UniversalityPattern.class, "UniversalityPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getUniversalityPattern_Time(), this.getTime(), null, "time", null, 0, 1, UniversalityPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(absencePatternEClass, AbsencePattern.class, "AbsencePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAbsencePattern_Time(), this.getTime(), null, "time", null, 0, 1, AbsencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(existencePatternEClass, ExistencePattern.class, "ExistencePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExistencePattern_Time(), this.getTime(), null, "time", null, 0, 1, ExistencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(boundedExistencePatternEClass, BoundedExistencePattern.class, "BoundedExistencePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBoundedExistencePattern_N(), ecorePackage.getEInt(), "n", null, 0, 1, BoundedExistencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBoundedExistencePattern_Time(), this.getTime(), null, "time", null, 0, 1, BoundedExistencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(transientStatePatternEClass, TransientStatePattern.class, "TransientStatePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTransientStatePattern_Time(), this.getSingleTime(), null, "time", null, 0, 1, TransientStatePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(steadyStatePatternEClass, SteadyStatePattern.class, "SteadyStatePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(minDurationPatternEClass, MinDurationPattern.class, "MinDurationPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getMinDurationPattern_Duration(), this.getSingleTime(), null, "duration", null, 0, 1, MinDurationPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(maxDurationPatternEClass, MaxDurationPattern.class, "MaxDurationPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getMaxDurationPattern_Duration(), this.getSingleTime(), null, "duration", null, 0, 1, MaxDurationPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(recurrencePatternEClass, RecurrencePattern.class, "RecurrencePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRecurrencePattern_Time(), this.getSingleTime(), null, "time", null, 0, 1, RecurrencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(precStatementEClass, PrecStatement.class, "PrecStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPrecStatement_Statement(), this.getMetaStatement(), null, "statement", null, 0, 1, PrecStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecStatement_Time(), this.getTime(), null, "time", null, 0, 1, PrecStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecStatement_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, PrecStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(orderEClass, Order.class, "Order", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(precedencePatternEClass, PrecedencePattern.class, "PrecedencePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPrecedencePattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, PrecedencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedencePattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, PrecedencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedencePattern_Interval(), this.getInterval(), null, "interval", null, 0, 1, PrecedencePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(precedenceChain1NPatternEClass, PrecedenceChain1NPattern.class, "PrecedenceChain1NPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPrecedenceChain1NPattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, PrecedenceChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedenceChain1NPattern_Statements(), this.getPrecStatement(), null, "statements", null, 0, -1, PrecedenceChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedenceChain1NPattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, PrecedenceChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedenceChain1NPattern_Interval(), this.getInterval(), null, "interval", null, 0, 1, PrecedenceChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPrecedenceChain1NPattern_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, PrecedenceChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(untilPatternEClass, UntilPattern.class, "UntilPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getUntilPattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, UntilPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getUntilPattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, UntilPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getUntilPattern_Time(), this.getTime(), null, "time", null, 0, 1, UntilPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(responsePatternEClass, ResponsePattern.class, "ResponsePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getResponsePattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, ResponsePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponsePattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, ResponsePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponsePattern_Time(), this.getTime(), null, "time", null, 0, 1, ResponsePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponsePattern_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, ResponsePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(responseChain1NPatternEClass, ResponseChain1NPattern.class, "ResponseChain1NPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getResponseChain1NPattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, ResponseChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChain1NPattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, ResponseChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChain1NPattern_Time(), this.getTime(), null, "time", null, 0, 1, ResponseChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChain1NPattern_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, ResponseChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChain1NPattern_Statements(), this.getPrecStatement(), null, "statements", null, 0, -1, ResponseChain1NPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(responseChainN1PatternEClass, ResponseChainN1Pattern.class, "ResponseChainN1Pattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getResponseChainN1Pattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, ResponseChainN1Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChainN1Pattern_Statements(), this.getPrecStatement(), null, "statements", null, 0, -1, ResponseChainN1Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChainN1Pattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, ResponseChainN1Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChainN1Pattern_Time(), this.getTime(), null, "time", null, 0, 1, ResponseChainN1Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseChainN1Pattern_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, ResponseChainN1Pattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(responseInvariancePatternEClass, ResponseInvariancePattern.class, "ResponseInvariancePattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getResponseInvariancePattern_First(), this.getMetaStatement(), null, "first", null, 0, 1, ResponseInvariancePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseInvariancePattern_Second(), this.getMetaStatement(), null, "second", null, 0, 1, ResponseInvariancePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getResponseInvariancePattern_Time(), this.getTime(), null, "time", null, 0, 1, ResponseInvariancePattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(constraintEClass, Constraint.class, "Constraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getConstraint_Statement(), this.getStatement(), null, "statement", null, 0, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(timeEClass, Time.class, "Time", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTime_Unit(), this.getTimeUnit(), null, "unit", null, 0, 1, Time.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(timeIntervalEClass, TimeInterval.class, "TimeInterval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTimeInterval_L_bound(), this.getIntervalBound(), null, "l_bound", null, 0, 1, TimeInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTimeInterval_Min(), this.getNumValue(), null, "min", null, 0, 1, TimeInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTimeInterval_Max(), this.getNumValue(), null, "max", null, 0, 1, TimeInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTimeInterval_R_bound(), this.getIntervalBound(), null, "r_bound", null, 0, 1, TimeInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(upperTimeBoundEClass, UpperTimeBound.class, "UpperTimeBound", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getUpperTimeBound_Val(), this.getNumValue(), null, "val", null, 0, 1, UpperTimeBound.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(lowerTimeBoundEClass, LowerTimeBound.class, "LowerTimeBound", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getLowerTimeBound_Val(), this.getNumValue(), null, "val", null, 0, 1, LowerTimeBound.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(singleTimeEClass, SingleTime.class, "SingleTime", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSingleTime_Val(), this.getNumValue(), null, "val", null, 0, 1, SingleTime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(timeUnitEClass, TimeUnit.class, "TimeUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getTimeUnit_Milliseconds(), ecorePackage.getEString(), "Milliseconds", null, 0, 1, TimeUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getTimeUnit_Seconds(), ecorePackage.getEString(), "Seconds", null, 0, 1, TimeUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(probabilityEClass, Probability.class, "Probability", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getProbability_Prob(), ecorePackage.getEObject(), null, "prob", null, 0, 1, Probability.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(probLessEClass, ProbLess.class, "ProbLess", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(probLessEqEClass, ProbLessEq.class, "ProbLessEq", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(probGreaterEClass, ProbGreater.class, "ProbGreater", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(probGreaterEqEClass, ProbGreaterEq.class, "ProbGreaterEq", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(varOrVarOpEClass, VarOrVarOp.class, "VarOrVarOp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(operatorEClass, Operator.class, "Operator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(numValueEClass, NumValue.class, "NumValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(infinityEClass, Infinity.class, "Infinity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getInfinity_V(), ecorePackage.getEString(), "v", null, 0, 1, Infinity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(intValueEClass, IntValue.class, "IntValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getIntValue_V(), ecorePackage.getEInt(), "v", null, 0, 1, IntValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(floatValueEClass, FloatValue.class, "FloatValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getFloatValue_V(), ecorePackage.getEDouble(), "v", null, 0, 1, FloatValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(unitEClass, Unit.class, "Unit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(unitlessEClass, Unitless.class, "Unitless", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(percentageEClass, Percentage.class, "Percentage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(derivativeEClass, Derivative.class, "Derivative", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDerivative_Var(), this.getVarOrVarOp(), null, "var", null, 0, 1, Derivative.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(absoluteValueEClass, AbsoluteValue.class, "AbsoluteValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAbsoluteValue_Var(), this.getVarOrVarOp(), null, "var", null, 0, 1, AbsoluteValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(differenceEClass, Difference.class, "Difference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDifference_Var(), this.getVarOrVarOp(), null, "var", null, 0, 1, Difference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDifference_Var2(), this.getVarOrVarOp(), null, "var2", null, 0, 1, Difference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(averageEClass, Average.class, "Average", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAverage_Var(), this.getVarOrVarOp(), null, "var", null, 0, 1, Average.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAverage_Duration(), this.getSingleTime(), null, "duration", null, 0, 1, Average.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(equalityEClass, Equality.class, "Equality", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(greaterThanEClass, GreaterThan.class, "GreaterThan", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getGreaterThan_EqualTo(), ecorePackage.getEBoolean(), "equalTo", null, 0, 1, GreaterThan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(lessThanEClass, LessThan.class, "LessThan", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getLessThan_EqualTo(), ecorePackage.getEBoolean(), "equalTo", null, 0, 1, LessThan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(andExpressionEClass, AndExpression.class, "AndExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAndExpression_Arg0(), this.getExpression(), null, "arg0", null, 0, 1, AndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAndExpression_Arg1(), this.getExpression(), null, "arg1", null, 0, 1, AndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(trueEClass, True.class, "True", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(falseEClass, False.class, "False", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(stringValueEClass, StringValue.class, "StringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getStringValue_Val(), ecorePackage.getEString(), "val", null, 0, 1, StringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(qualValueEClass, QualValue.class, "QualValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getQualValue_Val(), this.getLOW_MED_HIGH(), "val", null, 0, 1, QualValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(intervalEClass, Interval.class, "Interval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getInterval_L_bound(), this.getIntervalBound(), null, "l_bound", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInterval_Min(), this.getValue(), null, "min", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInterval_Max(), this.getValue(), null, "max", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInterval_Unit(), this.getUnit(), null, "unit", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getInterval_R_bound(), this.getIntervalBound(), null, "r_bound", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(intervalBoundEClass, IntervalBound.class, "IntervalBound", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(openIntervalEClass, OpenInterval.class, "OpenInterval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(closedIntervalEClass, ClosedInterval.class, "ClosedInterval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(valueWithUnitEClass, ValueWithUnit.class, "ValueWithUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getValueWithUnit_Val(), this.getNumValue(), null, "val", null, 0, 1, ValueWithUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getValueWithUnit_Unit(), this.getUnit(), null, "unit", null, 0, 1, ValueWithUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(assignActionEClass, AssignAction.class, "AssignAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(valueEClass, Value.class, "Value", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(domainValueEClass, DomainValue.class, "DomainValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(fmuPropertyEClass, FMUProperty.class, "FMUProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getFMUProperty_Fmu(), this.getFMUInstance(), null, "fmu", null, 0, 1, FMUProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFMUProperty_Property(), this.getFMUPropertyEnum(), "property", null, 0, 1, FMUProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

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

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

    initEClass(steadyStateSuggestionEClass, SteadyStateSuggestion.class, "SteadyStateSuggestion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(powerBondSuggestionEClass, PowerBondSuggestion.class, "PowerBondSuggestion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPowerBondSuggestion_OtherSignal(), this.getFMUSignal(), null, "otherSignal", null, 0, 1, PowerBondSuggestion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(cosimUnitEClass, CosimUnit.class, "CosimUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(frequencyEClass, Frequency.class, "Frequency", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(saharaPropertyEClass, SAHARAProperty.class, "SAHARAProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSAHARAProperty_Val(), this.getSAHARAPropertyEnum(), "val", null, 0, 1, SAHARAProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(saharA_SEClass, be.uantwerpen.cosys.contractLang.SAHARA_S.class, "SAHARA_S", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSAHARA_S_Val(), this.getSAHARA_S_Enum(), "val", null, 0, 1, be.uantwerpen.cosys.contractLang.SAHARA_S.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(saharA_EEClass, be.uantwerpen.cosys.contractLang.SAHARA_E.class, "SAHARA_E", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSAHARA_E_Val(), this.getSAHARA_E_Enum(), "val", null, 0, 1, be.uantwerpen.cosys.contractLang.SAHARA_E.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(saharA_CEClass, be.uantwerpen.cosys.contractLang.SAHARA_C.class, "SAHARA_C", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSAHARA_C_Val(), this.getSAHARA_C_Enum(), "val", null, 0, 1, be.uantwerpen.cosys.contractLang.SAHARA_C.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(saharaUnitEClass, SAHARAUnit.class, "SAHARAUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(metersEClass, Meters.class, "Meters", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(metersPerSecondEClass, MetersPerSecond.class, "MetersPerSecond", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(kilometersEClass, Kilometers.class, "Kilometers", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(kilometersPerHourEClass, KilometersPerHour.class, "KilometersPerHour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(forceEClass, Force.class, "Force", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    // Initialize enums and add enum literals
    initEEnum(loW_MED_HIGHEEnum, be.uantwerpen.cosys.contractLang.LOW_MED_HIGH.class, "LOW_MED_HIGH");
    addEEnumLiteral(loW_MED_HIGHEEnum, be.uantwerpen.cosys.contractLang.LOW_MED_HIGH.NONE);
    addEEnumLiteral(loW_MED_HIGHEEnum, be.uantwerpen.cosys.contractLang.LOW_MED_HIGH.LOW);
    addEEnumLiteral(loW_MED_HIGHEEnum, be.uantwerpen.cosys.contractLang.LOW_MED_HIGH.MED);
    addEEnumLiteral(loW_MED_HIGHEEnum, be.uantwerpen.cosys.contractLang.LOW_MED_HIGH.HIGH);

    initEEnum(fmuPropertyEnumEEnum, FMUPropertyEnum.class, "FMUPropertyEnum");
    addEEnumLiteral(fmuPropertyEnumEEnum, FMUPropertyEnum.EXEC_RATE);
    addEEnumLiteral(fmuPropertyEnumEEnum, FMUPropertyEnum.IS_PHYSICAL);

    initEEnum(saharaPropertyEnumEEnum, SAHARAPropertyEnum.class, "SAHARAPropertyEnum");
    addEEnumLiteral(saharaPropertyEnumEEnum, SAHARAPropertyEnum.ACCEL);
    addEEnumLiteral(saharaPropertyEnumEEnum, SAHARAPropertyEnum.SPEED);
    addEEnumLiteral(saharaPropertyEnumEEnum, SAHARAPropertyEnum.FRICTION_FORCE);
    addEEnumLiteral(saharaPropertyEnumEEnum, SAHARAPropertyEnum.LATERAL_FORCE);

    initEEnum(saharA_S_EnumEEnum, SAHARA_S_Enum.class, "SAHARA_S_Enum");
    addEEnumLiteral(saharA_S_EnumEEnum, SAHARA_S_Enum.S0);
    addEEnumLiteral(saharA_S_EnumEEnum, SAHARA_S_Enum.S1);
    addEEnumLiteral(saharA_S_EnumEEnum, SAHARA_S_Enum.S2);
    addEEnumLiteral(saharA_S_EnumEEnum, SAHARA_S_Enum.S3);

    initEEnum(saharA_E_EnumEEnum, SAHARA_E_Enum.class, "SAHARA_E_Enum");
    addEEnumLiteral(saharA_E_EnumEEnum, SAHARA_E_Enum.E0);
    addEEnumLiteral(saharA_E_EnumEEnum, SAHARA_E_Enum.E1);
    addEEnumLiteral(saharA_E_EnumEEnum, SAHARA_E_Enum.E2);
    addEEnumLiteral(saharA_E_EnumEEnum, SAHARA_E_Enum.E3);
    addEEnumLiteral(saharA_E_EnumEEnum, SAHARA_E_Enum.E4);

    initEEnum(saharA_C_EnumEEnum, SAHARA_C_Enum.class, "SAHARA_C_Enum");
    addEEnumLiteral(saharA_C_EnumEEnum, SAHARA_C_Enum.C0);
    addEEnumLiteral(saharA_C_EnumEEnum, SAHARA_C_Enum.C1);
    addEEnumLiteral(saharA_C_EnumEEnum, SAHARA_C_Enum.C2);
    addEEnumLiteral(saharA_C_EnumEEnum, SAHARA_C_Enum.C3);

    // Create resource
    createResource(eNS_URI);
  }

} //ContractLangPackageImpl
