/**
 */
package org.etsi.mts.tdl.impl;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.etsi.mts.tdl.Action;
import org.etsi.mts.tdl.ActionBehaviour;
import org.etsi.mts.tdl.ActionReference;
import org.etsi.mts.tdl.AlternativeBehaviour;
import org.etsi.mts.tdl.Annotation;
import org.etsi.mts.tdl.AnnotationType;
import org.etsi.mts.tdl.AnyValue;
import org.etsi.mts.tdl.AnyValueOrOmit;
import org.etsi.mts.tdl.Assertion;
import org.etsi.mts.tdl.Assignment;
import org.etsi.mts.tdl.AtomicBehaviour;
import org.etsi.mts.tdl.Behaviour;
import org.etsi.mts.tdl.BehaviourDescription;
import org.etsi.mts.tdl.Block;
import org.etsi.mts.tdl.BoundedLoopBehaviour;
import org.etsi.mts.tdl.Break;
import org.etsi.mts.tdl.CollectionDataInstance;
import org.etsi.mts.tdl.CollectionDataType;
import org.etsi.mts.tdl.CombinedBehaviour;
import org.etsi.mts.tdl.Comment;
import org.etsi.mts.tdl.ComponentInstance;
import org.etsi.mts.tdl.ComponentInstanceBinding;
import org.etsi.mts.tdl.ComponentInstanceRole;
import org.etsi.mts.tdl.ComponentType;
import org.etsi.mts.tdl.CompoundBehaviour;
import org.etsi.mts.tdl.ConditionalBehaviour;
import org.etsi.mts.tdl.Connection;
import org.etsi.mts.tdl.Constraint;
import org.etsi.mts.tdl.ConstraintType;
import org.etsi.mts.tdl.DataElementMapping;
import org.etsi.mts.tdl.DataElementUse;
import org.etsi.mts.tdl.DataInstance;
import org.etsi.mts.tdl.DataInstanceUse;
import org.etsi.mts.tdl.DataResourceMapping;
import org.etsi.mts.tdl.DataType;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.DefaultBehaviour;
import org.etsi.mts.tdl.DynamicDataUse;
import org.etsi.mts.tdl.Element;
import org.etsi.mts.tdl.ElementImport;
import org.etsi.mts.tdl.EnumDataType;
import org.etsi.mts.tdl.ExceptionalBehaviour;
import org.etsi.mts.tdl.Extension;
import org.etsi.mts.tdl.FormalParameter;
import org.etsi.mts.tdl.FormalParameterUse;
import org.etsi.mts.tdl.Function;
import org.etsi.mts.tdl.FunctionCall;
import org.etsi.mts.tdl.GateInstance;
import org.etsi.mts.tdl.GateReference;
import org.etsi.mts.tdl.GateType;
import org.etsi.mts.tdl.GateTypeKind;
import org.etsi.mts.tdl.InlineAction;
import org.etsi.mts.tdl.Interaction;
import org.etsi.mts.tdl.InterruptBehaviour;
import org.etsi.mts.tdl.LiteralValueUse;
import org.etsi.mts.tdl.LocalExpression;
import org.etsi.mts.tdl.MappableDataElement;
import org.etsi.mts.tdl.Member;
import org.etsi.mts.tdl.MemberAssignment;
import org.etsi.mts.tdl.MemberReference;
import org.etsi.mts.tdl.Message;
import org.etsi.mts.tdl.MultipleCombinedBehaviour;
import org.etsi.mts.tdl.NamedElement;
import org.etsi.mts.tdl.OmitValue;
import org.etsi.mts.tdl.OptionalBehaviour;
import org.etsi.mts.tdl.PackageableElement;
import org.etsi.mts.tdl.ParallelBehaviour;
import org.etsi.mts.tdl.Parameter;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.ParameterKind;
import org.etsi.mts.tdl.ParameterMapping;
import org.etsi.mts.tdl.PeriodicBehaviour;
import org.etsi.mts.tdl.PredefinedFunction;
import org.etsi.mts.tdl.PredefinedFunctionCall;
import org.etsi.mts.tdl.ProcedureCall;
import org.etsi.mts.tdl.ProcedureParameter;
import org.etsi.mts.tdl.ProcedureSignature;
import org.etsi.mts.tdl.Quiescence;
import org.etsi.mts.tdl.SimpleDataInstance;
import org.etsi.mts.tdl.SimpleDataType;
import org.etsi.mts.tdl.SingleCombinedBehaviour;
import org.etsi.mts.tdl.SpecialValueUse;
import org.etsi.mts.tdl.StaticDataUse;
import org.etsi.mts.tdl.Stop;
import org.etsi.mts.tdl.StructuredDataInstance;
import org.etsi.mts.tdl.StructuredDataType;
import org.etsi.mts.tdl.Target;
import org.etsi.mts.tdl.TestConfiguration;
import org.etsi.mts.tdl.TestDescription;
import org.etsi.mts.tdl.TestDescriptionReference;
import org.etsi.mts.tdl.TestObjective;
import org.etsi.mts.tdl.Time;
import org.etsi.mts.tdl.TimeConstraint;
import org.etsi.mts.tdl.TimeLabel;
import org.etsi.mts.tdl.TimeLabelUse;
import org.etsi.mts.tdl.TimeLabelUseKind;
import org.etsi.mts.tdl.TimeOperation;
import org.etsi.mts.tdl.TimeOut;
import org.etsi.mts.tdl.Timer;
import org.etsi.mts.tdl.TimerOperation;
import org.etsi.mts.tdl.TimerStart;
import org.etsi.mts.tdl.TimerStop;
import org.etsi.mts.tdl.UnassignedMemberTreatment;
import org.etsi.mts.tdl.UnboundedLoopBehaviour;
import org.etsi.mts.tdl.ValueAssignment;
import org.etsi.mts.tdl.Variable;
import org.etsi.mts.tdl.VariableUse;
import org.etsi.mts.tdl.VerdictAssignment;
import org.etsi.mts.tdl.Wait;

import org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage;

import org.etsi.mts.tdl.extendedconfigurations.impl.ExtendedConfigurationsPackageImpl;

import org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage;

import org.etsi.mts.tdl.structuredobjectives.impl.StructuredObjectivesPackageImpl;

