<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="structuredobjectives" nsURI="http://www.etsi.org/spec/TDL/1.3.1/structured"
    nsPrefix="structured">
  <eAnnotations source="http://www.eclipse.org/OCL/Import">
    <details key="tdl" value="tdl.ecore#/"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="Element" eSuperTypes="tdl.ecore#//Element">
    <eOperations name="getTestObjective" eType="#//StructuredTestObjective">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="  &#xA;            if (not self.container().oclIsUndefined()) then&#xA;                if (self.container().oclIsKindOf(StructuredTestObjective)) then&#xA;                    self.container().oclAsType(StructuredTestObjective)&#xA;                else&#xA;                    self.container().oclAsType(Element).getTestObjective()&#xA;                endif&#xA;            else &#xA;                null&#xA;            endif"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="contains" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="self->closure(oclContents())->includes(object)"/>
      </eAnnotations>
      <eParameters name="object" eType="#//Element"/>
    </eOperations>
    <eOperations name="getNotes" ordered="false" upperBound="-1" eType="ecore:EClass tdl.ecore#//Comment">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="self->closure(oclContents())->select(e | &#xA;&#x9;e.oclIsKindOf(tdl::Comment) and not e.oclAsType(tdl::Comment).name.oclIsUndefined()&#xA;).oclAsType(tdl::Comment)->asSet()"/>
      </eAnnotations>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="StructuredTestObjective" eSuperTypes="tdl.ecore#//TestObjective #//Element">
    <eOperations name="indexOf" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="self->asOrderedSet()->closure(oclContents())->indexOf(object)"/>
      </eAnnotations>
      <eParameters name="object" eType="#//Element"/>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" eType="ecore:EClass tdl.ecore#//TestConfiguration"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="initialConditions" eType="#//InitialConditions"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="expectedBehaviour" eType="#//ExpectedBehaviour"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="finalConditions" eType="#//FinalConditions"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="picsReference" upperBound="-1"
        eType="#//PICSReference" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="variants" eType="#//Variants"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="InitialConditions" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="conditions" lowerBound="1"
        eType="#//EventSequence" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EventSequence" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
        eType="#//EventOccurrence" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EventOccurrence" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="timeConstraint" upperBound="-1"
        eType="ecore:EClass tdl.ecore#//TimeConstraint" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" eType="ecore:EClass tdl.ecore#//TimeLabel"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ExpectedBehaviour" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="whenClause" eType="#//EventSequence"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="thenClause" lowerBound="1"
        eType="#//EventSequence" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="FinalConditions" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="conditions" lowerBound="1"
        eType="#//EventSequence" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PICSReference" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="pics" lowerBound="1" eType="#//PICS"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PICS" eSuperTypes="tdl.ecore#//PackageableElement #//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="Entity" eSuperTypes="tdl.ecore#//PackageableElement #//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="tdl.ecore#//PackageableElement #//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="EventOccurrenceSpecification" eSuperTypes="#//EventOccurrence #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="entityReference" eType="#//EntityReference"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="eventReference" lowerBound="1"
        eType="#//EventReference" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="oppositeEntityReference"
        upperBound="-1" eType="#//EntityReference" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="eventArgument" eType="#//Value"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EntityReference" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="entity" eType="#//Entity"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="ecore:EClass tdl.ecore#//ComponentInstance"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EventReference" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1" eType="#//Event"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Value" abstract="true" eSuperTypes="#//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="EventArgument" eSuperTypes="#//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="DataReference" eSuperTypes="#//Value #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" lowerBound="1"
        eType="ecore:EClass tdl.ecore#//StaticDataUse" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Content" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Value"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" ordered="false"
        upperBound="-1" eType="#//Content" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="member" eType="ecore:EClass tdl.ecore#//Member"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="LiteralValue" eSuperTypes="#//Value #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" ordered="false"
        upperBound="-1" eType="#//Content" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="ecore:EClass tdl.ecore#//DataType"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ContentReference" eSuperTypes="#//Value #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" lowerBound="1"
        eType="#//Content"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="LiteralValueReference" eSuperTypes="#//Value #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" lowerBound="1"
        eType="#//LiteralValue"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RepeatedEventSequence" eSuperTypes="#//EventSequence #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="repetitions" eType="#//Value"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="interval" eType="#//Value"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EventTemplateOccurrence" eSuperTypes="#//EventOccurrence #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="eventTemplate" lowerBound="1"
        eType="#//EventSpecificationTemplate"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="entityBinding" ordered="false"
        upperBound="-1" eType="#//EntityBinding" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrenceArgument" eType="#//Value"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EventSpecificationTemplate" eSuperTypes="tdl.ecore#//PackageableElement #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="eventSpecification" lowerBound="1"
        eType="#//EventOccurrenceSpecification" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EntityBinding" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="templateEntity" lowerBound="1"
        eType="#//EntityReference" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrenceEntity" lowerBound="1"
        eType="#//EntityReference" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Variants" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="variants" upperBound="-1"
        eType="#//TestObjectiveVariant" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="TestObjectiveVariant" eSuperTypes="tdl.ecore#//TestObjective #//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="picsReference" upperBound="-1"
        eType="#//PICSReference" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
        eType="#//VariantBinding" containment="true">
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="VariantBinding" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//Value"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="boundTo" lowerBound="1"
        eType="#//Value" containment="true"/>
  </eClassifiers>
</ecore:EPackage>
