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

import org.eclipse.emf.ecore.EClass;
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.extendedconfigurations.ExtendedConfigurationsPackage;

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

import org.etsi.mts.tdl.impl.tdlPackageImpl;

import org.etsi.mts.tdl.structuredobjectives.Content;
import org.etsi.mts.tdl.structuredobjectives.ContentReference;
import org.etsi.mts.tdl.structuredobjectives.DataReference;
import org.etsi.mts.tdl.structuredobjectives.Element;
import org.etsi.mts.tdl.structuredobjectives.Entity;
import org.etsi.mts.tdl.structuredobjectives.EntityBinding;
import org.etsi.mts.tdl.structuredobjectives.EntityReference;
import org.etsi.mts.tdl.structuredobjectives.Event;
import org.etsi.mts.tdl.structuredobjectives.EventArgument;
import org.etsi.mts.tdl.structuredobjectives.EventOccurrence;
import org.etsi.mts.tdl.structuredobjectives.EventOccurrenceSpecification;
import org.etsi.mts.tdl.structuredobjectives.EventReference;
import org.etsi.mts.tdl.structuredobjectives.EventSequence;
import org.etsi.mts.tdl.structuredobjectives.EventSpecificationTemplate;
import org.etsi.mts.tdl.structuredobjectives.EventTemplateOccurrence;
import org.etsi.mts.tdl.structuredobjectives.ExpectedBehaviour;
import org.etsi.mts.tdl.structuredobjectives.FinalConditions;
import org.etsi.mts.tdl.structuredobjectives.InitialConditions;
import org.etsi.mts.tdl.structuredobjectives.LiteralValue;
import org.etsi.mts.tdl.structuredobjectives.LiteralValueReference;
import org.etsi.mts.tdl.structuredobjectives.PICSReference;
import org.etsi.mts.tdl.structuredobjectives.RepeatedEventSequence;
import org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesFactory;
import org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage;
import org.etsi.mts.tdl.structuredobjectives.StructuredTestObjective;
import org.etsi.mts.tdl.structuredobjectives.TestObjectiveVariant;
import org.etsi.mts.tdl.structuredobjectives.Value;
import org.etsi.mts.tdl.structuredobjectives.VariantBinding;
import org.etsi.mts.tdl.structuredobjectives.Variants;