import org.etsi.mts.tdl.tdlFactory;
import org.etsi.mts.tdl.tdlPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class tdlPackageImpl extends EPackageImpl implements tdlPackage
{
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass elementEClass = null;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum parameterKindEEnum = 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 org.etsi.mts.tdl.tdlPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private tdlPackageImpl()
	{
		super(eNS_URI, tdlFactory.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 tdlPackage#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 tdlPackage init()
	{
		if (isInited) return (tdlPackage)EPackage.Registry.INSTANCE.getEPackage(tdlPackage.eNS_URI);

		// Obtain or create and register package
		Object registeredtdlPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
		tdlPackageImpl thetdlPackage = registeredtdlPackage instanceof tdlPackageImpl ? (tdlPackageImpl)registeredtdlPackage : new tdlPackageImpl();

		isInited = true;

		// Obtain or create and register interdependencies
		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ExtendedConfigurationsPackage.eNS_URI);
		ExtendedConfigurationsPackageImpl theExtendedConfigurationsPackage = (ExtendedConfigurationsPackageImpl)(registeredPackage instanceof ExtendedConfigurationsPackageImpl ? registeredPackage : ExtendedConfigurationsPackage.eINSTANCE);
		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructuredObjectivesPackage.eNS_URI);
		StructuredObjectivesPackageImpl theStructuredObjectivesPackage = (StructuredObjectivesPackageImpl)(registeredPackage instanceof StructuredObjectivesPackageImpl ? registeredPackage : StructuredObjectivesPackage.eINSTANCE);

		// Create package meta-data objects
		thetdlPackage.createPackageContents();
		theExtendedConfigurationsPackage.createPackageContents();
		theStructuredObjectivesPackage.createPackageContents();

		// Initialize created meta-data
		thetdlPackage.initializePackageContents();
		theExtendedConfigurationsPackage.initializePackageContents();
		theStructuredObjectivesPackage.initializePackageContents();

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getElement__Container()
	{
		return elementEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getElement__GetParentTestDescription()
	{
		return elementEClass.getEOperations().get(1);
	}

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getPackageableElement__ConformsTo__String()
	{
		return packageableElementEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getPackageableElement__GetElementNamed__String()
	{
		return packageableElementEClass.getEOperations().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getPackageableElement__ConformsTo__PackageableElement()
	{
		return packageableElementEClass.getEOperations().get(2);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getDataType__AllConstraints()
	{
		return dataTypeEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getSimpleDataType__AllConstraints()
	{
		return simpleDataTypeEClass.getEOperations().get(0);
	}

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getStructuredDataType__AllMembers()
	{
		return structuredDataTypeEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getStructuredDataType__AllConstraints()
	{
		return structuredDataTypeEClass.getEOperations().get(1);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getDataUse__ResolveDataType()
	{
		return dataUseEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getDataUse__IsEffectivelyStatic()
	{
		return dataUseEClass.getEOperations().get(1);
	}

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getParameterBinding__ResolveParameterType()
	{
		return parameterBindingEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getFormalParameterUse__ResolveDataType()
	{
		return formalParameterUseEClass.getEOperations().get(0);
	}

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getFunctionCall__ResolveDataType()
	{
		return functionCallEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getVariableUse__ResolveDataType()
	{
		return variableUseEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getComponentType__AllGates()
	{
		return componentTypeEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getComponentType__AllTimers()
	{
		return componentTypeEClass.getEOperations().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getComponentType__AllVariables()
	{
		return componentTypeEClass.getEOperations().get(2);
	}

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getGateType__AllDataTypes()
	{
		return gateTypeEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getSpecialValueUse__ResolveDataType()
	{
		return specialValueUseEClass.getEOperations().get(0);
	}

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getAnyValue__ResolveDataType()
	{
		return anyValueEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getDataInstanceUse__ResolveDataType()
	{
		return dataInstanceUseEClass.getEOperations().get(0);
	}

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getTimerOperation__GetParticipatingComponents()
	{
		return timerOperationEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getAtomicBehaviour__GetParticipatingComponents()
	{
		return atomicBehaviourEClass.getEOperations().get(0);
	}

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getBehaviour__IsTesterInputEvent()
	{
		return behaviourEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getBehaviour__GetParticipatingComponents()
	{
		return behaviourEClass.getEOperations().get(1);
	}

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getTimeOperation__GetParticipatingComponents()
	{
		return timeOperationEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getQuiescence__GetParticipatingComponents()
	{
		return quiescenceEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getTimeLabelUse__ResolveDataType()
	{
		return timeLabelUseEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getTestConfiguration__CompatibleWith__TestConfiguration_EList()
	{
		return testConfigurationEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getBlock__GetParticipatingComponents()
	{
		return blockEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getBlock__GetParticipatingComponentsExcluding__Behaviour()
	{
		return blockEClass.getEOperations().get(1);
	}

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getPeriodicBehaviour__GetParticipatingComponents()
	{
		return periodicBehaviourEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getExceptionalBehaviour__GetParticipatingComponents()
	{
		return exceptionalBehaviourEClass.getEOperations().get(0);
	}

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getMultipleCombinedBehaviour__GetParticipatingComponents()
	{
		return multipleCombinedBehaviourEClass.getEOperations().get(0);
	}

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getSingleCombinedBehaviour__GetParticipatingComponents()
	{
		return singleCombinedBehaviourEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getAssignment__GetParticipatingComponents()
	{
		return assignmentEClass.getEOperations().get(0);
	}

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getActionBehaviour__GetParticipatingComponents()
	{
		return actionBehaviourEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getTestDescriptionReference__GetParticipatingComponents()
	{
		return testDescriptionReferenceEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getInteraction__GetParticipatingComponents()
	{
		return interactionEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getPredefinedFunctionCall__ResolveDataType()
	{
		return predefinedFunctionCallEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getExtension__TransitiveExtending()
	{
		return extensionEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getExtension__IsExtending__PackageableElement()
	{
		return extensionEClass.getEOperations().get(1);
	}

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getLiteralValueUse__ResolveDataType()
	{
		return literalValueUseEClass.getEOperations().get(0);
	}

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EOperation getDataElementUse__ResolveDataType()
	{
		return dataElementUseEClass.getEOperations().get(0);
	}

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public tdlFactory gettdlFactory()
	{
		return (tdlFactory)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
		elementEClass = createEClass(ELEMENT);
		createEReference(elementEClass, ELEMENT__COMMENT);
		createEReference(elementEClass, ELEMENT__ANNOTATION);
		createEAttribute(elementEClass, ELEMENT__NAME);
		createEOperation(elementEClass, ELEMENT___CONTAINER);
		createEOperation(elementEClass, ELEMENT___GET_PARENT_TEST_DESCRIPTION);

		commentEClass = createEClass(COMMENT);
		createEAttribute(commentEClass, COMMENT__BODY);
		createEReference(commentEClass, COMMENT__COMMENTED_ELEMENT);

		annotationEClass = createEClass(ANNOTATION);
		createEAttribute(annotationEClass, ANNOTATION__VALUE);
		createEReference(annotationEClass, ANNOTATION__KEY);
		createEReference(annotationEClass, ANNOTATION__ANNOTATED_ELEMENT);

		annotationTypeEClass = createEClass(ANNOTATION_TYPE);
		createEReference(annotationTypeEClass, ANNOTATION_TYPE__EXTENSION);

		packageableElementEClass = createEClass(PACKAGEABLE_ELEMENT);
		createEOperation(packageableElementEClass, PACKAGEABLE_ELEMENT___CONFORMS_TO__STRING);
		createEOperation(packageableElementEClass, PACKAGEABLE_ELEMENT___GET_ELEMENT_NAMED__STRING);
		createEOperation(packageableElementEClass, PACKAGEABLE_ELEMENT___CONFORMS_TO__PACKAGEABLEELEMENT);

		namedElementEClass = createEClass(NAMED_ELEMENT);
		createEAttribute(namedElementEClass, NAMED_ELEMENT__QUALIFIED_NAME);

		packageEClass = createEClass(PACKAGE);
		createEReference(packageEClass, PACKAGE__PACKAGED_ELEMENT);
		createEReference(packageEClass, PACKAGE__IMPORT);
		createEReference(packageEClass, PACKAGE__NESTED_PACKAGE);

		elementImportEClass = createEClass(ELEMENT_IMPORT);
		createEReference(elementImportEClass, ELEMENT_IMPORT__IMPORTED_ELEMENT);
		createEReference(elementImportEClass, ELEMENT_IMPORT__IMPORTED_PACKAGE);

		testObjectiveEClass = createEClass(TEST_OBJECTIVE);
		createEAttribute(testObjectiveEClass, TEST_OBJECTIVE__OBJECTIVE_URI);
		createEAttribute(testObjectiveEClass, TEST_OBJECTIVE__DESCRIPTION);

		dataInstanceEClass = createEClass(DATA_INSTANCE);
		createEReference(dataInstanceEClass, DATA_INSTANCE__DATA_TYPE);

		mappableDataElementEClass = createEClass(MAPPABLE_DATA_ELEMENT);

		dataTypeEClass = createEClass(DATA_TYPE);
		createEReference(dataTypeEClass, DATA_TYPE__CONSTRAINT);
		createEOperation(dataTypeEClass, DATA_TYPE___ALL_CONSTRAINTS);

		dataResourceMappingEClass = createEClass(DATA_RESOURCE_MAPPING);
		createEAttribute(dataResourceMappingEClass, DATA_RESOURCE_MAPPING__RESOURCE_URI);

		dataElementMappingEClass = createEClass(DATA_ELEMENT_MAPPING);
		createEReference(dataElementMappingEClass, DATA_ELEMENT_MAPPING__MAPPABLE_DATA_ELEMENT);
		createEAttribute(dataElementMappingEClass, DATA_ELEMENT_MAPPING__ELEMENT_URI);
		createEReference(dataElementMappingEClass, DATA_ELEMENT_MAPPING__DATA_RESOURCE_MAPPING);
		createEReference(dataElementMappingEClass, DATA_ELEMENT_MAPPING__PARAMETER_MAPPING);

		parameterMappingEClass = createEClass(PARAMETER_MAPPING);
		createEAttribute(parameterMappingEClass, PARAMETER_MAPPING__PARAMETER_URI);
		createEReference(parameterMappingEClass, PARAMETER_MAPPING__PARAMETER);

		parameterEClass = createEClass(PARAMETER);
		createEReference(parameterEClass, PARAMETER__DATA_TYPE);

		simpleDataTypeEClass = createEClass(SIMPLE_DATA_TYPE);
		createEReference(simpleDataTypeEClass, SIMPLE_DATA_TYPE__EXTENSION);
		createEOperation(simpleDataTypeEClass, SIMPLE_DATA_TYPE___ALL_CONSTRAINTS);

		simpleDataInstanceEClass = createEClass(SIMPLE_DATA_INSTANCE);

		structuredDataTypeEClass = createEClass(STRUCTURED_DATA_TYPE);
		createEReference(structuredDataTypeEClass, STRUCTURED_DATA_TYPE__EXTENSION);
		createEReference(structuredDataTypeEClass, STRUCTURED_DATA_TYPE__MEMBER);
		createEOperation(structuredDataTypeEClass, STRUCTURED_DATA_TYPE___ALL_MEMBERS);
		createEOperation(structuredDataTypeEClass, STRUCTURED_DATA_TYPE___ALL_CONSTRAINTS);

		memberEClass = createEClass(MEMBER);
		createEAttribute(memberEClass, MEMBER__IS_OPTIONAL);
		createEReference(memberEClass, MEMBER__CONSTRAINT);

		structuredDataInstanceEClass = createEClass(STRUCTURED_DATA_INSTANCE);
		createEReference(structuredDataInstanceEClass, STRUCTURED_DATA_INSTANCE__MEMBER_ASSIGNMENT);
		createEAttribute(structuredDataInstanceEClass, STRUCTURED_DATA_INSTANCE__UNASSIGNED_MEMBER);

		memberAssignmentEClass = createEClass(MEMBER_ASSIGNMENT);
		createEReference(memberAssignmentEClass, MEMBER_ASSIGNMENT__MEMBER);
		createEReference(memberAssignmentEClass, MEMBER_ASSIGNMENT__MEMBER_SPEC);

		staticDataUseEClass = createEClass(STATIC_DATA_USE);

		dataUseEClass = createEClass(DATA_USE);
		createEReference(dataUseEClass, DATA_USE__ARGUMENT);
		createEReference(dataUseEClass, DATA_USE__REDUCTION);
		createEOperation(dataUseEClass, DATA_USE___RESOLVE_DATA_TYPE);
		createEOperation(dataUseEClass, DATA_USE___IS_EFFECTIVELY_STATIC);

		parameterBindingEClass = createEClass(PARAMETER_BINDING);
		createEReference(parameterBindingEClass, PARAMETER_BINDING__DATA_USE);
		createEReference(parameterBindingEClass, PARAMETER_BINDING__PARAMETER);
		createEReference(parameterBindingEClass, PARAMETER_BINDING__REDUCTION);
		createEOperation(parameterBindingEClass, PARAMETER_BINDING___RESOLVE_PARAMETER_TYPE);

		actionEClass = createEClass(ACTION);
		createEAttribute(actionEClass, ACTION__BODY);
		createEReference(actionEClass, ACTION__FORMAL_PARAMETER);

		formalParameterEClass = createEClass(FORMAL_PARAMETER);

		functionEClass = createEClass(FUNCTION);
		createEReference(functionEClass, FUNCTION__RETURN_TYPE);

		formalParameterUseEClass = createEClass(FORMAL_PARAMETER_USE);
		createEReference(formalParameterUseEClass, FORMAL_PARAMETER_USE__PARAMETER);
		createEOperation(formalParameterUseEClass, FORMAL_PARAMETER_USE___RESOLVE_DATA_TYPE);

		dynamicDataUseEClass = createEClass(DYNAMIC_DATA_USE);

		variableEClass = createEClass(VARIABLE);
		createEReference(variableEClass, VARIABLE__DATA_TYPE);

		functionCallEClass = createEClass(FUNCTION_CALL);
		createEReference(functionCallEClass, FUNCTION_CALL__FUNCTION);
		createEOperation(functionCallEClass, FUNCTION_CALL___RESOLVE_DATA_TYPE);

		variableUseEClass = createEClass(VARIABLE_USE);
		createEReference(variableUseEClass, VARIABLE_USE__COMPONENT_INSTANCE);
		createEReference(variableUseEClass, VARIABLE_USE__VARIABLE);
		createEOperation(variableUseEClass, VARIABLE_USE___RESOLVE_DATA_TYPE);

		componentInstanceEClass = createEClass(COMPONENT_INSTANCE);
		createEReference(componentInstanceEClass, COMPONENT_INSTANCE__TYPE);
		createEAttribute(componentInstanceEClass, COMPONENT_INSTANCE__ROLE);

		componentTypeEClass = createEClass(COMPONENT_TYPE);
		createEReference(componentTypeEClass, COMPONENT_TYPE__GATE_INSTANCE);
		createEReference(componentTypeEClass, COMPONENT_TYPE__TIMER);
		createEReference(componentTypeEClass, COMPONENT_TYPE__VARIABLE);
		createEReference(componentTypeEClass, COMPONENT_TYPE__EXTENSION);
		createEOperation(componentTypeEClass, COMPONENT_TYPE___ALL_GATES);
		createEOperation(componentTypeEClass, COMPONENT_TYPE___ALL_TIMERS);
		createEOperation(componentTypeEClass, COMPONENT_TYPE___ALL_VARIABLES);

		gateInstanceEClass = createEClass(GATE_INSTANCE);
		createEReference(gateInstanceEClass, GATE_INSTANCE__TYPE);

		gateTypeEClass = createEClass(GATE_TYPE);
		createEReference(gateTypeEClass, GATE_TYPE__DATA_TYPE);
		createEAttribute(gateTypeEClass, GATE_TYPE__KIND);
		createEReference(gateTypeEClass, GATE_TYPE__EXTENSION);
		createEOperation(gateTypeEClass, GATE_TYPE___ALL_DATA_TYPES);

		timerEClass = createEClass(TIMER);

		omitValueEClass = createEClass(OMIT_VALUE);

		specialValueUseEClass = createEClass(SPECIAL_VALUE_USE);
		createEOperation(specialValueUseEClass, SPECIAL_VALUE_USE___RESOLVE_DATA_TYPE);

		anyValueEClass = createEClass(ANY_VALUE);
		createEReference(anyValueEClass, ANY_VALUE__DATA_TYPE);
		createEOperation(anyValueEClass, ANY_VALUE___RESOLVE_DATA_TYPE);

		anyValueOrOmitEClass = createEClass(ANY_VALUE_OR_OMIT);

		dataInstanceUseEClass = createEClass(DATA_INSTANCE_USE);
		createEReference(dataInstanceUseEClass, DATA_INSTANCE_USE__DATA_INSTANCE);
		createEAttribute(dataInstanceUseEClass, DATA_INSTANCE_USE__UNASSIGNED_MEMBER);
		createEReference(dataInstanceUseEClass, DATA_INSTANCE_USE__DATA_TYPE);
		createEReference(dataInstanceUseEClass, DATA_INSTANCE_USE__ITEM);
		createEOperation(dataInstanceUseEClass, DATA_INSTANCE_USE___RESOLVE_DATA_TYPE);

		timeEClass = createEClass(TIME);

		timeLabelEClass = createEClass(TIME_LABEL);

		timerOperationEClass = createEClass(TIMER_OPERATION);
		createEReference(timerOperationEClass, TIMER_OPERATION__TIMER);
		createEReference(timerOperationEClass, TIMER_OPERATION__COMPONENT_INSTANCE);
		createEOperation(timerOperationEClass, TIMER_OPERATION___GET_PARTICIPATING_COMPONENTS);

		atomicBehaviourEClass = createEClass(ATOMIC_BEHAVIOUR);
		createEReference(atomicBehaviourEClass, ATOMIC_BEHAVIOUR__TIME_CONSTRAINT);
		createEReference(atomicBehaviourEClass, ATOMIC_BEHAVIOUR__TIME_LABEL);
		createEOperation(atomicBehaviourEClass, ATOMIC_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		behaviourEClass = createEClass(BEHAVIOUR);
		createEReference(behaviourEClass, BEHAVIOUR__TEST_OBJECTIVE);
		createEOperation(behaviourEClass, BEHAVIOUR___IS_TESTER_INPUT_EVENT);
		createEOperation(behaviourEClass, BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		timeConstraintEClass = createEClass(TIME_CONSTRAINT);
		createEReference(timeConstraintEClass, TIME_CONSTRAINT__TIME_CONSTRAINT_EXPRESSION);

		timerStartEClass = createEClass(TIMER_START);
		createEReference(timerStartEClass, TIMER_START__PERIOD);

		timerStopEClass = createEClass(TIMER_STOP);

		timeOutEClass = createEClass(TIME_OUT);

		timeOperationEClass = createEClass(TIME_OPERATION);
		createEReference(timeOperationEClass, TIME_OPERATION__COMPONENT_INSTANCE);
		createEReference(timeOperationEClass, TIME_OPERATION__PERIOD);
		createEOperation(timeOperationEClass, TIME_OPERATION___GET_PARTICIPATING_COMPONENTS);

		waitEClass = createEClass(WAIT);

		quiescenceEClass = createEClass(QUIESCENCE);
		createEReference(quiescenceEClass, QUIESCENCE__GATE_REFERENCE);
		createEOperation(quiescenceEClass, QUIESCENCE___GET_PARTICIPATING_COMPONENTS);

		gateReferenceEClass = createEClass(GATE_REFERENCE);
		createEReference(gateReferenceEClass, GATE_REFERENCE__COMPONENT);
		createEReference(gateReferenceEClass, GATE_REFERENCE__GATE);

		timeLabelUseEClass = createEClass(TIME_LABEL_USE);
		createEReference(timeLabelUseEClass, TIME_LABEL_USE__TIME_LABEL);
		createEAttribute(timeLabelUseEClass, TIME_LABEL_USE__KIND);
		createEOperation(timeLabelUseEClass, TIME_LABEL_USE___RESOLVE_DATA_TYPE);

		testConfigurationEClass = createEClass(TEST_CONFIGURATION);
		createEReference(testConfigurationEClass, TEST_CONFIGURATION__COMPONENT_INSTANCE);
		createEReference(testConfigurationEClass, TEST_CONFIGURATION__CONNECTION);
		createEOperation(testConfigurationEClass, TEST_CONFIGURATION___COMPATIBLE_WITH__TESTCONFIGURATION_ELIST);

		connectionEClass = createEClass(CONNECTION);
		createEReference(connectionEClass, CONNECTION__END_POINT);

		testDescriptionEClass = createEClass(TEST_DESCRIPTION);
		createEReference(testDescriptionEClass, TEST_DESCRIPTION__TEST_CONFIGURATION);
		createEReference(testDescriptionEClass, TEST_DESCRIPTION__FORMAL_PARAMETER);
		createEReference(testDescriptionEClass, TEST_DESCRIPTION__BEHAVIOUR_DESCRIPTION);
		createEReference(testDescriptionEClass, TEST_DESCRIPTION__TEST_OBJECTIVE);
		createEAttribute(testDescriptionEClass, TEST_DESCRIPTION__IS_LOCALLY_ORDERED);

		behaviourDescriptionEClass = createEClass(BEHAVIOUR_DESCRIPTION);
		createEReference(behaviourDescriptionEClass, BEHAVIOUR_DESCRIPTION__BEHAVIOUR);

		blockEClass = createEClass(BLOCK);
		createEReference(blockEClass, BLOCK__BEHAVIOUR);
		createEReference(blockEClass, BLOCK__GUARD);
		createEOperation(blockEClass, BLOCK___GET_PARTICIPATING_COMPONENTS);
		createEOperation(blockEClass, BLOCK___GET_PARTICIPATING_COMPONENTS_EXCLUDING__BEHAVIOUR);

		combinedBehaviourEClass = createEClass(COMBINED_BEHAVIOUR);
		createEReference(combinedBehaviourEClass, COMBINED_BEHAVIOUR__PERIODIC);
		createEReference(combinedBehaviourEClass, COMBINED_BEHAVIOUR__EXCEPTIONAL);

		periodicBehaviourEClass = createEClass(PERIODIC_BEHAVIOUR);
		createEReference(periodicBehaviourEClass, PERIODIC_BEHAVIOUR__BLOCK);
		createEReference(periodicBehaviourEClass, PERIODIC_BEHAVIOUR__PERIOD);
		createEOperation(periodicBehaviourEClass, PERIODIC_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		exceptionalBehaviourEClass = createEClass(EXCEPTIONAL_BEHAVIOUR);
		createEReference(exceptionalBehaviourEClass, EXCEPTIONAL_BEHAVIOUR__BLOCK);
		createEReference(exceptionalBehaviourEClass, EXCEPTIONAL_BEHAVIOUR__GUARDED_COMPONENT);
		createEOperation(exceptionalBehaviourEClass, EXCEPTIONAL_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		alternativeBehaviourEClass = createEClass(ALTERNATIVE_BEHAVIOUR);

		multipleCombinedBehaviourEClass = createEClass(MULTIPLE_COMBINED_BEHAVIOUR);
		createEReference(multipleCombinedBehaviourEClass, MULTIPLE_COMBINED_BEHAVIOUR__BLOCK);
		createEOperation(multipleCombinedBehaviourEClass, MULTIPLE_COMBINED_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		parallelBehaviourEClass = createEClass(PARALLEL_BEHAVIOUR);

		boundedLoopBehaviourEClass = createEClass(BOUNDED_LOOP_BEHAVIOUR);
		createEReference(boundedLoopBehaviourEClass, BOUNDED_LOOP_BEHAVIOUR__NUM_ITERATION);

		singleCombinedBehaviourEClass = createEClass(SINGLE_COMBINED_BEHAVIOUR);
		createEReference(singleCombinedBehaviourEClass, SINGLE_COMBINED_BEHAVIOUR__BLOCK);
		createEOperation(singleCombinedBehaviourEClass, SINGLE_COMBINED_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		optionalBehaviourEClass = createEClass(OPTIONAL_BEHAVIOUR);

		unboundedLoopBehaviourEClass = createEClass(UNBOUNDED_LOOP_BEHAVIOUR);

		conditionalBehaviourEClass = createEClass(CONDITIONAL_BEHAVIOUR);

		compoundBehaviourEClass = createEClass(COMPOUND_BEHAVIOUR);

		defaultBehaviourEClass = createEClass(DEFAULT_BEHAVIOUR);

		interruptBehaviourEClass = createEClass(INTERRUPT_BEHAVIOUR);

		targetEClass = createEClass(TARGET);
		createEReference(targetEClass, TARGET__TARGET_GATE);
		createEReference(targetEClass, TARGET__VALUE_ASSIGNMENT);

		verdictAssignmentEClass = createEClass(VERDICT_ASSIGNMENT);
		createEReference(verdictAssignmentEClass, VERDICT_ASSIGNMENT__VERDICT);

		assertionEClass = createEClass(ASSERTION);
		createEReference(assertionEClass, ASSERTION__OTHERWISE);
		createEReference(assertionEClass, ASSERTION__CONDITION);

		stopEClass = createEClass(STOP);

		breakEClass = createEClass(BREAK);

		assignmentEClass = createEClass(ASSIGNMENT);
		createEReference(assignmentEClass, ASSIGNMENT__VARIABLE);
		createEReference(assignmentEClass, ASSIGNMENT__EXPRESSION);
		createEOperation(assignmentEClass, ASSIGNMENT___GET_PARTICIPATING_COMPONENTS);

		actionBehaviourEClass = createEClass(ACTION_BEHAVIOUR);
		createEReference(actionBehaviourEClass, ACTION_BEHAVIOUR__COMPONENT_INSTANCE);
		createEOperation(actionBehaviourEClass, ACTION_BEHAVIOUR___GET_PARTICIPATING_COMPONENTS);

		inlineActionEClass = createEClass(INLINE_ACTION);
		createEAttribute(inlineActionEClass, INLINE_ACTION__BODY);

		actionReferenceEClass = createEClass(ACTION_REFERENCE);
		createEReference(actionReferenceEClass, ACTION_REFERENCE__ACTION);
		createEReference(actionReferenceEClass, ACTION_REFERENCE__ARGUMENT);

		testDescriptionReferenceEClass = createEClass(TEST_DESCRIPTION_REFERENCE);
		createEReference(testDescriptionReferenceEClass, TEST_DESCRIPTION_REFERENCE__TEST_DESCRIPTION);
		createEReference(testDescriptionReferenceEClass, TEST_DESCRIPTION_REFERENCE__COMPONENT_INSTANCE_BINDING);
		createEReference(testDescriptionReferenceEClass, TEST_DESCRIPTION_REFERENCE__ARGUMENT);
		createEOperation(testDescriptionReferenceEClass, TEST_DESCRIPTION_REFERENCE___GET_PARTICIPATING_COMPONENTS);

		componentInstanceBindingEClass = createEClass(COMPONENT_INSTANCE_BINDING);
		createEReference(componentInstanceBindingEClass, COMPONENT_INSTANCE_BINDING__FORMAL_COMPONENT);
		createEReference(componentInstanceBindingEClass, COMPONENT_INSTANCE_BINDING__ACTUAL_COMPONENT);

		interactionEClass = createEClass(INTERACTION);
		createEReference(interactionEClass, INTERACTION__SOURCE_GATE);
		createEReference(interactionEClass, INTERACTION__TARGET);
		createEOperation(interactionEClass, INTERACTION___GET_PARTICIPATING_COMPONENTS);

		messageEClass = createEClass(MESSAGE);
		createEAttribute(messageEClass, MESSAGE__IS_TRIGGER);
		createEReference(messageEClass, MESSAGE__ARGUMENT);

		predefinedFunctionEClass = createEClass(PREDEFINED_FUNCTION);
		createEReference(predefinedFunctionEClass, PREDEFINED_FUNCTION__RETURN_TYPE);

		memberReferenceEClass = createEClass(MEMBER_REFERENCE);
		createEReference(memberReferenceEClass, MEMBER_REFERENCE__MEMBER);
		createEReference(memberReferenceEClass, MEMBER_REFERENCE__COLLECTION_INDEX);

		predefinedFunctionCallEClass = createEClass(PREDEFINED_FUNCTION_CALL);
		createEReference(predefinedFunctionCallEClass, PREDEFINED_FUNCTION_CALL__FUNCTION);
		createEReference(predefinedFunctionCallEClass, PREDEFINED_FUNCTION_CALL__ACTUAL_PARAMETERS);
		createEOperation(predefinedFunctionCallEClass, PREDEFINED_FUNCTION_CALL___RESOLVE_DATA_TYPE);

		localExpressionEClass = createEClass(LOCAL_EXPRESSION);
		createEReference(localExpressionEClass, LOCAL_EXPRESSION__EXPRESSION);
		createEReference(localExpressionEClass, LOCAL_EXPRESSION__COMPONENT_INSTANCE);

		valueAssignmentEClass = createEClass(VALUE_ASSIGNMENT);
		createEReference(valueAssignmentEClass, VALUE_ASSIGNMENT__VARIABLE);
		createEReference(valueAssignmentEClass, VALUE_ASSIGNMENT__PARAMETER);

		procedureCallEClass = createEClass(PROCEDURE_CALL);
		createEReference(procedureCallEClass, PROCEDURE_CALL__SIGNATURE);
		createEReference(procedureCallEClass, PROCEDURE_CALL__ARGUMENT);
		createEReference(procedureCallEClass, PROCEDURE_CALL__REPLY_TO);

		procedureSignatureEClass = createEClass(PROCEDURE_SIGNATURE);
		createEReference(procedureSignatureEClass, PROCEDURE_SIGNATURE__PARAMETER);

		procedureParameterEClass = createEClass(PROCEDURE_PARAMETER);
		createEAttribute(procedureParameterEClass, PROCEDURE_PARAMETER__KIND);

		collectionDataTypeEClass = createEClass(COLLECTION_DATA_TYPE);
		createEReference(collectionDataTypeEClass, COLLECTION_DATA_TYPE__ITEM_TYPE);

		collectionDataInstanceEClass = createEClass(COLLECTION_DATA_INSTANCE);
		createEReference(collectionDataInstanceEClass, COLLECTION_DATA_INSTANCE__ITEM);
		createEAttribute(collectionDataInstanceEClass, COLLECTION_DATA_INSTANCE__UNASSIGNED_MEMBER);

		extensionEClass = createEClass(EXTENSION);
		createEReference(extensionEClass, EXTENSION__EXTENDING);
		createEOperation(extensionEClass, EXTENSION___TRANSITIVE_EXTENDING);
		createEOperation(extensionEClass, EXTENSION___IS_EXTENDING__PACKAGEABLEELEMENT);

		literalValueUseEClass = createEClass(LITERAL_VALUE_USE);
		createEAttribute(literalValueUseEClass, LITERAL_VALUE_USE__VALUE);
		createEAttribute(literalValueUseEClass, LITERAL_VALUE_USE__INT_VALUE);
		createEAttribute(literalValueUseEClass, LITERAL_VALUE_USE__BOOL_VALUE);
		createEReference(literalValueUseEClass, LITERAL_VALUE_USE__DATA_TYPE);
		createEOperation(literalValueUseEClass, LITERAL_VALUE_USE___RESOLVE_DATA_TYPE);

		constraintTypeEClass = createEClass(CONSTRAINT_TYPE);

		constraintEClass = createEClass(CONSTRAINT);
		createEReference(constraintEClass, CONSTRAINT__TYPE);
		createEReference(constraintEClass, CONSTRAINT__QUANTIFIER);

		enumDataTypeEClass = createEClass(ENUM_DATA_TYPE);
		createEReference(enumDataTypeEClass, ENUM_DATA_TYPE__VALUE);

		dataElementUseEClass = createEClass(DATA_ELEMENT_USE);
		createEAttribute(dataElementUseEClass, DATA_ELEMENT_USE__UNASSIGNED_MEMBER);
		createEReference(dataElementUseEClass, DATA_ELEMENT_USE__DATA_ELEMENT);
		createEReference(dataElementUseEClass, DATA_ELEMENT_USE__ITEM);
		createEOperation(dataElementUseEClass, DATA_ELEMENT_USE___RESOLVE_DATA_TYPE);

		// Create enums
		unassignedMemberTreatmentEEnum = createEEnum(UNASSIGNED_MEMBER_TREATMENT);
		componentInstanceRoleEEnum = createEEnum(COMPONENT_INSTANCE_ROLE);
		gateTypeKindEEnum = createEEnum(GATE_TYPE_KIND);
		timeLabelUseKindEEnum = createEEnum(TIME_LABEL_USE_KIND);
		parameterKindEEnum = createEEnum(PARAMETER_KIND);
	}

	/**
	 * <!-- 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
		commentEClass.getESuperTypes().add(this.getElement());
		annotationEClass.getESuperTypes().add(this.getElement());
		annotationTypeEClass.getESuperTypes().add(this.getPackageableElement());
		packageableElementEClass.getESuperTypes().add(this.getNamedElement());
		namedElementEClass.getESuperTypes().add(this.getElement());
		packageEClass.getESuperTypes().add(this.getNamedElement());
		elementImportEClass.getESuperTypes().add(this.getElement());
		testObjectiveEClass.getESuperTypes().add(this.getPackageableElement());
		dataInstanceEClass.getESuperTypes().add(this.getMappableDataElement());
		mappableDataElementEClass.getESuperTypes().add(this.getPackageableElement());
		dataTypeEClass.getESuperTypes().add(this.getMappableDataElement());
		dataResourceMappingEClass.getESuperTypes().add(this.getPackageableElement());
		dataElementMappingEClass.getESuperTypes().add(this.getPackageableElement());
		parameterMappingEClass.getESuperTypes().add(this.getElement());
		parameterEClass.getESuperTypes().add(this.getNamedElement());
		simpleDataTypeEClass.getESuperTypes().add(this.getDataType());
		simpleDataInstanceEClass.getESuperTypes().add(this.getDataInstance());
		structuredDataTypeEClass.getESuperTypes().add(this.getDataType());
		memberEClass.getESuperTypes().add(this.getParameter());
		structuredDataInstanceEClass.getESuperTypes().add(this.getDataInstance());
		memberAssignmentEClass.getESuperTypes().add(this.getElement());
		staticDataUseEClass.getESuperTypes().add(this.getDataUse());
		dataUseEClass.getESuperTypes().add(this.getElement());
		parameterBindingEClass.getESuperTypes().add(this.getElement());
		actionEClass.getESuperTypes().add(this.getMappableDataElement());
		formalParameterEClass.getESuperTypes().add(this.getParameter());
		functionEClass.getESuperTypes().add(this.getAction());
		formalParameterUseEClass.getESuperTypes().add(this.getDynamicDataUse());
		dynamicDataUseEClass.getESuperTypes().add(this.getDataUse());
		variableEClass.getESuperTypes().add(this.getNamedElement());
		functionCallEClass.getESuperTypes().add(this.getDynamicDataUse());
		variableUseEClass.getESuperTypes().add(this.getDynamicDataUse());
		componentInstanceEClass.getESuperTypes().add(this.getNamedElement());
		componentTypeEClass.getESuperTypes().add(this.getPackageableElement());
		gateInstanceEClass.getESuperTypes().add(this.getNamedElement());
		gateTypeEClass.getESuperTypes().add(this.getPackageableElement());
		timerEClass.getESuperTypes().add(this.getNamedElement());
		omitValueEClass.getESuperTypes().add(this.getSpecialValueUse());
		specialValueUseEClass.getESuperTypes().add(this.getStaticDataUse());
		anyValueEClass.getESuperTypes().add(this.getSpecialValueUse());
		anyValueOrOmitEClass.getESuperTypes().add(this.getSpecialValueUse());
		dataInstanceUseEClass.getESuperTypes().add(this.getStaticDataUse());
		timeEClass.getESuperTypes().add(this.getSimpleDataType());
		timeLabelEClass.getESuperTypes().add(this.getNamedElement());
		timerOperationEClass.getESuperTypes().add(this.getAtomicBehaviour());
		atomicBehaviourEClass.getESuperTypes().add(this.getBehaviour());
		behaviourEClass.getESuperTypes().add(this.getElement());
		timeConstraintEClass.getESuperTypes().add(this.getElement());
		timerStartEClass.getESuperTypes().add(this.getTimerOperation());
		timerStopEClass.getESuperTypes().add(this.getTimerOperation());
		timeOutEClass.getESuperTypes().add(this.getTimerOperation());
		timeOperationEClass.getESuperTypes().add(this.getAtomicBehaviour());
		waitEClass.getESuperTypes().add(this.getTimeOperation());
		quiescenceEClass.getESuperTypes().add(this.getTimeOperation());
		gateReferenceEClass.getESuperTypes().add(this.getElement());
		timeLabelUseEClass.getESuperTypes().add(this.getDynamicDataUse());
		testConfigurationEClass.getESuperTypes().add(this.getPackageableElement());
		connectionEClass.getESuperTypes().add(this.getElement());
		testDescriptionEClass.getESuperTypes().add(this.getPackageableElement());
		behaviourDescriptionEClass.getESuperTypes().add(this.getElement());
		blockEClass.getESuperTypes().add(this.getElement());
		combinedBehaviourEClass.getESuperTypes().add(this.getBehaviour());
		periodicBehaviourEClass.getESuperTypes().add(this.getBehaviour());
		exceptionalBehaviourEClass.getESuperTypes().add(this.getBehaviour());
		alternativeBehaviourEClass.getESuperTypes().add(this.getMultipleCombinedBehaviour());
		multipleCombinedBehaviourEClass.getESuperTypes().add(this.getCombinedBehaviour());
		parallelBehaviourEClass.getESuperTypes().add(this.getMultipleCombinedBehaviour());
		boundedLoopBehaviourEClass.getESuperTypes().add(this.getSingleCombinedBehaviour());
		singleCombinedBehaviourEClass.getESuperTypes().add(this.getCombinedBehaviour());
		optionalBehaviourEClass.getESuperTypes().add(this.getSingleCombinedBehaviour());
		unboundedLoopBehaviourEClass.getESuperTypes().add(this.getSingleCombinedBehaviour());
		conditionalBehaviourEClass.getESuperTypes().add(this.getMultipleCombinedBehaviour());
		compoundBehaviourEClass.getESuperTypes().add(this.getSingleCombinedBehaviour());
		defaultBehaviourEClass.getESuperTypes().add(this.getExceptionalBehaviour());
		interruptBehaviourEClass.getESuperTypes().add(this.getExceptionalBehaviour());
		targetEClass.getESuperTypes().add(this.getElement());
		verdictAssignmentEClass.getESuperTypes().add(this.getAtomicBehaviour());
		assertionEClass.getESuperTypes().add(this.getActionBehaviour());
		stopEClass.getESuperTypes().add(this.getAtomicBehaviour());
		breakEClass.getESuperTypes().add(this.getAtomicBehaviour());
		assignmentEClass.getESuperTypes().add(this.getAtomicBehaviour());
		actionBehaviourEClass.getESuperTypes().add(this.getAtomicBehaviour());
		inlineActionEClass.getESuperTypes().add(this.getActionBehaviour());
		actionReferenceEClass.getESuperTypes().add(this.getActionBehaviour());
		testDescriptionReferenceEClass.getESuperTypes().add(this.getAtomicBehaviour());
		componentInstanceBindingEClass.getESuperTypes().add(this.getElement());
		interactionEClass.getESuperTypes().add(this.getAtomicBehaviour());
		messageEClass.getESuperTypes().add(this.getInteraction());
		predefinedFunctionEClass.getESuperTypes().add(this.getPackageableElement());
		memberReferenceEClass.getESuperTypes().add(this.getElement());
		predefinedFunctionCallEClass.getESuperTypes().add(this.getDynamicDataUse());
		localExpressionEClass.getESuperTypes().add(this.getElement());
		valueAssignmentEClass.getESuperTypes().add(this.getElement());
		procedureCallEClass.getESuperTypes().add(this.getInteraction());
		procedureSignatureEClass.getESuperTypes().add(this.getDataType());
		procedureParameterEClass.getESuperTypes().add(this.getParameter());
		collectionDataTypeEClass.getESuperTypes().add(this.getDataType());
		collectionDataInstanceEClass.getESuperTypes().add(this.getDataInstance());
		extensionEClass.getESuperTypes().add(this.getElement());
		literalValueUseEClass.getESuperTypes().add(this.getStaticDataUse());
		constraintTypeEClass.getESuperTypes().add(this.getPackageableElement());
		constraintEClass.getESuperTypes().add(this.getElement());
		enumDataTypeEClass.getESuperTypes().add(this.getSimpleDataType());
		dataElementUseEClass.getESuperTypes().add(this.getDataUse());

		// Initialize classes, features, and operations; add parameters
		initEClass(elementEClass, Element.class, "Element", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getElement_Comment(), this.getComment(), this.getComment_CommentedElement(), "comment", null, 0, -1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getElement_Annotation(), this.getAnnotation(), this.getAnnotation_AnnotatedElement(), "annotation", null, 0, -1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElement_Name(), ecorePackage.getEString(), "name", null, 0, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getElement__Container(), this.getElement(), "container", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getElement__GetParentTestDescription(), this.getTestDescription(), "getParentTestDescription", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(commentEClass, Comment.class, "Comment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getComment_Body(), ecorePackage.getEString(), "body", null, 1, 1, Comment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComment_CommentedElement(), this.getElement(), this.getElement_Comment(), "commentedElement", null, 1, 1, Comment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(annotationEClass, Annotation.class, "Annotation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getAnnotation_Value(), ecorePackage.getEString(), "value", null, 0, 1, Annotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAnnotation_Key(), this.getAnnotationType(), null, "key", null, 1, 1, Annotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAnnotation_AnnotatedElement(), this.getElement(), this.getElement_Annotation(), "annotatedElement", null, 1, 1, Annotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(annotationTypeEClass, AnnotationType.class, "AnnotationType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAnnotationType_Extension(), this.getExtension(), null, "extension", null, 0, 1, AnnotationType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(packageableElementEClass, PackageableElement.class, "PackageableElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		EOperation op = initEOperation(getPackageableElement__ConformsTo__String(), ecorePackage.getEBooleanObject(), "conformsTo", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, ecorePackage.getEString(), "n", 0, 1, IS_UNIQUE, IS_ORDERED);

		op = initEOperation(getPackageableElement__GetElementNamed__String(), this.getPackageableElement(), "getElementNamed", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, ecorePackage.getEString(), "n", 0, 1, IS_UNIQUE, IS_ORDERED);

		op = initEOperation(getPackageableElement__ConformsTo__PackageableElement(), ecorePackage.getEBooleanObject(), "conformsTo", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getPackageableElement(), "n", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getNamedElement_QualifiedName(), ecorePackage.getEString(), "qualifiedName", null, 1, 1, NamedElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(packageEClass, org.etsi.mts.tdl.Package.class, "Package", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPackage_PackagedElement(), this.getPackageableElement(), null, "packagedElement", null, 0, -1, org.etsi.mts.tdl.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getPackage_Import(), this.getElementImport(), null, "import", null, 0, -1, org.etsi.mts.tdl.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getPackage_NestedPackage(), this.getPackage(), null, "nestedPackage", null, 0, -1, org.etsi.mts.tdl.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(elementImportEClass, ElementImport.class, "ElementImport", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getElementImport_ImportedElement(), this.getPackageableElement(), null, "importedElement", null, 0, -1, ElementImport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getElementImport_ImportedPackage(), this.getPackage(), null, "importedPackage", null, 1, 1, ElementImport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(testObjectiveEClass, TestObjective.class, "TestObjective", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getTestObjective_ObjectiveURI(), ecorePackage.getEString(), "objectiveURI", null, 0, -1, TestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEAttribute(getTestObjective_Description(), ecorePackage.getEString(), "description", null, 0, 1, TestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(dataInstanceEClass, DataInstance.class, "DataInstance", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataInstance_DataType(), this.getDataType(), null, "dataType", null, 1, 1, DataInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(mappableDataElementEClass, MappableDataElement.class, "MappableDataElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(dataTypeEClass, DataType.class, "DataType", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataType_Constraint(), this.getConstraint(), null, "constraint", null, 0, -1, DataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getDataType__AllConstraints(), this.getConstraint(), "allConstraints", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(dataResourceMappingEClass, DataResourceMapping.class, "DataResourceMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDataResourceMapping_ResourceURI(), ecorePackage.getEString(), "resourceURI", null, 0, 1, DataResourceMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(dataElementMappingEClass, DataElementMapping.class, "DataElementMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataElementMapping_MappableDataElement(), this.getMappableDataElement(), null, "mappableDataElement", null, 1, 1, DataElementMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getDataElementMapping_ElementURI(), ecorePackage.getEString(), "elementURI", null, 0, 1, DataElementMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataElementMapping_DataResourceMapping(), this.getDataResourceMapping(), null, "dataResourceMapping", null, 1, 1, DataElementMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataElementMapping_ParameterMapping(), this.getParameterMapping(), null, "parameterMapping", null, 0, -1, DataElementMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(parameterMappingEClass, ParameterMapping.class, "ParameterMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getParameterMapping_ParameterURI(), ecorePackage.getEString(), "parameterURI", null, 0, 1, ParameterMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getParameterMapping_Parameter(), this.getParameter(), null, "parameter", null, 1, 1, ParameterMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(parameterEClass, Parameter.class, "Parameter", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getParameter_DataType(), this.getDataType(), null, "dataType", null, 1, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(simpleDataTypeEClass, SimpleDataType.class, "SimpleDataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSimpleDataType_Extension(), this.getExtension(), null, "extension", null, 0, 1, SimpleDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getSimpleDataType__AllConstraints(), this.getConstraint(), "allConstraints", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(simpleDataInstanceEClass, SimpleDataInstance.class, "SimpleDataInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(structuredDataTypeEClass, StructuredDataType.class, "StructuredDataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getStructuredDataType_Extension(), this.getExtension(), null, "extension", null, 0, -1, StructuredDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredDataType_Member(), this.getMember(), null, "member", null, 0, -1, StructuredDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getStructuredDataType__AllMembers(), this.getMember(), "allMembers", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getStructuredDataType__AllConstraints(), this.getConstraint(), "allConstraints", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(memberEClass, Member.class, "Member", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getMember_IsOptional(), ecorePackage.getEBoolean(), "isOptional", "false", 1, 1, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMember_Constraint(), this.getConstraint(), null, "constraint", null, 0, -1, Member.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(structuredDataInstanceEClass, StructuredDataInstance.class, "StructuredDataInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getStructuredDataInstance_MemberAssignment(), this.getMemberAssignment(), null, "memberAssignment", null, 0, -1, StructuredDataInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getStructuredDataInstance_UnassignedMember(), this.getUnassignedMemberTreatment(), "unassignedMember", null, 0, 1, StructuredDataInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(memberAssignmentEClass, MemberAssignment.class, "MemberAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMemberAssignment_Member(), this.getMember(), null, "member", null, 1, 1, MemberAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMemberAssignment_MemberSpec(), this.getDataUse(), null, "memberSpec", null, 1, 1, MemberAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(staticDataUseEClass, StaticDataUse.class, "StaticDataUse", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(dataUseEClass, DataUse.class, "DataUse", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataUse_Argument(), this.getParameterBinding(), null, "argument", null, 0, -1, DataUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataUse_Reduction(), this.getMemberReference(), null, "reduction", null, 0, -1, DataUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getDataUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getDataUse__IsEffectivelyStatic(), ecorePackage.getEBoolean(), "isEffectivelyStatic", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(parameterBindingEClass, ParameterBinding.class, "ParameterBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getParameterBinding_DataUse(), this.getDataUse(), null, "dataUse", null, 1, 1, ParameterBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getParameterBinding_Parameter(), this.getParameter(), null, "parameter", null, 1, 1, ParameterBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getParameterBinding_Reduction(), this.getMemberReference(), null, "reduction", null, 0, -1, ParameterBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getParameterBinding__ResolveParameterType(), this.getDataType(), "resolveParameterType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getAction_Body(), ecorePackage.getEString(), "body", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAction_FormalParameter(), this.getFormalParameter(), null, "formalParameter", null, 0, -1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(formalParameterEClass, FormalParameter.class, "FormalParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFunction_ReturnType(), this.getDataType(), null, "returnType", null, 1, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(formalParameterUseEClass, FormalParameterUse.class, "FormalParameterUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFormalParameterUse_Parameter(), this.getFormalParameter(), null, "parameter", null, 1, 1, FormalParameterUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getFormalParameterUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(dynamicDataUseEClass, DynamicDataUse.class, "DynamicDataUse", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getVariable_DataType(), this.getDataType(), null, "dataType", null, 1, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(functionCallEClass, FunctionCall.class, "FunctionCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFunctionCall_Function(), this.getFunction(), null, "function", null, 1, 1, FunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getFunctionCall__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(variableUseEClass, VariableUse.class, "VariableUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getVariableUse_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 1, 1, VariableUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getVariableUse_Variable(), this.getVariable(), null, "variable", null, 1, 1, VariableUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getVariableUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(componentInstanceEClass, ComponentInstance.class, "ComponentInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getComponentInstance_Type(), this.getComponentType(), null, "type", null, 1, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getComponentInstance_Role(), this.getComponentInstanceRole(), "role", null, 1, 1, ComponentInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(componentTypeEClass, ComponentType.class, "ComponentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getComponentType_GateInstance(), this.getGateInstance(), null, "gateInstance", null, 1, -1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComponentType_Timer(), this.getTimer(), null, "timer", null, 0, -1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComponentType_Variable(), this.getVariable(), null, "variable", null, 0, -1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComponentType_Extension(), this.getExtension(), null, "extension", null, 0, 1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getComponentType__AllGates(), this.getGateInstance(), "allGates", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getComponentType__AllTimers(), this.getTimer(), "allTimers", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getComponentType__AllVariables(), this.getVariable(), "allVariables", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(gateInstanceEClass, GateInstance.class, "GateInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGateInstance_Type(), this.getGateType(), null, "type", null, 1, 1, GateInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(gateTypeEClass, GateType.class, "GateType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGateType_DataType(), this.getDataType(), null, "dataType", null, 1, -1, GateType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getGateType_Kind(), this.getGateTypeKind(), "kind", "Message", 1, 1, GateType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGateType_Extension(), this.getExtension(), null, "extension", null, 0, 1, GateType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getGateType__AllDataTypes(), this.getDataType(), "allDataTypes", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(timerEClass, Timer.class, "Timer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(omitValueEClass, OmitValue.class, "OmitValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(specialValueUseEClass, SpecialValueUse.class, "SpecialValueUse", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEOperation(getSpecialValueUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(anyValueEClass, AnyValue.class, "AnyValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAnyValue_DataType(), this.getDataType(), null, "dataType", null, 0, 1, AnyValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getAnyValue__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(anyValueOrOmitEClass, AnyValueOrOmit.class, "AnyValueOrOmit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(dataInstanceUseEClass, DataInstanceUse.class, "DataInstanceUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataInstanceUse_DataInstance(), this.getDataInstance(), null, "dataInstance", null, 0, 1, DataInstanceUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getDataInstanceUse_UnassignedMember(), this.getUnassignedMemberTreatment(), "unassignedMember", null, 0, 1, DataInstanceUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataInstanceUse_DataType(), this.getDataType(), null, "dataType", null, 0, 1, DataInstanceUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataInstanceUse_Item(), this.getDataUse(), null, "item", null, 0, -1, DataInstanceUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getDataInstanceUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(timeEClass, Time.class, "Time", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(timeLabelEClass, TimeLabel.class, "TimeLabel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(timerOperationEClass, TimerOperation.class, "TimerOperation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTimerOperation_Timer(), this.getTimer(), null, "timer", null, 1, 1, TimerOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTimerOperation_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 1, 1, TimerOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getTimerOperation__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(atomicBehaviourEClass, AtomicBehaviour.class, "AtomicBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAtomicBehaviour_TimeConstraint(), this.getTimeConstraint(), null, "timeConstraint", null, 0, -1, AtomicBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getAtomicBehaviour_TimeLabel(), this.getTimeLabel(), null, "timeLabel", null, 0, 1, AtomicBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getAtomicBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(behaviourEClass, Behaviour.class, "Behaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBehaviour_TestObjective(), this.getTestObjective(), null, "testObjective", null, 0, -1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEOperation(getBehaviour__IsTesterInputEvent(), ecorePackage.getEBooleanObject(), "isTesterInputEvent", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(timeConstraintEClass, TimeConstraint.class, "TimeConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTimeConstraint_TimeConstraintExpression(), this.getDataUse(), null, "timeConstraintExpression", null, 1, 1, TimeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(timerStartEClass, TimerStart.class, "TimerStart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTimerStart_Period(), this.getDataUse(), null, "period", null, 1, 1, TimerStart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(timerStopEClass, TimerStop.class, "TimerStop", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(timeOutEClass, TimeOut.class, "TimeOut", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(timeOperationEClass, TimeOperation.class, "TimeOperation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTimeOperation_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 0, 1, TimeOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTimeOperation_Period(), this.getDataUse(), null, "period", null, 1, 1, TimeOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getTimeOperation__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(waitEClass, Wait.class, "Wait", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(quiescenceEClass, Quiescence.class, "Quiescence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getQuiescence_GateReference(), this.getGateReference(), null, "gateReference", null, 0, 1, Quiescence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getQuiescence__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(gateReferenceEClass, GateReference.class, "GateReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGateReference_Component(), this.getComponentInstance(), null, "component", null, 1, 1, GateReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGateReference_Gate(), this.getGateInstance(), null, "gate", null, 1, 1, GateReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(timeLabelUseEClass, TimeLabelUse.class, "TimeLabelUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTimeLabelUse_TimeLabel(), this.getTimeLabel(), null, "timeLabel", null, 1, 1, TimeLabelUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getTimeLabelUse_Kind(), this.getTimeLabelUseKind(), "kind", "Last", 1, 1, TimeLabelUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getTimeLabelUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(testConfigurationEClass, TestConfiguration.class, "TestConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTestConfiguration_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 2, -1, TestConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getTestConfiguration_Connection(), this.getConnection(), null, "connection", null, 1, -1, TestConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		op = initEOperation(getTestConfiguration__CompatibleWith__TestConfiguration_EList(), ecorePackage.getEBoolean(), "compatibleWith", 1, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getTestConfiguration(), "tc", 1, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getComponentInstanceBinding(), "cb", 0, -1, IS_UNIQUE, !IS_ORDERED);

		initEClass(connectionEClass, Connection.class, "Connection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getConnection_EndPoint(), this.getGateReference(), null, "endPoint", null, 2, 2, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(testDescriptionEClass, TestDescription.class, "TestDescription", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTestDescription_TestConfiguration(), this.getTestConfiguration(), null, "testConfiguration", null, 1, 1, TestDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTestDescription_FormalParameter(), this.getFormalParameter(), null, "formalParameter", null, 0, -1, TestDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTestDescription_BehaviourDescription(), this.getBehaviourDescription(), null, "behaviourDescription", null, 0, 1, TestDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTestDescription_TestObjective(), this.getTestObjective(), null, "testObjective", null, 0, -1, TestDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEAttribute(getTestDescription_IsLocallyOrdered(), ecorePackage.getEBoolean(), "isLocallyOrdered", "false", 1, 1, TestDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(behaviourDescriptionEClass, BehaviourDescription.class, "BehaviourDescription", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBehaviourDescription_Behaviour(), this.getBehaviour(), null, "behaviour", null, 1, 1, BehaviourDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(blockEClass, Block.class, "Block", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBlock_Behaviour(), this.getBehaviour(), null, "behaviour", null, 1, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBlock_Guard(), this.getLocalExpression(), null, "guard", null, 0, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getBlock__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		op = initEOperation(getBlock__GetParticipatingComponentsExcluding__Behaviour(), this.getComponentInstance(), "getParticipatingComponentsExcluding", 0, -1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getBehaviour(), "excluded", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(combinedBehaviourEClass, CombinedBehaviour.class, "CombinedBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCombinedBehaviour_Periodic(), this.getPeriodicBehaviour(), null, "periodic", null, 0, -1, CombinedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCombinedBehaviour_Exceptional(), this.getExceptionalBehaviour(), null, "exceptional", null, 0, -1, CombinedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(periodicBehaviourEClass, PeriodicBehaviour.class, "PeriodicBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPeriodicBehaviour_Block(), this.getBlock(), null, "block", null, 1, 1, PeriodicBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPeriodicBehaviour_Period(), this.getLocalExpression(), null, "period", null, 1, -1, PeriodicBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getPeriodicBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(exceptionalBehaviourEClass, ExceptionalBehaviour.class, "ExceptionalBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getExceptionalBehaviour_Block(), this.getBlock(), null, "block", null, 1, 1, ExceptionalBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getExceptionalBehaviour_GuardedComponent(), this.getComponentInstance(), null, "guardedComponent", null, 0, 1, ExceptionalBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getExceptionalBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(alternativeBehaviourEClass, AlternativeBehaviour.class, "AlternativeBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(multipleCombinedBehaviourEClass, MultipleCombinedBehaviour.class, "MultipleCombinedBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMultipleCombinedBehaviour_Block(), this.getBlock(), null, "block", null, 1, -1, MultipleCombinedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getMultipleCombinedBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(parallelBehaviourEClass, ParallelBehaviour.class, "ParallelBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(boundedLoopBehaviourEClass, BoundedLoopBehaviour.class, "BoundedLoopBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBoundedLoopBehaviour_NumIteration(), this.getLocalExpression(), null, "numIteration", null, 1, -1, BoundedLoopBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(singleCombinedBehaviourEClass, SingleCombinedBehaviour.class, "SingleCombinedBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSingleCombinedBehaviour_Block(), this.getBlock(), null, "block", null, 1, 1, SingleCombinedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getSingleCombinedBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(optionalBehaviourEClass, OptionalBehaviour.class, "OptionalBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(unboundedLoopBehaviourEClass, UnboundedLoopBehaviour.class, "UnboundedLoopBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(conditionalBehaviourEClass, ConditionalBehaviour.class, "ConditionalBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(compoundBehaviourEClass, CompoundBehaviour.class, "CompoundBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(defaultBehaviourEClass, DefaultBehaviour.class, "DefaultBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(interruptBehaviourEClass, InterruptBehaviour.class, "InterruptBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(targetEClass, Target.class, "Target", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTarget_TargetGate(), this.getGateReference(), null, "targetGate", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTarget_ValueAssignment(), this.getValueAssignment(), null, "valueAssignment", null, 0, -1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(verdictAssignmentEClass, VerdictAssignment.class, "VerdictAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getVerdictAssignment_Verdict(), this.getDataUse(), null, "verdict", null, 1, 1, VerdictAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(assertionEClass, Assertion.class, "Assertion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAssertion_Otherwise(), this.getDataUse(), null, "otherwise", null, 0, 1, Assertion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAssertion_Condition(), this.getDataUse(), null, "condition", null, 1, 1, Assertion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(stopEClass, Stop.class, "Stop", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(breakEClass, Break.class, "Break", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(assignmentEClass, Assignment.class, "Assignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAssignment_Variable(), this.getVariableUse(), null, "variable", null, 1, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAssignment_Expression(), this.getDataUse(), null, "expression", null, 1, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getAssignment__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(actionBehaviourEClass, ActionBehaviour.class, "ActionBehaviour", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getActionBehaviour_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 0, 1, ActionBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getActionBehaviour__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(inlineActionEClass, InlineAction.class, "InlineAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getInlineAction_Body(), ecorePackage.getEString(), "body", null, 1, 1, InlineAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(actionReferenceEClass, ActionReference.class, "ActionReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getActionReference_Action(), this.getAction(), null, "action", null, 1, 1, ActionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getActionReference_Argument(), this.getParameterBinding(), null, "argument", null, 0, -1, ActionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(testDescriptionReferenceEClass, TestDescriptionReference.class, "TestDescriptionReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTestDescriptionReference_TestDescription(), this.getTestDescription(), null, "testDescription", null, 1, 1, TestDescriptionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTestDescriptionReference_ComponentInstanceBinding(), this.getComponentInstanceBinding(), null, "componentInstanceBinding", null, 0, -1, TestDescriptionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getTestDescriptionReference_Argument(), this.getParameterBinding(), null, "argument", null, 0, -1, TestDescriptionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getTestDescriptionReference__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(componentInstanceBindingEClass, ComponentInstanceBinding.class, "ComponentInstanceBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getComponentInstanceBinding_FormalComponent(), this.getComponentInstance(), null, "formalComponent", null, 1, 1, ComponentInstanceBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComponentInstanceBinding_ActualComponent(), this.getComponentInstance(), null, "actualComponent", null, 1, 1, ComponentInstanceBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(interactionEClass, Interaction.class, "Interaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getInteraction_SourceGate(), this.getGateReference(), null, "sourceGate", null, 1, 1, Interaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getInteraction_Target(), this.getTarget(), null, "target", null, 1, -1, Interaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEOperation(getInteraction__GetParticipatingComponents(), this.getComponentInstance(), "getParticipatingComponents", 0, -1, IS_UNIQUE, IS_ORDERED);

		initEClass(messageEClass, Message.class, "Message", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getMessage_IsTrigger(), ecorePackage.getEBoolean(), "isTrigger", "false", 1, 1, Message.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMessage_Argument(), this.getDataUse(), null, "argument", null, 1, 1, Message.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(predefinedFunctionEClass, PredefinedFunction.class, "PredefinedFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPredefinedFunction_ReturnType(), this.getDataType(), null, "returnType", null, 0, 1, PredefinedFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(memberReferenceEClass, MemberReference.class, "MemberReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMemberReference_Member(), this.getMember(), null, "member", null, 0, 1, MemberReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMemberReference_CollectionIndex(), this.getDataUse(), null, "collectionIndex", null, 0, 1, MemberReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(predefinedFunctionCallEClass, PredefinedFunctionCall.class, "PredefinedFunctionCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPredefinedFunctionCall_Function(), this.getPredefinedFunction(), null, "function", null, 1, 1, PredefinedFunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPredefinedFunctionCall_ActualParameters(), this.getDataUse(), null, "actualParameters", null, 0, -1, PredefinedFunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getPredefinedFunctionCall__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(localExpressionEClass, LocalExpression.class, "LocalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLocalExpression_Expression(), this.getDataUse(), null, "expression", null, 1, 1, LocalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLocalExpression_ComponentInstance(), this.getComponentInstance(), null, "componentInstance", null, 0, 1, LocalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(valueAssignmentEClass, ValueAssignment.class, "ValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getValueAssignment_Variable(), this.getVariable(), null, "variable", null, 1, 1, ValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getValueAssignment_Parameter(), this.getParameter(), null, "parameter", null, 0, 1, ValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(procedureCallEClass, ProcedureCall.class, "ProcedureCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProcedureCall_Signature(), this.getProcedureSignature(), null, "signature", null, 1, 1, ProcedureCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProcedureCall_Argument(), this.getParameterBinding(), null, "argument", null, 1, -1, ProcedureCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProcedureCall_ReplyTo(), this.getProcedureCall(), null, "replyTo", null, 0, 1, ProcedureCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(procedureSignatureEClass, ProcedureSignature.class, "ProcedureSignature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProcedureSignature_Parameter(), this.getProcedureParameter(), null, "parameter", null, 1, -1, ProcedureSignature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(procedureParameterEClass, ProcedureParameter.class, "ProcedureParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getProcedureParameter_Kind(), this.getParameterKind(), "kind", null, 1, 1, ProcedureParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(collectionDataTypeEClass, CollectionDataType.class, "CollectionDataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCollectionDataType_ItemType(), this.getDataType(), null, "itemType", null, 1, 1, CollectionDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(collectionDataInstanceEClass, CollectionDataInstance.class, "CollectionDataInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCollectionDataInstance_Item(), this.getDataUse(), null, "item", null, 0, -1, CollectionDataInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getCollectionDataInstance_UnassignedMember(), this.getUnassignedMemberTreatment(), "unassignedMember", null, 0, 1, CollectionDataInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(extensionEClass, Extension.class, "Extension", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getExtension_Extending(), this.getPackageableElement(), null, "extending", null, 1, 1, Extension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getExtension__TransitiveExtending(), this.getExtension(), "transitiveExtending", 0, -1, IS_UNIQUE, IS_ORDERED);

		op = initEOperation(getExtension__IsExtending__PackageableElement(), ecorePackage.getEBooleanObject(), "isExtending", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getPackageableElement(), "e", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(literalValueUseEClass, LiteralValueUse.class, "LiteralValueUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getLiteralValueUse_Value(), ecorePackage.getEString(), "value", null, 0, 1, LiteralValueUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getLiteralValueUse_IntValue(), ecorePackage.getEBigInteger(), "intValue", null, 0, 1, LiteralValueUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getLiteralValueUse_BoolValue(), ecorePackage.getEBooleanObject(), "boolValue", null, 0, 1, LiteralValueUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLiteralValueUse_DataType(), this.getDataType(), null, "dataType", null, 0, 1, LiteralValueUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getLiteralValueUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(constraintTypeEClass, ConstraintType.class, "ConstraintType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(constraintEClass, Constraint.class, "Constraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getConstraint_Type(), this.getConstraintType(), null, "type", null, 1, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getConstraint_Quantifier(), this.getDataUse(), null, "quantifier", 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(enumDataTypeEClass, EnumDataType.class, "EnumDataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEnumDataType_Value(), this.getSimpleDataInstance(), null, "value", null, 0, -1, EnumDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(dataElementUseEClass, DataElementUse.class, "DataElementUse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDataElementUse_UnassignedMember(), this.getUnassignedMemberTreatment(), "unassignedMember", null, 0, 1, DataElementUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataElementUse_DataElement(), this.getNamedElement(), null, "dataElement", null, 0, 1, DataElementUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDataElementUse_Item(), this.getDataUse(), null, "item", null, 0, -1, DataElementUse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getDataElementUse__ResolveDataType(), this.getDataType(), "resolveDataType", 0, 1, IS_UNIQUE, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(unassignedMemberTreatmentEEnum, UnassignedMemberTreatment.class, "UnassignedMemberTreatment");
		addEEnumLiteral(unassignedMemberTreatmentEEnum, UnassignedMemberTreatment.UNDEFINED);
		addEEnumLiteral(unassignedMemberTreatmentEEnum, UnassignedMemberTreatment.ANY_VALUE);
		addEEnumLiteral(unassignedMemberTreatmentEEnum, UnassignedMemberTreatment.ANY_VALUE_OR_OMIT);

		initEEnum(componentInstanceRoleEEnum, ComponentInstanceRole.class, "ComponentInstanceRole");
		addEEnumLiteral(componentInstanceRoleEEnum, ComponentInstanceRole.SUT);
		addEEnumLiteral(componentInstanceRoleEEnum, ComponentInstanceRole.TESTER);

		initEEnum(gateTypeKindEEnum, GateTypeKind.class, "GateTypeKind");
		addEEnumLiteral(gateTypeKindEEnum, GateTypeKind.MESSAGE);
		addEEnumLiteral(gateTypeKindEEnum, GateTypeKind.PROCEDURE);

		initEEnum(timeLabelUseKindEEnum, TimeLabelUseKind.class, "TimeLabelUseKind");
		addEEnumLiteral(timeLabelUseKindEEnum, TimeLabelUseKind.LAST);
		addEEnumLiteral(timeLabelUseKindEEnum, TimeLabelUseKind.PREVIOUS);
		addEEnumLiteral(timeLabelUseKindEEnum, TimeLabelUseKind.FIRST);

		initEEnum(parameterKindEEnum, ParameterKind.class, "ParameterKind");
		addEEnumLiteral(parameterKindEEnum, ParameterKind.IN);
		addEEnumLiteral(parameterKindEEnum, ParameterKind.OUT);
		addEEnumLiteral(parameterKindEEnum, ParameterKind.EXCEPTION);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http://www.eclipse.org/emf/2002/Ecore
		createEcoreAnnotations();
		// http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot
		createPivotAnnotations();
		// http://www.eclipse.org/OCL/Collection
		createCollectionAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createEcoreAnnotations()
	{
		String source = "http://www.eclipse.org/emf/2002/Ecore";
		addAnnotation
		  (this,
		   source,
		   new String[]
		   {
			   "invocationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
			   "settingDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
			   "validationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"
		   });
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createPivotAnnotations()
	{
		String source = "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot";
		addAnnotation
		  (getElement__Container(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.oclContainer().oclIsUndefined()) then\n                self.oclContainer().oclAsType(Element)\n            else \n                null\n            endif"
		   });
		addAnnotation
		  (getElement__GetParentTestDescription(),
		   source,
		   new String[]
		   {
			   "body", "  \n            if (self.oclContainer().oclIsUndefined()) then\n                null\n            else \n                if (self.container().oclIsKindOf(TestDescription)) then\n                    self.container().oclAsType(TestDescription)\n                else\n                    self.container().getParentTestDescription()\n                endif\n            endif"
		   });
		addAnnotation
		  (getPackageableElement__ConformsTo__String(),
		   source,
		   new String[]
		   {
			   "body", "             \n                if (self.getElementNamed(n).oclIsUndefined()) then\n                    false\n                else\n                    self.conformsTo(self.getElementNamed(n)) \n                endif\n            "
		   });
		addAnnotation
		  (getPackageableElement__GetElementNamed__String(),
		   source,
		   new String[]
		   {
			   "body", "\n                self.oclType().allInstances()->select(e | e.name = n)->asOrderedSet()->first()\n            "
		   });
		addAnnotation
		  (getPackageableElement__ConformsTo__PackageableElement(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (self = n) then\n                true\n            else\n                if (self.oclIsKindOf(AnnotationType) and not self.oclAsType(AnnotationType).extension.oclIsUndefined()) then\n                    self.oclAsType(AnnotationType).extension.isExtending(n)\n                else\n                    if (self.oclIsKindOf(ComponentType) and not self.oclAsType(ComponentType).extension.oclIsUndefined()) then\n                        self.oclAsType(ComponentType).extension.isExtending(n)\n                    else\n                        if (self.oclIsKindOf(GateType) and not self.oclAsType(GateType).extension.oclIsUndefined()) then\n                            self.oclAsType(GateType).extension.isExtending(n)\n                        else\n                            if (self.oclIsKindOf(StructuredDataType)) then\n                                self.oclAsType(StructuredDataType).extension->exists(ex | ex.isExtending(n))\n                            else\n                                if (self.oclIsKindOf(SimpleDataType) and not self.oclAsType(SimpleDataType).extension.oclIsUndefined()) then\n                                    self.oclAsType(SimpleDataType).extension.isExtending(n)\n                                else\n                                    false\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n            endif\n            "
		   });
		addAnnotation
		  (getNamedElement_QualifiedName(),
		   source,
		   new String[]
		   {
			   "derivation", "\n            if (self.name.oclIsUndefined()) then\n                \'\'\n            else\n                if (not self.oclContainer().oclIsUndefined()) then\n                    if (self.oclContainer().oclIsKindOf(NamedElement)) then\n                        self.oclContainer().oclAsType(NamedElement).qualifiedName + \'::\' + self.name\n                    else\n                        self.oclContainer().oclAsType(ocl::OclElement)->closure(oclContainer())\n                        ->select(c | c.oclIsKindOf(NamedElement))\n                        ->asOrderedSet()\n                        ->first().oclAsType(NamedElement).qualifiedName + \'::\' + self.name\n                    endif\n                else\n                    self.name\n                endif\n            endif"
		   });
		addAnnotation
		  (getDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "body", "\n                    self.constraint\n                "
		   });
		addAnnotation
		  (getSimpleDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension.oclIsUndefined()) then\n                self.extension.extending.oclAsType(SimpleDataType).allConstraints()->union(self.constraint)->asOrderedSet()\n            else \n                self.constraint\n            endif\n            "
		   });
		addAnnotation
		  (getStructuredDataType__AllMembers(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension->isEmpty()) then\n                self.extension->collect(e | e.extending.oclAsType(StructuredDataType).allMembers())->union(self.member)->asOrderedSet()\n            else \n                self.member\n            endif\n            "
		   });
		addAnnotation
		  (getStructuredDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension->isEmpty()) then\n                self.extension->collect(e | e.extending.oclAsType(StructuredDataType).allConstraints())->union(self.constraint)->asOrderedSet()\n            else \n                self.constraint\n            endif\n            "
		   });
		addAnnotation
		  (getDataUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "null"
		   });
		addAnnotation
		  (getDataUse__IsEffectivelyStatic(),
		   source,
		   new String[]
		   {
			   "body", "\n                (self.oclIsKindOf(StaticDataUse)\n                    or (self.oclIsKindOf(DataElementUse) and \n                        (self.oclAsType(DataElementUse).dataElement.oclIsUndefined()\n                            or self.oclAsType(DataElementUse).dataElement.oclIsKindOf(DataInstance)\n                            or self.oclAsType(DataElementUse).dataElement.oclIsKindOf(DataType)\n                        )\n                    )\n                )\n                and self.argument->forAll(a | a.dataUse.isEffectivelyStatic())\n                "
		   });
		addAnnotation
		  (getParameterBinding__ResolveParameterType(),
		   source,
		   new String[]
		   {
			   "body", "\t\t\t\n\t            \tif (self.reduction->isEmpty()) then\n\t                \tself.parameter.dataType\n\t            \telse \n\t            \t\tif (self.reduction->last().member.oclIsUndefined()) then\n\t            \t\t\tif (self.reduction->last().collectionIndex.oclIsUndefined()) then\n\t                \t\t\tself.parameter.dataType\n\t            \t\t\telse\n\t            \t\t\t\tself.parameter.dataType.oclAsType(CollectionDataType).itemType\n\t            \t\t\tendif \n\t            \t\telse \n\t                \t\tself.reduction->last().member.dataType\n\t            \t\tendif\n\t                endif\n\t                "
		   });
		addAnnotation
		  (getFormalParameterUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "self.parameter.dataType"
		   });
		addAnnotation
		  (getFunctionCall__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "self.function.returnType"
		   });
		addAnnotation
		  (getVariableUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "self.variable.dataType"
		   });
		addAnnotation
		  (getComponentType__AllGates(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension.oclIsUndefined()) then\n                self.extension.extending.oclAsType(ComponentType).allGates()->union(self.gateInstance)->asOrderedSet()\n            else \n                self.gateInstance\n            endif\n            "
		   });
		addAnnotation
		  (getComponentType__AllTimers(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension.oclIsUndefined()) then\n                self.extension.extending.oclAsType(ComponentType).allTimers()->union(self.timer)->asOrderedSet()\n            else \n                self.timer\n            endif\n            "
		   });
		addAnnotation
		  (getComponentType__AllVariables(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension.oclIsUndefined()) then\n                self.extension.extending.oclAsType(ComponentType).allVariables()->union(self.variable)->asOrderedSet()\n            else \n                self.variable\n            endif\n            "
		   });
		addAnnotation
		  (getGateType__AllDataTypes(),
		   source,
		   new String[]
		   {
			   "body", "\n            if (not self.extension.oclIsUndefined()) then\n                self.extension.extending.oclAsType(GateType).allDataTypes()->union(self.dataType)->asOrderedSet()\n            else \n                self.dataType\n            endif\n            "
		   });
		addAnnotation
		  (getSpecialValueUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if (self.container().oclIsTypeOf(MemberAssignment)) then\n                        self.container().oclAsType(MemberAssignment).member.dataType\n                    else \n                        if (self.container().oclIsTypeOf(ParameterBinding)) then\n                            self.container().oclAsType(ParameterBinding).parameter.dataType\n                        else \n                            if (self.container().oclIsTypeOf(Interaction) and \n                                self.oclIsTypeOf(AnyValue)) then\n                                self.oclAsType(AnyValue).dataType\n                            else\n                                null\n                            endif\n                        endif\n                    endif\n                "
		   });
		addAnnotation
		  (getAnyValue__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if (not self.dataType.oclIsUndefined()) then\n                        self.dataType\n                    else \n                        if (self.container().oclIsTypeOf(MemberAssignment)) then\n                            self.container().oclAsType(MemberAssignment).member.dataType\n                        else \n                            if (self.container().oclIsTypeOf(ParameterBinding)) then\n                                self.container().oclAsType(ParameterBinding).parameter.dataType\n                            else\n                                if (self.container().oclIsTypeOf(CollectionDataInstance)) then\n                                    self.container().oclAsType(CollectionDataInstance).dataType.oclAsType(CollectionDataType).itemType\n                                else\n                                    if (self.container().oclIsTypeOf(DataElementUse)) then\n                                        self.container().oclAsType(DataElementUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                    else\n                                        if (self.container().oclIsTypeOf(DataInstanceUse)) then\n                                            self.container().oclAsType(DataInstanceUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                        else\n                                            null\n                                        endif\n                                    endif\n                                endif\n                            endif\n                        endif\n                    endif\n                "
		   });
		addAnnotation
		  (getDataInstanceUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (not self.dataInstance.oclIsUndefined()) then\n                    self.dataInstance.dataType\n                else \n                    if (not self.dataType.oclIsUndefined()) then\n                        self.dataType\n                    else \n                        if (self.container().oclIsTypeOf(MemberAssignment)) then\n                            self.container().oclAsType(MemberAssignment).member.dataType\n                        else \n                            if (self.container().oclIsTypeOf(ParameterBinding)) then\n                                self.container().oclAsType(ParameterBinding).parameter.dataType\n                            else\n                                if (self.container().oclIsTypeOf(CollectionDataInstance)) then\n                                    self.container().oclAsType(CollectionDataInstance).dataType.oclAsType(CollectionDataType).itemType\n                                else\n                                    if (self.container().oclIsTypeOf(DataElementUse)) then\n                                        self.container().oclAsType(DataElementUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                    else\n                                        if (self.container().oclIsTypeOf(DataInstanceUse)) then\n                                            self.container().oclAsType(DataInstanceUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                        else\n                                            null\n                                        endif\n                                    endif\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n                "
		   });
		addAnnotation
		  (getTimerOperation__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        OrderedSet { self.componentInstance }\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getAtomicBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then\n                        self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()\n                     else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getBehaviour__IsTesterInputEvent(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (self.oclIsKindOf(TimeOut) or \n                    self.oclIsKindOf(Quiescence) or\n                    (self.oclIsKindOf(Interaction) and\n                        self.oclAsType(Interaction).sourceGate.component.role = ComponentInstanceRole::SUT and\n                    self.oclAsType(Interaction).target->exists(t | t.targetGate.component.role = ComponentInstanceRole::Tester)\n                    )\n                ) then\n                    true\n                else\n                    false\n                endif"
		   });
		addAnnotation
		  (getBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        OrderedSet{}\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getTimeOperation__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (\n                        if not self.componentInstance.oclIsUndefined() then\n                            OrderedSet { self.componentInstance }\n                        else\n                            self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()\n                        endif\n                     ) else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getQuiescence__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (\n                        if not self.componentInstance.oclIsUndefined() or not self.gateReference.oclIsUndefined() then\n                            self.componentInstance->including(self.gateReference.component)->asOrderedSet()\n                        else\n                            self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()\n                        endif\n                     ) else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getTimeLabelUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "Time.allInstances()->asOrderedSet()->first()"
		   });
		addAnnotation
		  (getTestConfiguration__CompatibleWith__TestConfiguration_EList(),
		   source,
		   new String[]
		   {
			   "body", "self.componentInstance->forAll(c | cb->exists(formalComponent = c)) and\nself.connection->forAll(c1 | tc.connection->exists(c2 |\n\tc1.endPoint->reject(ep1 | c2.endPoint->exists(ep2 |\n\t\tcb->any(formalComponent = ep1.component).actualComponent = ep2.component and ep1.gate = ep2.gate\n\t))->isEmpty()\n))"
		   });
		addAnnotation
		  (getBlock__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.behaviour.getParticipatingComponents()->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getBlock__GetParticipatingComponentsExcluding__Behaviour(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.behaviour->excluding(excluded).getParticipatingComponents()->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getPeriodicBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.block.getParticipatingComponents()->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getExceptionalBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.block.getParticipatingComponents()->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getMultipleCombinedBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.periodic.getParticipatingComponents()\n                        ->union(self.exceptional.getParticipatingComponents())\n                        ->union(self.block.getParticipatingComponents())->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getSingleCombinedBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.periodic.getParticipatingComponents()\n                        ->union(self.exceptional.getParticipatingComponents())\n                        ->union(self.block.getParticipatingComponents())->asOrderedSet()\n                    else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getAssignment__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (\n                        if not self.variable.componentInstance.oclIsUndefined() then\n                            OrderedSet { self.variable.componentInstance }\n                        else\n                            self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()\n                        endif\n                     ) else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getActionBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (\n                        if not self.componentInstance.oclIsUndefined() then\n                            OrderedSet { self.componentInstance }\n                        else\n                            self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()\n                        endif\n                     ) else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getTestDescriptionReference__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and not self.componentInstanceBinding->isEmpty() then\n                        self.componentInstanceBinding.actualComponent->asOrderedSet()\n                     else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getInteraction__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "body", "\n                    if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then\n                        self.target\n                        ->collect(targetGate.component)\n                        ->including(sourceGate.component)\n                        ->asOrderedSet()\n                     else\n                        self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()\n                    endif\n                "
		   });
		addAnnotation
		  (getPredefinedFunctionCall__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n\t                if not self.function.returnType.oclIsUndefined() then\n\t\t\t\t\t\tself.function.returnType\n\t\t\t\t\telse \n\t\t\t\t\t\tself.actualParameters.resolveDataType()->asOrderedSet()->first()\n\t\t\t\t\tendif\n\t\t\t\t\t"
		   });
		addAnnotation
		  (getExtension__TransitiveExtending(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (self.extending.oclIsKindOf(AnnotationType)) then\n                    OrderedSet { self.extending.oclAsType(AnnotationType).extension }\n                else\n                    if (self.extending.oclIsKindOf(ComponentType)) then\n                        OrderedSet { self.extending.oclAsType(ComponentType).extension }\n                    else\n                        if (self.extending.oclIsKindOf(GateType)) then\n                            OrderedSet { self.extending.oclAsType(GateType).extension }\n                        else\n                            if (self.extending.oclIsKindOf(StructuredDataType)) then\n                                self.extending.oclAsType(StructuredDataType).extension\n                            else\n                                if (self.extending.oclIsKindOf(SimpleDataType)) then\n                                    OrderedSet { self.extending.oclAsType(SimpleDataType).extension }\n                                else\n                                    OrderedSet { }\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n                "
		   });
		addAnnotation
		  (getExtension__IsExtending__PackageableElement(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (self.extending = e) then\n                    true\n                else\n                    if (self->closure(transitiveExtending())->includes(e)) then\n                        true\n                    else\n                        false\n                    endif \n                endif\n                "
		   });
		addAnnotation
		  (getLiteralValueUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (not self.dataType.oclIsUndefined()) then\n                    self.dataType\n                else \n                    if (self.container().oclIsTypeOf(MemberAssignment)) then\n                        self.container().oclAsType(MemberAssignment).member.dataType\n                    else \n                        if (self.container().oclIsTypeOf(ParameterBinding)) then\n                            self.container().oclAsType(ParameterBinding).parameter.dataType\n                        else\n                            if (not self.intValue.oclIsUndefined()) then\n                                SimpleDataType.allInstances()->select(t | t.name = \'Integer\')->asOrderedSet()->first()\n                            else\n                                if (not self.boolValue.oclIsUndefined()) then\n                                    SimpleDataType.allInstances()->select(t | t.name = \'Boolean\')->asOrderedSet()->first()\n                                else \n                                    SimpleDataType.allInstances()->select(t | t.name = \'String\')->asOrderedSet()->first()\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n                "
		   });
		addAnnotation
		  (getDataElementUse__ResolveDataType(),
		   source,
		   new String[]
		   {
			   "body", "\n                if (not self.dataElement.oclIsUndefined()) then\n                    if (self.dataElement.oclIsKindOf(DataType)) then\n                        self.dataElement.oclAsType(DataType)\n                    else\n                        if (self.dataElement.oclIsKindOf(DataInstance)) then\n                            self.dataElement.oclAsType(DataInstance).dataType\n                        else \n                            if (self.dataElement.oclIsTypeOf(FormalParameter)) then\n                                self.dataElement.oclAsType(FormalParameter).dataType\n                            else \n                                if (self.dataElement.oclIsTypeOf(Function)) then\n                                    self.dataElement.oclAsType(Function).returnType\n                                else\n                                    null\n                                endif\n                            endif \n                        endif\n                    endif\n                else \n                    if (self.container().oclIsTypeOf(MemberAssignment)) then\n                        self.container().oclAsType(MemberAssignment).member.dataType\n                    else \n                        if (self.container().oclIsTypeOf(ParameterBinding)) then\n                        \tself.container().oclAsType(ParameterBinding).resolveParameterType()\n                        else\n                            if (self.container().oclIsTypeOf(CollectionDataInstance)) then\n                                self.container().oclAsType(CollectionDataInstance).dataType.oclAsType(CollectionDataType).itemType\n                            else\n                                if (self.container().oclIsTypeOf(DataElementUse)) then\n                                    self.container().oclAsType(DataElementUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                else\n                                    if (self.container().oclIsTypeOf(DataInstanceUse)) then\n                                        self.container().oclAsType(DataInstanceUse).resolveDataType().oclAsType(CollectionDataType).itemType\n                                    else\n                                        null\n                                    endif\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n                "
		   });
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/OCL/Collection</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createCollectionAnnotations()
	{
		String source = "http://www.eclipse.org/OCL/Collection";
		addAnnotation
		  (getDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getDataType_Constraint(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getSimpleDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getStructuredDataType__AllMembers(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getStructuredDataType__AllConstraints(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getStructuredDataType_Extension(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getMember_Constraint(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getComponentType__AllGates(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getComponentType__AllTimers(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getComponentType__AllVariables(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getGateType__AllDataTypes(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getDataInstanceUse_Item(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getTimerOperation__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getAtomicBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getTimeOperation__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getQuiescence__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getBlock__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getBlock__GetParticipatingComponentsExcluding__Behaviour(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getPeriodicBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getExceptionalBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getMultipleCombinedBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getSingleCombinedBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getTarget_ValueAssignment(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getAssignment__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getActionBehaviour__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getTestDescriptionReference__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getInteraction__GetParticipatingComponents(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getProcedureCall_Argument(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getProcedureSignature_Parameter(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getCollectionDataInstance_Item(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getExtension__TransitiveExtending(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getConstraint_Quantifier(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
		addAnnotation
		  (getDataElementUse_Item(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
	}

} //tdlPackageImpl
