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

import be.uantwerpen.cosys.contractLang.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see be.uantwerpen.cosys.contractLang.ContractLangPackage
 * @generated
 */
public class ContractLangSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static ContractLangPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ContractLangSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = ContractLangPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case ContractLangPackage.ROOT:
      {
        Root root = (Root)theEObject;
        T result = caseRoot(root);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.CONTRACT_SET:
      {
        ContractSet contractSet = (ContractSet)theEObject;
        T result = caseContractSet(contractSet);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.CONTRACT_REF:
      {
        ContractRef contractRef = (ContractRef)theEObject;
        T result = caseContractRef(contractRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.CONTRACT:
      {
        Contract contract = (Contract)theEObject;
        T result = caseContract(contract);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.EVENT:
      {
        Event event = (Event)theEObject;
        T result = caseEvent(event);
        if (result == null) result = caseStatement(event);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROPERTY:
      {
        Property property = (Property)theEObject;
        T result = caseProperty(property);
        if (result == null) result = caseStatement(property);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.META_STATEMENT:
      {
        MetaStatement metaStatement = (MetaStatement)theEObject;
        T result = caseMetaStatement(metaStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT_REF:
      {
        StatementRef statementRef = (StatementRef)theEObject;
        T result = caseStatementRef(statementRef);
        if (result == null) result = caseMetaStatement(statementRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT:
      {
        Statement statement = (Statement)theEObject;
        T result = caseStatement(statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT_OP:
      {
        StatementOp statementOp = (StatementOp)theEObject;
        T result = caseStatementOp(statementOp);
        if (result == null) result = caseMetaStatement(statementOp);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT_AND:
      {
        StatementAnd statementAnd = (StatementAnd)theEObject;
        T result = caseStatementAnd(statementAnd);
        if (result == null) result = caseStatementOp(statementAnd);
        if (result == null) result = caseMetaStatement(statementAnd);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT_OR:
      {
        StatementOr statementOr = (StatementOr)theEObject;
        T result = caseStatementOr(statementOr);
        if (result == null) result = caseStatementOp(statementOr);
        if (result == null) result = caseMetaStatement(statementOr);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STATEMENT_NOT:
      {
        StatementNot statementNot = (StatementNot)theEObject;
        T result = caseStatementNot(statementNot);
        if (result == null) result = caseStatementOp(statementNot);
        if (result == null) result = caseMetaStatement(statementNot);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SCOPE:
      {
        Scope scope = (Scope)theEObject;
        T result = caseScope(scope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.GLOBALLY_SCOPE:
      {
        GloballyScope globallyScope = (GloballyScope)theEObject;
        T result = caseGloballyScope(globallyScope);
        if (result == null) result = caseScope(globallyScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.BEFORE_SCOPE:
      {
        BeforeScope beforeScope = (BeforeScope)theEObject;
        T result = caseBeforeScope(beforeScope);
        if (result == null) result = caseScope(beforeScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.AFTER_SCOPE:
      {
        AfterScope afterScope = (AfterScope)theEObject;
        T result = caseAfterScope(afterScope);
        if (result == null) result = caseScope(afterScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.BETWEEN_SCOPE:
      {
        BetweenScope betweenScope = (BetweenScope)theEObject;
        T result = caseBetweenScope(betweenScope);
        if (result == null) result = caseScope(betweenScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.AFTER_UNTIL_SCOPE:
      {
        AfterUntilScope afterUntilScope = (AfterUntilScope)theEObject;
        T result = caseAfterUntilScope(afterUntilScope);
        if (result == null) result = caseScope(afterUntilScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PATTERN:
      {
        Pattern pattern = (Pattern)theEObject;
        T result = casePattern(pattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.OCCURRENCE:
      {
        Occurrence occurrence = (Occurrence)theEObject;
        T result = caseOccurrence(occurrence);
        if (result == null) result = casePattern(occurrence);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.UNIVERSALITY_PATTERN:
      {
        UniversalityPattern universalityPattern = (UniversalityPattern)theEObject;
        T result = caseUniversalityPattern(universalityPattern);
        if (result == null) result = caseOccurrence(universalityPattern);
        if (result == null) result = casePattern(universalityPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.ABSENCE_PATTERN:
      {
        AbsencePattern absencePattern = (AbsencePattern)theEObject;
        T result = caseAbsencePattern(absencePattern);
        if (result == null) result = caseOccurrence(absencePattern);
        if (result == null) result = casePattern(absencePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.EXISTENCE_PATTERN:
      {
        ExistencePattern existencePattern = (ExistencePattern)theEObject;
        T result = caseExistencePattern(existencePattern);
        if (result == null) result = caseOccurrence(existencePattern);
        if (result == null) result = casePattern(existencePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.BOUNDED_EXISTENCE_PATTERN:
      {
        BoundedExistencePattern boundedExistencePattern = (BoundedExistencePattern)theEObject;
        T result = caseBoundedExistencePattern(boundedExistencePattern);
        if (result == null) result = caseOccurrence(boundedExistencePattern);
        if (result == null) result = casePattern(boundedExistencePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.TRANSIENT_STATE_PATTERN:
      {
        TransientStatePattern transientStatePattern = (TransientStatePattern)theEObject;
        T result = caseTransientStatePattern(transientStatePattern);
        if (result == null) result = caseOccurrence(transientStatePattern);
        if (result == null) result = casePattern(transientStatePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STEADY_STATE_PATTERN:
      {
        SteadyStatePattern steadyStatePattern = (SteadyStatePattern)theEObject;
        T result = caseSteadyStatePattern(steadyStatePattern);
        if (result == null) result = caseOccurrence(steadyStatePattern);
        if (result == null) result = casePattern(steadyStatePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.MIN_DURATION_PATTERN:
      {
        MinDurationPattern minDurationPattern = (MinDurationPattern)theEObject;
        T result = caseMinDurationPattern(minDurationPattern);
        if (result == null) result = caseOccurrence(minDurationPattern);
        if (result == null) result = casePattern(minDurationPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.MAX_DURATION_PATTERN:
      {
        MaxDurationPattern maxDurationPattern = (MaxDurationPattern)theEObject;
        T result = caseMaxDurationPattern(maxDurationPattern);
        if (result == null) result = caseOccurrence(maxDurationPattern);
        if (result == null) result = casePattern(maxDurationPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.RECURRENCE_PATTERN:
      {
        RecurrencePattern recurrencePattern = (RecurrencePattern)theEObject;
        T result = caseRecurrencePattern(recurrencePattern);
        if (result == null) result = caseOccurrence(recurrencePattern);
        if (result == null) result = casePattern(recurrencePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PREC_STATEMENT:
      {
        PrecStatement precStatement = (PrecStatement)theEObject;
        T result = casePrecStatement(precStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.ORDER:
      {
        Order order = (Order)theEObject;
        T result = caseOrder(order);
        if (result == null) result = casePattern(order);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PRECEDENCE_PATTERN:
      {
        PrecedencePattern precedencePattern = (PrecedencePattern)theEObject;
        T result = casePrecedencePattern(precedencePattern);
        if (result == null) result = caseOrder(precedencePattern);
        if (result == null) result = casePattern(precedencePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PRECEDENCE_CHAIN1_NPATTERN:
      {
        PrecedenceChain1NPattern precedenceChain1NPattern = (PrecedenceChain1NPattern)theEObject;
        T result = casePrecedenceChain1NPattern(precedenceChain1NPattern);
        if (result == null) result = caseOrder(precedenceChain1NPattern);
        if (result == null) result = casePattern(precedenceChain1NPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.UNTIL_PATTERN:
      {
        UntilPattern untilPattern = (UntilPattern)theEObject;
        T result = caseUntilPattern(untilPattern);
        if (result == null) result = caseOrder(untilPattern);
        if (result == null) result = casePattern(untilPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.RESPONSE_PATTERN:
      {
        ResponsePattern responsePattern = (ResponsePattern)theEObject;
        T result = caseResponsePattern(responsePattern);
        if (result == null) result = caseOrder(responsePattern);
        if (result == null) result = casePattern(responsePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.RESPONSE_CHAIN1_NPATTERN:
      {
        ResponseChain1NPattern responseChain1NPattern = (ResponseChain1NPattern)theEObject;
        T result = caseResponseChain1NPattern(responseChain1NPattern);
        if (result == null) result = caseOrder(responseChain1NPattern);
        if (result == null) result = casePattern(responseChain1NPattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.RESPONSE_CHAIN_N1_PATTERN:
      {
        ResponseChainN1Pattern responseChainN1Pattern = (ResponseChainN1Pattern)theEObject;
        T result = caseResponseChainN1Pattern(responseChainN1Pattern);
        if (result == null) result = caseOrder(responseChainN1Pattern);
        if (result == null) result = casePattern(responseChainN1Pattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.RESPONSE_INVARIANCE_PATTERN:
      {
        ResponseInvariancePattern responseInvariancePattern = (ResponseInvariancePattern)theEObject;
        T result = caseResponseInvariancePattern(responseInvariancePattern);
        if (result == null) result = caseOrder(responseInvariancePattern);
        if (result == null) result = casePattern(responseInvariancePattern);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.CONSTRAINT:
      {
        Constraint constraint = (Constraint)theEObject;
        T result = caseConstraint(constraint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.TIME:
      {
        Time time = (Time)theEObject;
        T result = caseTime(time);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.TIME_INTERVAL:
      {
        TimeInterval timeInterval = (TimeInterval)theEObject;
        T result = caseTimeInterval(timeInterval);
        if (result == null) result = caseTime(timeInterval);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.UPPER_TIME_BOUND:
      {
        UpperTimeBound upperTimeBound = (UpperTimeBound)theEObject;
        T result = caseUpperTimeBound(upperTimeBound);
        if (result == null) result = caseTime(upperTimeBound);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.LOWER_TIME_BOUND:
      {
        LowerTimeBound lowerTimeBound = (LowerTimeBound)theEObject;
        T result = caseLowerTimeBound(lowerTimeBound);
        if (result == null) result = caseTime(lowerTimeBound);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SINGLE_TIME:
      {
        SingleTime singleTime = (SingleTime)theEObject;
        T result = caseSingleTime(singleTime);
        if (result == null) result = caseTime(singleTime);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.TIME_UNIT:
      {
        TimeUnit timeUnit = (TimeUnit)theEObject;
        T result = caseTimeUnit(timeUnit);
        if (result == null) result = caseUnit(timeUnit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROBABILITY:
      {
        Probability probability = (Probability)theEObject;
        T result = caseProbability(probability);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROB_LESS:
      {
        ProbLess probLess = (ProbLess)theEObject;
        T result = caseProbLess(probLess);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROB_LESS_EQ:
      {
        ProbLessEq probLessEq = (ProbLessEq)theEObject;
        T result = caseProbLessEq(probLessEq);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROB_GREATER:
      {
        ProbGreater probGreater = (ProbGreater)theEObject;
        T result = caseProbGreater(probGreater);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PROB_GREATER_EQ:
      {
        ProbGreaterEq probGreaterEq = (ProbGreaterEq)theEObject;
        T result = caseProbGreaterEq(probGreaterEq);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.ACTION:
      {
        Action action = (Action)theEObject;
        T result = caseAction(action);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.VAR_OR_VAR_OP:
      {
        VarOrVarOp varOrVarOp = (VarOrVarOp)theEObject;
        T result = caseVarOrVarOp(varOrVarOp);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.OPERATOR:
      {
        Operator operator = (Operator)theEObject;
        T result = caseOperator(operator);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.EXPRESSION:
      {
        Expression expression = (Expression)theEObject;
        T result = caseExpression(expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.NUM_VALUE:
      {
        NumValue numValue = (NumValue)theEObject;
        T result = caseNumValue(numValue);
        if (result == null) result = caseExpression(numValue);
        if (result == null) result = caseValue(numValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.INFINITY:
      {
        Infinity infinity = (Infinity)theEObject;
        T result = caseInfinity(infinity);
        if (result == null) result = caseNumValue(infinity);
        if (result == null) result = caseExpression(infinity);
        if (result == null) result = caseValue(infinity);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.INT_VALUE:
      {
        IntValue intValue = (IntValue)theEObject;
        T result = caseIntValue(intValue);
        if (result == null) result = caseNumValue(intValue);
        if (result == null) result = caseExpression(intValue);
        if (result == null) result = caseValue(intValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FLOAT_VALUE:
      {
        FloatValue floatValue = (FloatValue)theEObject;
        T result = caseFloatValue(floatValue);
        if (result == null) result = caseNumValue(floatValue);
        if (result == null) result = caseExpression(floatValue);
        if (result == null) result = caseValue(floatValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.UNIT:
      {
        Unit unit = (Unit)theEObject;
        T result = caseUnit(unit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.UNITLESS:
      {
        Unitless unitless = (Unitless)theEObject;
        T result = caseUnitless(unitless);
        if (result == null) result = caseUnit(unitless);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.PERCENTAGE:
      {
        Percentage percentage = (Percentage)theEObject;
        T result = casePercentage(percentage);
        if (result == null) result = caseUnit(percentage);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.DERIVATIVE:
      {
        Derivative derivative = (Derivative)theEObject;
        T result = caseDerivative(derivative);
        if (result == null) result = caseVarOrVarOp(derivative);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.ABSOLUTE_VALUE:
      {
        AbsoluteValue absoluteValue = (AbsoluteValue)theEObject;
        T result = caseAbsoluteValue(absoluteValue);
        if (result == null) result = caseVarOrVarOp(absoluteValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.DIFFERENCE:
      {
        Difference difference = (Difference)theEObject;
        T result = caseDifference(difference);
        if (result == null) result = caseVarOrVarOp(difference);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.AVERAGE:
      {
        Average average = (Average)theEObject;
        T result = caseAverage(average);
        if (result == null) result = caseVarOrVarOp(average);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.EQUALITY:
      {
        Equality equality = (Equality)theEObject;
        T result = caseEquality(equality);
        if (result == null) result = caseOperator(equality);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.GREATER_THAN:
      {
        GreaterThan greaterThan = (GreaterThan)theEObject;
        T result = caseGreaterThan(greaterThan);
        if (result == null) result = caseOperator(greaterThan);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.LESS_THAN:
      {
        LessThan lessThan = (LessThan)theEObject;
        T result = caseLessThan(lessThan);
        if (result == null) result = caseOperator(lessThan);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.AND_EXPRESSION:
      {
        AndExpression andExpression = (AndExpression)theEObject;
        T result = caseAndExpression(andExpression);
        if (result == null) result = caseExpression(andExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.TRUE:
      {
        True true_ = (True)theEObject;
        T result = caseTrue(true_);
        if (result == null) result = caseExpression(true_);
        if (result == null) result = caseValue(true_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FALSE:
      {
        False false_ = (False)theEObject;
        T result = caseFalse(false_);
        if (result == null) result = caseExpression(false_);
        if (result == null) result = caseValue(false_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STRING_VALUE:
      {
        StringValue stringValue = (StringValue)theEObject;
        T result = caseStringValue(stringValue);
        if (result == null) result = caseExpression(stringValue);
        if (result == null) result = caseValue(stringValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.QUAL_VALUE:
      {
        QualValue qualValue = (QualValue)theEObject;
        T result = caseQualValue(qualValue);
        if (result == null) result = caseExpression(qualValue);
        if (result == null) result = caseValue(qualValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.INTERVAL:
      {
        Interval interval = (Interval)theEObject;
        T result = caseInterval(interval);
        if (result == null) result = caseExpression(interval);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.INTERVAL_BOUND:
      {
        IntervalBound intervalBound = (IntervalBound)theEObject;
        T result = caseIntervalBound(intervalBound);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.OPEN_INTERVAL:
      {
        OpenInterval openInterval = (OpenInterval)theEObject;
        T result = caseOpenInterval(openInterval);
        if (result == null) result = caseIntervalBound(openInterval);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.CLOSED_INTERVAL:
      {
        ClosedInterval closedInterval = (ClosedInterval)theEObject;
        T result = caseClosedInterval(closedInterval);
        if (result == null) result = caseIntervalBound(closedInterval);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.VALUE_WITH_UNIT:
      {
        ValueWithUnit valueWithUnit = (ValueWithUnit)theEObject;
        T result = caseValueWithUnit(valueWithUnit);
        if (result == null) result = caseExpression(valueWithUnit);
        if (result == null) result = caseValue(valueWithUnit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.ASSIGN_ACTION:
      {
        AssignAction assignAction = (AssignAction)theEObject;
        T result = caseAssignAction(assignAction);
        if (result == null) result = caseAction(assignAction);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.VALUE:
      {
        Value value = (Value)theEObject;
        T result = caseValue(value);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.DOMAIN_VALUE:
      {
        DomainValue domainValue = (DomainValue)theEObject;
        T result = caseDomainValue(domainValue);
        if (result == null) result = caseExpression(domainValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.VARIABLE:
      {
        Variable variable = (Variable)theEObject;
        T result = caseVariable(variable);
        if (result == null) result = caseVarOrVarOp(variable);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FMU_PROPERTY:
      {
        FMUProperty fmuProperty = (FMUProperty)theEObject;
        T result = caseFMUProperty(fmuProperty);
        if (result == null) result = caseVariable(fmuProperty);
        if (result == null) result = caseVarOrVarOp(fmuProperty);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FMU_INSTANCE:
      {
        FMUInstance fmuInstance = (FMUInstance)theEObject;
        T result = caseFMUInstance(fmuInstance);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FMU_SIGNAL:
      {
        FMUSignal fmuSignal = (FMUSignal)theEObject;
        T result = caseFMUSignal(fmuSignal);
        if (result == null) result = caseVariable(fmuSignal);
        if (result == null) result = caseVarOrVarOp(fmuSignal);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.STEADY_STATE_SUGGESTION:
      {
        SteadyStateSuggestion steadyStateSuggestion = (SteadyStateSuggestion)theEObject;
        T result = caseSteadyStateSuggestion(steadyStateSuggestion);
        if (result == null) result = caseDomainValue(steadyStateSuggestion);
        if (result == null) result = caseExpression(steadyStateSuggestion);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.POWER_BOND_SUGGESTION:
      {
        PowerBondSuggestion powerBondSuggestion = (PowerBondSuggestion)theEObject;
        T result = casePowerBondSuggestion(powerBondSuggestion);
        if (result == null) result = caseDomainValue(powerBondSuggestion);
        if (result == null) result = caseExpression(powerBondSuggestion);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.COSIM_UNIT:
      {
        CosimUnit cosimUnit = (CosimUnit)theEObject;
        T result = caseCosimUnit(cosimUnit);
        if (result == null) result = caseUnit(cosimUnit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FREQUENCY:
      {
        Frequency frequency = (Frequency)theEObject;
        T result = caseFrequency(frequency);
        if (result == null) result = caseCosimUnit(frequency);
        if (result == null) result = caseUnit(frequency);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SAHARA_PROPERTY:
      {
        SAHARAProperty saharaProperty = (SAHARAProperty)theEObject;
        T result = caseSAHARAProperty(saharaProperty);
        if (result == null) result = caseVariable(saharaProperty);
        if (result == null) result = caseVarOrVarOp(saharaProperty);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SAHARA_S:
      {
        SAHARA_S saharA_S = (SAHARA_S)theEObject;
        T result = caseSAHARA_S(saharA_S);
        if (result == null) result = caseAssignAction(saharA_S);
        if (result == null) result = caseAction(saharA_S);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SAHARA_E:
      {
        SAHARA_E saharA_E = (SAHARA_E)theEObject;
        T result = caseSAHARA_E(saharA_E);
        if (result == null) result = caseAssignAction(saharA_E);
        if (result == null) result = caseAction(saharA_E);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SAHARA_C:
      {
        SAHARA_C saharA_C = (SAHARA_C)theEObject;
        T result = caseSAHARA_C(saharA_C);
        if (result == null) result = caseAssignAction(saharA_C);
        if (result == null) result = caseAction(saharA_C);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.SAHARA_UNIT:
      {
        SAHARAUnit saharaUnit = (SAHARAUnit)theEObject;
        T result = caseSAHARAUnit(saharaUnit);
        if (result == null) result = caseUnit(saharaUnit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.METERS:
      {
        Meters meters = (Meters)theEObject;
        T result = caseMeters(meters);
        if (result == null) result = caseSAHARAUnit(meters);
        if (result == null) result = caseUnit(meters);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.METERS_PER_SECOND:
      {
        MetersPerSecond metersPerSecond = (MetersPerSecond)theEObject;
        T result = caseMetersPerSecond(metersPerSecond);
        if (result == null) result = caseSAHARAUnit(metersPerSecond);
        if (result == null) result = caseUnit(metersPerSecond);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.KILOMETERS:
      {
        Kilometers kilometers = (Kilometers)theEObject;
        T result = caseKilometers(kilometers);
        if (result == null) result = caseSAHARAUnit(kilometers);
        if (result == null) result = caseUnit(kilometers);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.KILOMETERS_PER_HOUR:
      {
        KilometersPerHour kilometersPerHour = (KilometersPerHour)theEObject;
        T result = caseKilometersPerHour(kilometersPerHour);
        if (result == null) result = caseSAHARAUnit(kilometersPerHour);
        if (result == null) result = caseUnit(kilometersPerHour);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ContractLangPackage.FORCE:
      {
        Force force = (Force)theEObject;
        T result = caseForce(force);
        if (result == null) result = caseSAHARAUnit(force);
        if (result == null) result = caseUnit(force);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Root</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Root</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRoot(Root object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Contract Set</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Contract Set</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContractSet(ContractSet object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Contract Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Contract Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContractRef(ContractRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Contract</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Contract</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContract(Contract object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Event</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Event</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEvent(Event object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProperty(Property object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Meta Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Meta Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMetaStatement(MetaStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatementRef(StatementRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatement(Statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement Op</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement Op</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatementOp(StatementOp object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement And</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement And</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatementAnd(StatementAnd object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement Or</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement Or</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatementOr(StatementOr object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Statement Not</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Statement Not</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStatementNot(StatementNot object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseScope(Scope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Globally Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Globally Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGloballyScope(GloballyScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Before Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Before Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBeforeScope(BeforeScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>After Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>After Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAfterScope(AfterScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Between Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Between Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBetweenScope(BetweenScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>After Until Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>After Until Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAfterUntilScope(AfterUntilScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePattern(Pattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Occurrence</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Occurrence</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOccurrence(Occurrence object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Universality Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Universality Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUniversalityPattern(UniversalityPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Absence Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Absence Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAbsencePattern(AbsencePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Existence Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Existence Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExistencePattern(ExistencePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Bounded Existence Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Bounded Existence Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBoundedExistencePattern(BoundedExistencePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Transient State Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Transient State Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTransientStatePattern(TransientStatePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Steady State Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Steady State Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSteadyStatePattern(SteadyStatePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Min Duration Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Min Duration Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMinDurationPattern(MinDurationPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Max Duration Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Max Duration Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMaxDurationPattern(MaxDurationPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Recurrence Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Recurrence Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRecurrencePattern(RecurrencePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prec Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prec Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrecStatement(PrecStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Order</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Order</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOrder(Order object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Precedence Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Precedence Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrecedencePattern(PrecedencePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Precedence Chain1 NPattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Precedence Chain1 NPattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrecedenceChain1NPattern(PrecedenceChain1NPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Until Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Until Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUntilPattern(UntilPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Response Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Response Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseResponsePattern(ResponsePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Response Chain1 NPattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Response Chain1 NPattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseResponseChain1NPattern(ResponseChain1NPattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Response Chain N1 Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Response Chain N1 Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseResponseChainN1Pattern(ResponseChainN1Pattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Response Invariance Pattern</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Response Invariance Pattern</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseResponseInvariancePattern(ResponseInvariancePattern object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Constraint</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Constraint</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstraint(Constraint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTime(Time object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time Interval</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time Interval</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTimeInterval(TimeInterval object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Upper Time Bound</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Upper Time Bound</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUpperTimeBound(UpperTimeBound object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Lower Time Bound</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Lower Time Bound</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLowerTimeBound(LowerTimeBound object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Single Time</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Single Time</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSingleTime(SingleTime object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTimeUnit(TimeUnit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Probability</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Probability</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProbability(Probability object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prob Less</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prob Less</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProbLess(ProbLess object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prob Less Eq</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prob Less Eq</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProbLessEq(ProbLessEq object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prob Greater</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prob Greater</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProbGreater(ProbGreater object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Prob Greater Eq</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Prob Greater Eq</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProbGreaterEq(ProbGreaterEq object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Action</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Action</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAction(Action object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Var Or Var Op</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Var Or Var Op</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVarOrVarOp(VarOrVarOp object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Operator</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Operator</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOperator(Operator object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExpression(Expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Num Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Num Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNumValue(NumValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Infinity</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Infinity</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInfinity(Infinity object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Int Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Int Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntValue(IntValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Float Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Float Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFloatValue(FloatValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnit(Unit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unitless</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unitless</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnitless(Unitless object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Percentage</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Percentage</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePercentage(Percentage object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Derivative</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Derivative</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDerivative(Derivative object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAbsoluteValue(AbsoluteValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Difference</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Difference</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDifference(Difference object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Average</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Average</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAverage(Average object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Equality</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Equality</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEquality(Equality object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Greater Than</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Greater Than</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGreaterThan(GreaterThan object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Less Than</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Less Than</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLessThan(LessThan object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>And Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>And Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAndExpression(AndExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>True</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>True</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTrue(True object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>False</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>False</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFalse(False object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>String Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>String Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStringValue(StringValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Qual Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Qual Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseQualValue(QualValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interval</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interval</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInterval(Interval object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interval Bound</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interval Bound</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntervalBound(IntervalBound object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Open Interval</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Open Interval</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOpenInterval(OpenInterval object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Closed Interval</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Closed Interval</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseClosedInterval(ClosedInterval object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValueWithUnit(ValueWithUnit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Assign Action</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Assign Action</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAssignAction(AssignAction object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValue(Value object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Domain Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Domain Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDomainValue(DomainValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Variable</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Variable</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVariable(Variable object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>FMU Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>FMU Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFMUProperty(FMUProperty object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFMUInstance(FMUInstance object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFMUSignal(FMUSignal object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSteadyStateSuggestion(SteadyStateSuggestion object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Power Bond Suggestion</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Power Bond Suggestion</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePowerBondSuggestion(PowerBondSuggestion object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Cosim Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Cosim Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCosimUnit(CosimUnit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Frequency</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Frequency</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFrequency(Frequency object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>SAHARA Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>SAHARA Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSAHARAProperty(SAHARAProperty object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>SAHARA S</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>SAHARA S</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSAHARA_S(SAHARA_S object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>SAHARA E</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>SAHARA E</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSAHARA_E(SAHARA_E object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>SAHARA C</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>SAHARA C</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSAHARA_C(SAHARA_C object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>SAHARA Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>SAHARA Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSAHARAUnit(SAHARAUnit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Meters</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Meters</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMeters(Meters object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMetersPerSecond(MetersPerSecond object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Kilometers</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Kilometers</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseKilometers(Kilometers object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Kilometers Per Hour</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Kilometers Per Hour</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseKilometersPerHour(KilometersPerHour object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Force</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Force</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseForce(Force object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //ContractLangSwitch