import org.etsi.mts.tdl.tdlPackage;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass variantBindingEClass = 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.structuredobjectives.StructuredObjectivesPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private StructuredObjectivesPackageImpl()
	{
		super(eNS_URI, StructuredObjectivesFactory.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 StructuredObjectivesPackage#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 StructuredObjectivesPackage init()
	{
		if (isInited) return (StructuredObjectivesPackage)EPackage.Registry.INSTANCE.getEPackage(StructuredObjectivesPackage.eNS_URI);

		// Obtain or create and register package
		Object registeredStructuredObjectivesPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
		StructuredObjectivesPackageImpl theStructuredObjectivesPackage = registeredStructuredObjectivesPackage instanceof StructuredObjectivesPackageImpl ? (StructuredObjectivesPackageImpl)registeredStructuredObjectivesPackage : new StructuredObjectivesPackageImpl();

		isInited = true;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public StructuredObjectivesFactory getStructuredObjectivesFactory()
	{
		return (StructuredObjectivesFactory)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);
		createEOperation(elementEClass, ELEMENT___GET_TEST_OBJECTIVE);
		createEOperation(elementEClass, ELEMENT___CONTAINS__ELEMENT);
		createEOperation(elementEClass, ELEMENT___GET_NOTES);

		structuredTestObjectiveEClass = createEClass(STRUCTURED_TEST_OBJECTIVE);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__CONFIGURATION);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__INITIAL_CONDITIONS);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__EXPECTED_BEHAVIOUR);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__FINAL_CONDITIONS);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__PICS_REFERENCE);
		createEReference(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE__VARIANTS);
		createEOperation(structuredTestObjectiveEClass, STRUCTURED_TEST_OBJECTIVE___INDEX_OF__ELEMENT);

		initialConditionsEClass = createEClass(INITIAL_CONDITIONS);
		createEReference(initialConditionsEClass, INITIAL_CONDITIONS__CONDITIONS);

		eventSequenceEClass = createEClass(EVENT_SEQUENCE);
		createEReference(eventSequenceEClass, EVENT_SEQUENCE__EVENTS);

		eventOccurrenceEClass = createEClass(EVENT_OCCURRENCE);
		createEReference(eventOccurrenceEClass, EVENT_OCCURRENCE__TIME_CONSTRAINT);
		createEReference(eventOccurrenceEClass, EVENT_OCCURRENCE__TIME_LABEL);

		expectedBehaviourEClass = createEClass(EXPECTED_BEHAVIOUR);
		createEReference(expectedBehaviourEClass, EXPECTED_BEHAVIOUR__WHEN_CLAUSE);
		createEReference(expectedBehaviourEClass, EXPECTED_BEHAVIOUR__THEN_CLAUSE);

		finalConditionsEClass = createEClass(FINAL_CONDITIONS);
		createEReference(finalConditionsEClass, FINAL_CONDITIONS__CONDITIONS);

		picsReferenceEClass = createEClass(PICS_REFERENCE);
		createEReference(picsReferenceEClass, PICS_REFERENCE__PICS);

		picsEClass = createEClass(PICS);

		entityEClass = createEClass(ENTITY);

		eventEClass = createEClass(EVENT);

		eventOccurrenceSpecificationEClass = createEClass(EVENT_OCCURRENCE_SPECIFICATION);
		createEReference(eventOccurrenceSpecificationEClass, EVENT_OCCURRENCE_SPECIFICATION__ENTITY_REFERENCE);
		createEReference(eventOccurrenceSpecificationEClass, EVENT_OCCURRENCE_SPECIFICATION__EVENT_REFERENCE);
		createEReference(eventOccurrenceSpecificationEClass, EVENT_OCCURRENCE_SPECIFICATION__OPPOSITE_ENTITY_REFERENCE);
		createEReference(eventOccurrenceSpecificationEClass, EVENT_OCCURRENCE_SPECIFICATION__EVENT_ARGUMENT);

		entityReferenceEClass = createEClass(ENTITY_REFERENCE);
		createEReference(entityReferenceEClass, ENTITY_REFERENCE__ENTITY);
		createEReference(entityReferenceEClass, ENTITY_REFERENCE__COMPONENT);

		eventReferenceEClass = createEClass(EVENT_REFERENCE);
		createEReference(eventReferenceEClass, EVENT_REFERENCE__EVENT);

		valueEClass = createEClass(VALUE);

		eventArgumentEClass = createEClass(EVENT_ARGUMENT);

		dataReferenceEClass = createEClass(DATA_REFERENCE);
		createEReference(dataReferenceEClass, DATA_REFERENCE__CONTENT);

		contentEClass = createEClass(CONTENT);
		createEReference(contentEClass, CONTENT__VALUE);
		createEReference(contentEClass, CONTENT__CONTENT);
		createEReference(contentEClass, CONTENT__MEMBER);

		literalValueEClass = createEClass(LITERAL_VALUE);
		createEReference(literalValueEClass, LITERAL_VALUE__CONTENT);
		createEReference(literalValueEClass, LITERAL_VALUE__DATA_TYPE);

		contentReferenceEClass = createEClass(CONTENT_REFERENCE);
		createEReference(contentReferenceEClass, CONTENT_REFERENCE__CONTENT);

		literalValueReferenceEClass = createEClass(LITERAL_VALUE_REFERENCE);
		createEReference(literalValueReferenceEClass, LITERAL_VALUE_REFERENCE__CONTENT);

		repeatedEventSequenceEClass = createEClass(REPEATED_EVENT_SEQUENCE);
		createEReference(repeatedEventSequenceEClass, REPEATED_EVENT_SEQUENCE__REPETITIONS);
		createEReference(repeatedEventSequenceEClass, REPEATED_EVENT_SEQUENCE__INTERVAL);

		eventTemplateOccurrenceEClass = createEClass(EVENT_TEMPLATE_OCCURRENCE);
		createEReference(eventTemplateOccurrenceEClass, EVENT_TEMPLATE_OCCURRENCE__EVENT_TEMPLATE);
		createEReference(eventTemplateOccurrenceEClass, EVENT_TEMPLATE_OCCURRENCE__ENTITY_BINDING);
		createEReference(eventTemplateOccurrenceEClass, EVENT_TEMPLATE_OCCURRENCE__OCCURRENCE_ARGUMENT);

		eventSpecificationTemplateEClass = createEClass(EVENT_SPECIFICATION_TEMPLATE);
		createEReference(eventSpecificationTemplateEClass, EVENT_SPECIFICATION_TEMPLATE__EVENT_SPECIFICATION);

		entityBindingEClass = createEClass(ENTITY_BINDING);
		createEReference(entityBindingEClass, ENTITY_BINDING__TEMPLATE_ENTITY);
		createEReference(entityBindingEClass, ENTITY_BINDING__OCCURRENCE_ENTITY);

		variantsEClass = createEClass(VARIANTS);
		createEReference(variantsEClass, VARIANTS__VARIANTS);

		testObjectiveVariantEClass = createEClass(TEST_OBJECTIVE_VARIANT);
		createEReference(testObjectiveVariantEClass, TEST_OBJECTIVE_VARIANT__PICS_REFERENCE);
		createEReference(testObjectiveVariantEClass, TEST_OBJECTIVE_VARIANT__BINDINGS);

		variantBindingEClass = createEClass(VARIANT_BINDING);
		createEReference(variantBindingEClass, VARIANT_BINDING__VALUE);
		createEReference(variantBindingEClass, VARIANT_BINDING__BOUND_TO);
	}

	/**
	 * <!-- 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);

		// Obtain other dependent packages
		tdlPackage thetdlPackage = (tdlPackage)EPackage.Registry.INSTANCE.getEPackage(tdlPackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		elementEClass.getESuperTypes().add(thetdlPackage.getElement());
		structuredTestObjectiveEClass.getESuperTypes().add(thetdlPackage.getTestObjective());
		structuredTestObjectiveEClass.getESuperTypes().add(this.getElement());
		initialConditionsEClass.getESuperTypes().add(this.getElement());
		eventSequenceEClass.getESuperTypes().add(this.getElement());
		eventOccurrenceEClass.getESuperTypes().add(this.getElement());
		expectedBehaviourEClass.getESuperTypes().add(this.getElement());
		finalConditionsEClass.getESuperTypes().add(this.getElement());
		picsReferenceEClass.getESuperTypes().add(this.getElement());
		picsEClass.getESuperTypes().add(thetdlPackage.getPackageableElement());
		picsEClass.getESuperTypes().add(this.getElement());
		entityEClass.getESuperTypes().add(thetdlPackage.getPackageableElement());
		entityEClass.getESuperTypes().add(this.getElement());
		eventEClass.getESuperTypes().add(thetdlPackage.getPackageableElement());
		eventEClass.getESuperTypes().add(this.getElement());
		eventOccurrenceSpecificationEClass.getESuperTypes().add(this.getEventOccurrence());
		eventOccurrenceSpecificationEClass.getESuperTypes().add(this.getElement());
		entityReferenceEClass.getESuperTypes().add(this.getElement());
		eventReferenceEClass.getESuperTypes().add(this.getElement());
		valueEClass.getESuperTypes().add(this.getElement());
		eventArgumentEClass.getESuperTypes().add(this.getElement());
		dataReferenceEClass.getESuperTypes().add(this.getValue());
		dataReferenceEClass.getESuperTypes().add(this.getElement());
		contentEClass.getESuperTypes().add(this.getElement());
		literalValueEClass.getESuperTypes().add(this.getValue());
		literalValueEClass.getESuperTypes().add(this.getElement());
		contentReferenceEClass.getESuperTypes().add(this.getValue());
		contentReferenceEClass.getESuperTypes().add(this.getElement());
		literalValueReferenceEClass.getESuperTypes().add(this.getValue());
		literalValueReferenceEClass.getESuperTypes().add(this.getElement());
		repeatedEventSequenceEClass.getESuperTypes().add(this.getEventSequence());
		repeatedEventSequenceEClass.getESuperTypes().add(this.getElement());
		eventTemplateOccurrenceEClass.getESuperTypes().add(this.getEventOccurrence());
		eventTemplateOccurrenceEClass.getESuperTypes().add(this.getElement());
		eventSpecificationTemplateEClass.getESuperTypes().add(thetdlPackage.getPackageableElement());
		eventSpecificationTemplateEClass.getESuperTypes().add(this.getElement());
		entityBindingEClass.getESuperTypes().add(this.getElement());
		variantsEClass.getESuperTypes().add(this.getElement());
		testObjectiveVariantEClass.getESuperTypes().add(thetdlPackage.getTestObjective());
		testObjectiveVariantEClass.getESuperTypes().add(this.getElement());
		variantBindingEClass.getESuperTypes().add(this.getElement());

		// Initialize classes, features, and operations; add parameters
		initEClass(elementEClass, Element.class, "Element", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEOperation(getElement__GetTestObjective(), this.getStructuredTestObjective(), "getTestObjective", 0, 1, IS_UNIQUE, IS_ORDERED);

		EOperation op = initEOperation(getElement__Contains__Element(), ecorePackage.getEBoolean(), "contains", 1, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getElement(), "object", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getElement__GetNotes(), thetdlPackage.getComment(), "getNotes", 0, -1, IS_UNIQUE, !IS_ORDERED);

		initEClass(structuredTestObjectiveEClass, StructuredTestObjective.class, "StructuredTestObjective", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getStructuredTestObjective_Configuration(), thetdlPackage.getTestConfiguration(), null, "configuration", null, 0, 1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredTestObjective_InitialConditions(), this.getInitialConditions(), null, "initialConditions", null, 0, 1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredTestObjective_ExpectedBehaviour(), this.getExpectedBehaviour(), null, "expectedBehaviour", null, 0, 1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredTestObjective_FinalConditions(), this.getFinalConditions(), null, "finalConditions", null, 0, 1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredTestObjective_PicsReference(), this.getPICSReference(), null, "picsReference", null, 0, -1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getStructuredTestObjective_Variants(), this.getVariants(), null, "variants", null, 0, 1, StructuredTestObjective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		op = initEOperation(getStructuredTestObjective__IndexOf__Element(), ecorePackage.getEInt(), "indexOf", 1, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getElement(), "object", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(initialConditionsEClass, InitialConditions.class, "InitialConditions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getInitialConditions_Conditions(), this.getEventSequence(), null, "conditions", null, 1, 1, InitialConditions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventSequenceEClass, EventSequence.class, "EventSequence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventSequence_Events(), this.getEventOccurrence(), null, "events", null, 0, -1, EventSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventOccurrenceEClass, EventOccurrence.class, "EventOccurrence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventOccurrence_TimeConstraint(), thetdlPackage.getTimeConstraint(), null, "timeConstraint", null, 0, -1, EventOccurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEventOccurrence_TimeLabel(), thetdlPackage.getTimeLabel(), null, "timeLabel", null, 0, 1, EventOccurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(expectedBehaviourEClass, ExpectedBehaviour.class, "ExpectedBehaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getExpectedBehaviour_WhenClause(), this.getEventSequence(), null, "whenClause", null, 0, 1, ExpectedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getExpectedBehaviour_ThenClause(), this.getEventSequence(), null, "thenClause", null, 1, 1, ExpectedBehaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(finalConditionsEClass, FinalConditions.class, "FinalConditions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFinalConditions_Conditions(), this.getEventSequence(), null, "conditions", null, 1, 1, FinalConditions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(picsReferenceEClass, PICSReference.class, "PICSReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPICSReference_Pics(), this.getPICS(), null, "pics", null, 1, 1, PICSReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(picsEClass, org.etsi.mts.tdl.structuredobjectives.PICS.class, "PICS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(entityEClass, Entity.class, "Entity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

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

		initEClass(eventOccurrenceSpecificationEClass, EventOccurrenceSpecification.class, "EventOccurrenceSpecification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventOccurrenceSpecification_EntityReference(), this.getEntityReference(), null, "entityReference", null, 0, 1, EventOccurrenceSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEventOccurrenceSpecification_EventReference(), this.getEventReference(), null, "eventReference", null, 1, 1, EventOccurrenceSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEventOccurrenceSpecification_OppositeEntityReference(), this.getEntityReference(), null, "oppositeEntityReference", null, 0, -1, EventOccurrenceSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEventOccurrenceSpecification_EventArgument(), this.getValue(), null, "eventArgument", null, 0, 1, EventOccurrenceSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(entityReferenceEClass, EntityReference.class, "EntityReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEntityReference_Entity(), this.getEntity(), null, "entity", null, 0, 1, EntityReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEntityReference_Component(), thetdlPackage.getComponentInstance(), null, "component", null, 0, 1, EntityReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventReferenceEClass, EventReference.class, "EventReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventReference_Event(), this.getEvent(), null, "event", null, 1, 1, EventReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

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

		initEClass(eventArgumentEClass, EventArgument.class, "EventArgument", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(dataReferenceEClass, DataReference.class, "DataReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDataReference_Content(), thetdlPackage.getStaticDataUse(), null, "content", null, 1, 1, DataReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(contentEClass, Content.class, "Content", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getContent_Value(), this.getValue(), null, "value", null, 0, 1, Content.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getContent_Content(), this.getContent(), null, "content", null, 0, -1, Content.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getContent_Member(), thetdlPackage.getMember(), null, "member", null, 0, 1, Content.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(literalValueEClass, LiteralValue.class, "LiteralValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLiteralValue_Content(), this.getContent(), null, "content", null, 0, -1, LiteralValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getLiteralValue_DataType(), thetdlPackage.getDataType(), null, "dataType", null, 0, 1, LiteralValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(contentReferenceEClass, ContentReference.class, "ContentReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getContentReference_Content(), this.getContent(), null, "content", null, 1, 1, ContentReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(literalValueReferenceEClass, LiteralValueReference.class, "LiteralValueReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLiteralValueReference_Content(), this.getLiteralValue(), null, "content", null, 1, 1, LiteralValueReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(repeatedEventSequenceEClass, RepeatedEventSequence.class, "RepeatedEventSequence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getRepeatedEventSequence_Repetitions(), this.getValue(), null, "repetitions", null, 0, 1, RepeatedEventSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getRepeatedEventSequence_Interval(), this.getValue(), null, "interval", null, 0, 1, RepeatedEventSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventTemplateOccurrenceEClass, EventTemplateOccurrence.class, "EventTemplateOccurrence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventTemplateOccurrence_EventTemplate(), this.getEventSpecificationTemplate(), null, "eventTemplate", null, 1, 1, EventTemplateOccurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEventTemplateOccurrence_EntityBinding(), this.getEntityBinding(), null, "entityBinding", null, 0, -1, EventTemplateOccurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getEventTemplateOccurrence_OccurrenceArgument(), this.getValue(), null, "occurrenceArgument", null, 0, 1, EventTemplateOccurrence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventSpecificationTemplateEClass, EventSpecificationTemplate.class, "EventSpecificationTemplate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEventSpecificationTemplate_EventSpecification(), this.getEventOccurrenceSpecification(), null, "eventSpecification", null, 1, 1, EventSpecificationTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(entityBindingEClass, EntityBinding.class, "EntityBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEntityBinding_TemplateEntity(), this.getEntityReference(), null, "templateEntity", null, 1, 1, EntityBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEntityBinding_OccurrenceEntity(), this.getEntityReference(), null, "occurrenceEntity", null, 1, 1, EntityBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(variantsEClass, Variants.class, "Variants", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getVariants_Variants(), this.getTestObjectiveVariant(), null, "variants", null, 0, -1, Variants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(testObjectiveVariantEClass, TestObjectiveVariant.class, "TestObjectiveVariant", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTestObjectiveVariant_PicsReference(), this.getPICSReference(), null, "picsReference", null, 0, -1, TestObjectiveVariant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTestObjectiveVariant_Bindings(), this.getVariantBinding(), null, "bindings", null, 0, -1, TestObjectiveVariant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(variantBindingEClass, VariantBinding.class, "VariantBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getVariantBinding_Value(), this.getValue(), null, "value", null, 1, 1, VariantBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getVariantBinding_BoundTo(), this.getValue(), null, "boundTo", null, 1, 1, VariantBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http://www.eclipse.org/OCL/Import
		createImportAnnotations();
		// 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/OCL/Import</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createImportAnnotations()
	{
		String source = "http://www.eclipse.org/OCL/Import";
		addAnnotation
		  (this,
		   source,
		   new String[]
		   {
			   "tdl", "tdl.ecore#/"
		   });
	}

	/**
	 * 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__GetTestObjective(),
		   source,
		   new String[]
		   {
			   "body", "  \n            if (not self.container().oclIsUndefined()) then\n                if (self.container().oclIsKindOf(StructuredTestObjective)) then\n                    self.container().oclAsType(StructuredTestObjective)\n                else\n                    self.container().oclAsType(Element).getTestObjective()\n                endif\n            else \n                null\n            endif"
		   });
		addAnnotation
		  (getElement__Contains__Element(),
		   source,
		   new String[]
		   {
			   "body", "self->closure(oclContents())->includes(object)"
		   });
		addAnnotation
		  (getElement__GetNotes(),
		   source,
		   new String[]
		   {
			   "body", "self->closure(oclContents())->select(e | \n\te.oclIsKindOf(tdl::Comment) and not e.oclAsType(tdl::Comment).name.oclIsUndefined()\n).oclAsType(tdl::Comment)->asSet()"
		   });
		addAnnotation
		  (getStructuredTestObjective__IndexOf__Element(),
		   source,
		   new String[]
		   {
			   "body", "self->asOrderedSet()->closure(oclContents())->indexOf(object)"
		   });
	}

	/**
	 * 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
		  (getTestObjectiveVariant_Bindings(),
		   source,
		   new String[]
		   {
			   "nullFree", "false"
		   });
	}

} //StructuredObjectivesPackageImpl
