Newer
Older
<?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="tdl" nsURI="http://www.etsi.org/spec/TDL/1.4.1" nsPrefix="tdl">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
<eOperations name="container" eType="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.oclContainer().oclIsUndefined()) then
				self.oclContainer().oclAsType(Element)
			else 
				null
			endif"/>
</eAnnotations>
</eOperations>
<eOperations name="getParentTestDescription" eType="#//TestDescription">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="	
			if (not self.container().oclIsUndefined()) then
				if (self.container().oclIsKindOf(TestDescription)) then
					self.container().oclAsType(TestDescription)
				else
					self.container().getParentTestDescription()
				endif
			else 
				null
			endif"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="comment" upperBound="-1"
eType="#//Comment" containment="true" eOpposite="#//Comment/commentedElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotation" upperBound="-1"
eType="#//Annotation" containment="true" eOpposite="#//Annotation/annotatedElement"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="commentedElement" lowerBound="1"
eType="#//Element" eOpposite="#//Element/comment"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Annotation" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="key" lowerBound="1" eType="#//AnnotationType"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" lowerBound="1"
eType="#//Element" eOpposite="#//Element/annotation"/>
<eClassifiers xsi:type="ecore:EClass" name="AnnotationType" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
eSuperTypes="#//NamedElement">
<eOperations name="conformsTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (self.oclIsKindOf(AnnotationType)) then
				self.oclAsType(AnnotationType).extension.extending(e)
			else
				if (self.oclIsKindOf(ComponentType)) then
					self.oclAsType(AnnotationType).extension.extending(e)
				else
					if (self.oclIsKindOf(GateType)) then
						self.oclAsType(GateType).extension.extending(e)
					else
						if (self.oclIsKindOf(GateType)) then
							self.oclAsType(StructuredDataType).extension.extending(e)
						else
							false
						endif
					endif
				endif
			endif
			"/>
</eAnnotations>
<eParameters name="e" eType="#//PackageableElement"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" changeable="false"
volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="derivation" value="
 if (self.name.oclIsUndefined()) then
 ''
 else
 if (not self.oclContainer().oclIsUndefined()) then
 if (self.oclContainer().oclIsKindOf(NamedElement)) then
 self.oclContainer().oclAsType(NamedElement).qualifiedName + '::' + self.name
 else
 self.oclContainer().oclAsType(ocl::OclElement)->closure(oclContainer())
 ->select(c | c.oclIsKindOf(NamedElement))
 ->asOrderedSet()
 ->first().oclAsType(NamedElement).qualifiedName + '::' + self.name
 endif
 else
 self.name
 endif
 endif"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="import" ordered="false"
upperBound="-1" eType="#//ElementImport" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
upperBound="-1" eType="#//Package" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestObjective" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="objectiveURI" ordered="false"
unique="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataInstance" abstract="true" eSuperTypes="#//MappableDataElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappableDataElement" abstract="true"
eSuperTypes="#//PackageableElement"/>
<eClassifiers xsi:type="ecore:EClass" name="DataType" abstract="true" eSuperTypes="#//MappableDataElement"/>
<eClassifiers xsi:type="ecore:EClass" name="DataResourceMapping" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataElementMapping" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="mappableDataElement" lowerBound="1"
eType="#//MappableDataElement"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="elementURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="dataResourceMapping" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterMapping" ordered="false"
upperBound="-1" eType="#//ParameterMapping" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterMapping" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
Martti Käärik
committed
<eClassifiers xsi:type="ecore:EClass" name="Parameter" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="SimpleDataType" eSuperTypes="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="SimpleDataInstance" eSuperTypes="#//DataInstance"/>
<eClassifiers xsi:type="ecore:EClass" name="StructuredDataType" eSuperTypes="#//DataType">
<eOperations name="allMembers" upperBound="-1" eType="#//Member">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.extension.oclIsUndefined()) then
 self.extension.extending.oclAsType(StructuredDataType).allMembers()->union(self.member)->asOrderedSet()
			else 
				self.member
			endif
			"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" upperBound="-1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Member" eSuperTypes="#//Parameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOptional" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuredDataInstance" eSuperTypes="#//DataInstance">
<eStructuralFeatures xsi:type="ecore:EReference" name="memberAssignment" upperBound="-1"
eType="#//MemberAssignment" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="unassignedMember" eType="#//UnassignedMemberTreatment"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MemberAssignment" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="member" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="memberSpec" lowerBound="1"
eType="#//StaticDataUse" containment="true"/>
<eClassifiers xsi:type="ecore:EClass" name="StaticDataUse" abstract="true" eSuperTypes="#//DataUse"/>
<eClassifiers xsi:type="ecore:EClass" name="DataUse" abstract="true" eSuperTypes="#//Element">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="null"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
eType="#//ParameterBinding" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="reduction" upperBound="-1"
eType="#//MemberReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterBinding" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="dataUse" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="UnassignedMemberTreatment">
<eLiterals name="AnyValue"/>
<eLiterals name="AnyValueOrOmit" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//MappableDataElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameter" upperBound="-1"
eType="#//FormalParameter" containment="true"/>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameter" eSuperTypes="#//Parameter"/>
<eClassifiers xsi:type="ecore:EClass" name="Function" eSuperTypes="#//Action">
<eStructuralFeatures xsi:type="ecore:EReference" name="returnType" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterUse" eSuperTypes="#//DynamicDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self.parameter.dataType"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="DynamicDataUse" abstract="true" eSuperTypes="#//DataUse"/>
<eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionCall" eSuperTypes="#//DynamicDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self.function.returnType"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="VariableUse" eSuperTypes="#//DynamicDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self.variable.dataType"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComponentInstance" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//ComponentType"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="role" lowerBound="1" eType="#//ComponentInstanceRole"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComponentType" eSuperTypes="#//PackageableElement">
<eOperations name="allGates" upperBound="-1" eType="#//GateInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.extension.oclIsUndefined()) then
 self.extension.extending.oclAsType(ComponentType).allGates()->union(self.gateInstance)->asOrderedSet()
			else 
				self.gateInstance
			endif
			"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eOperations name="allTimers" upperBound="-1" eType="#//Timer">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.extension.oclIsUndefined()) then
 self.extension.extending.oclAsType(ComponentType).allTimers()->union(self.timer)->asOrderedSet()
			else 
				self.timer
			endif
			"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eOperations name="allVariables" upperBound="-1" eType="#//Variable">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.extension.oclIsUndefined()) then
 self.extension.extending.oclAsType(ComponentType).allVariables()->union(self.variable)->asOrderedSet()
			else 
				self.variable
			endif
			"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="gateInstance" lowerBound="1"
upperBound="-1" eType="#//GateInstance" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="timer" upperBound="-1"
eType="#//Timer" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" upperBound="-1"
eType="#//Variable" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GateInstance" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//GateType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GateType" eSuperTypes="#//PackageableElement">
<eOperations name="allDataTypes" upperBound="-1" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
			if (not self.extension.oclIsUndefined()) then
 self.extension.extending.oclAsType(GateType).allDataTypes()->union(self.dataType)->asOrderedSet()
			else 
				self.dataType
			endif
			"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
upperBound="-1" eType="#//DataType"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//GateTypeKind"
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
containment="true"/>
<eClassifiers xsi:type="ecore:EClass" name="Timer" eSuperTypes="#//NamedElement"/>
<eClassifiers xsi:type="ecore:EEnum" name="ComponentInstanceRole">
<eLiterals name="SUT"/>
<eLiterals name="Tester" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OmitValue" eSuperTypes="#//SpecialValueUse"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecialValueUse" abstract="true" eSuperTypes="#//StaticDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if (self.container().oclIsTypeOf(MemberAssignment)) then
						self.container().oclAsType(MemberAssignment).member.dataType
					else 
						if (self.container().oclIsTypeOf(ParameterBinding)) then
							self.container().oclAsType(ParameterBinding).parameter.dataType
						else 
							if (self.container().oclIsTypeOf(Interaction) and 
								self.oclIsTypeOf(AnyValue)) then
								self.oclAsType(AnyValue).dataType
							else
								null
							endif
						endif
					endif
				"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnyValue" eSuperTypes="#//SpecialValueUse">
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="AnyValueOrOmit" eSuperTypes="#//SpecialValueUse"/>
<eClassifiers xsi:type="ecore:EClass" name="DataInstanceUse" eSuperTypes="#//StaticDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
				if (not self.dataInstance.oclIsUndefined()) then
					self.dataInstance.dataType
				else 
					if (not self.dataType.oclIsUndefined()) then
						self.dataType
					else 
						if (self.container().oclIsTypeOf(MemberAssignment)) then
							self.container().oclAsType(MemberAssignment).member.dataType
						else 
							if (self.container().oclIsTypeOf(ParameterBinding)) then
								self.container().oclAsType(ParameterBinding).parameter.dataType
							else
								null
							endif
						endif
					endif
				endif
				"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="dataInstance" eType="#//DataInstance"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="unassignedMember" eType="#//UnassignedMemberTreatment"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="Time" eSuperTypes="#//SimpleDataType"/>
<eClassifiers xsi:type="ecore:EClass" name="TimeLabel" eSuperTypes="#//NamedElement"/>
<eClassifiers xsi:type="ecore:EClass" name="TimerOperation" abstract="true" eSuperTypes="#//AtomicBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						OrderedSet { self.componentInstance }
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="timer" lowerBound="1" eType="#//Timer"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AtomicBehaviour" abstract="true" eSuperTypes="#//Behaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then
						self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()
					 else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="timeConstraint" ordered="false"
upperBound="-1" eType="#//TimeConstraint" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" eType="#//TimeLabel"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Behaviour" abstract="true" eSuperTypes="#//Element">
<eOperations name="isTesterInputEvent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
				if (self.oclIsKindOf(TimeOut) or 
					self.oclIsKindOf(Quiescence) or
					(self.oclIsKindOf(Interaction) and
						self.oclAsType(Interaction).sourceGate.component.role = ComponentInstanceRole::SUT and
					self.oclAsType(Interaction).target->exists(t | t.targetGate.component.role = ComponentInstanceRole::Tester)
					)
				) then
					true
				else
					false
				endif"/>
</eAnnotations>
</eOperations>
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						OrderedSet{}
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="testObjective" ordered="false"
upperBound="-1" eType="#//TestObjective"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeConstraint" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="timeConstraintExpression"
lowerBound="1" eType="#//DataUse" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimerStart" eSuperTypes="#//TimerOperation">
<eStructuralFeatures xsi:type="ecore:EReference" name="period" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="TimerStop" eSuperTypes="#//TimerOperation"/>
<eClassifiers xsi:type="ecore:EClass" name="TimeOut" eSuperTypes="#//TimerOperation"/>
<eClassifiers xsi:type="ecore:EClass" name="TimeOperation" abstract="true" eSuperTypes="#//AtomicBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (
						if not self.componentInstance.oclIsUndefined() then
							OrderedSet { self.componentInstance }
						else
							self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()
						endif
					 ) else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" eType="#//ComponentInstance"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="period" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="Wait" eSuperTypes="#//TimeOperation"/>
<eClassifiers xsi:type="ecore:EClass" name="Quiescence" eSuperTypes="#//TimeOperation">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (
						if not self.componentInstance.oclIsUndefined() or not self.gateReference.oclIsUndefined() then
							self.componentInstance->including(self.gateReference.component)->asOrderedSet()
						else
							self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()
						endif
					 ) else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="gateReference" eType="#//GateReference"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GateReference" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="component" lowerBound="1"
eType="#//ComponentInstance"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="gate" lowerBound="1" eType="#//GateInstance"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeLabelUse" eSuperTypes="#//DynamicDataUse">
<eOperations name="resolveDataType" eType="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="Time.allInstances()->asOrderedSet()->first()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//TimeLabelUseKind"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestConfiguration" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" ordered="false"
lowerBound="2" upperBound="-1" eType="#//ComponentInstance" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Connection" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Connection" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="endPoint" ordered="false"
lowerBound="2" upperBound="2" eType="#//GateReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestDescription" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="testConfiguration" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameter" upperBound="-1"
eType="#//FormalParameter" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="behaviourDescription" eType="#//BehaviourDescription"
<eStructuralFeatures xsi:type="ecore:EReference" name="testObjective" ordered="false"
upperBound="-1" eType="#//TestObjective"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isLocallyOrdered" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehaviourDescription" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="behaviour" lowerBound="1"
eType="#//Behaviour" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="#//Element">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.behaviour.getParticipatingComponents()->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eOperations name="getParticipatingComponentsExcluding" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.behaviour->excluding(excluded).getParticipatingComponents()->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
<eParameters name="excluded" eType="#//Behaviour"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="behaviour" lowerBound="1"
upperBound="-1" eType="#//Behaviour" containment="true"/>
Martti Käärik
committed
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" upperBound="-1"
eType="#//LocalExpression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CombinedBehaviour" abstract="true" eSuperTypes="#//Behaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="periodic" upperBound="-1"
eType="#//PeriodicBehaviour" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptional" upperBound="-1"
eType="#//ExceptionalBehaviour" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PeriodicBehaviour" eSuperTypes="#//Behaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.block.getParticipatingComponents()->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="block" lowerBound="1" eType="#//Block"
<eStructuralFeatures xsi:type="ecore:EReference" name="period" lowerBound="1"
upperBound="-1" eType="#//LocalExpression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExceptionalBehaviour" abstract="true"
eSuperTypes="#//Behaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.block.getParticipatingComponents()->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="block" lowerBound="1" eType="#//Block"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="guardedComponent" eType="#//ComponentInstance"/>
<eClassifiers xsi:type="ecore:EClass" name="AlternativeBehaviour" eSuperTypes="#//MultipleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="MultipleCombinedBehaviour" abstract="true"
eSuperTypes="#//CombinedBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.periodic.getParticipatingComponents()
						->union(self.exceptional.getParticipatingComponents())
						->union(self.block.getParticipatingComponents())->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="block" lowerBound="1" upperBound="-1"
<eClassifiers xsi:type="ecore:EClass" name="ParallelBehaviour" eSuperTypes="#//MultipleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="BoundedLoopBehaviour" eSuperTypes="#//SingleCombinedBehaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="numIteration" lowerBound="1"
upperBound="-1" eType="#//LocalExpression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SingleCombinedBehaviour" abstract="true"
eSuperTypes="#//CombinedBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.periodic.getParticipatingComponents()
						->union(self.exceptional.getParticipatingComponents())
						->union(self.block.getParticipatingComponents())->asOrderedSet()
					else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="block" lowerBound="1" eType="#//Block"
<eClassifiers xsi:type="ecore:EClass" name="OptionalBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="UnboundedLoopBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalBehaviour" eSuperTypes="#//MultipleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="CompoundBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="DefaultBehaviour" eSuperTypes="#//ExceptionalBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="InterruptBehaviour" eSuperTypes="#//ExceptionalBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="Target" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="targetGate" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="valueAssignment" upperBound="-1"
eType="#//ValueAssignment" containment="true">
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VerdictAssignment" eSuperTypes="#//AtomicBehaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="verdict" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="Assertion" eSuperTypes="#//ActionBehaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="otherwise" eType="#//DataUse"
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//AtomicBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="Break" eSuperTypes="#//AtomicBehaviour"/>
<eClassifiers xsi:type="ecore:EClass" name="Assignment" eSuperTypes="#//ActionBehaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
eType="#//VariableUse" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActionBehaviour" abstract="true" eSuperTypes="#//AtomicBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and self.container().oclIsKindOf(Block) then (
						if not self.componentInstance.oclIsUndefined() then
							OrderedSet { self.componentInstance }
						else
							self.container().oclAsType(Block).getParticipatingComponentsExcluding(self)->asOrderedSet()
						endif
					 ) else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" eType="#//ComponentInstance"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InlineAction" eSuperTypes="#//ActionBehaviour">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActionReference" eSuperTypes="#//ActionBehaviour">
<eStructuralFeatures xsi:type="ecore:EReference" name="action" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParameter" upperBound="-1"
eType="#//ParameterBinding" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestDescriptionReference" eSuperTypes="#//AtomicBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) and not self.componentInstanceBinding->isEmpty() then
						self.componentInstanceBinding.actualComponent->asOrderedSet()
					 else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="testDescription" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="componentInstanceBinding"
ordered="false" upperBound="-1" eType="#//ComponentInstanceBinding" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParameter" upperBound="-1"
eType="#//ParameterBinding" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComponentInstanceBinding" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="formalComponent" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="actualComponent" lowerBound="1"
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//AtomicBehaviour">
<eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
					if self.getParentTestDescription()->exists(td | td.isLocallyOrdered) then
						self.target
						->collect(targetGate.component)
						->including(sourceGate.component)
						->asOrderedSet()
					 else
						self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()
					endif
				"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="sourceGate" lowerBound="1"
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Target" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//Interaction">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isTrigger" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" lowerBound="1"
<eClassifiers xsi:type="ecore:EClass" name="PredefinedFunction" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//DataType"/>
Martti Käärik
committed
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MemberReference" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="member" eType="#//Member"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="collectionIndex" eType="#//DataUse"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PredefinedFunctionCall" eSuperTypes="#//DynamicDataUse">
<eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1"
eType="#//PredefinedFunction"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParameters" upperBound="-1"
eType="#//DataUse" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LocalExpression" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1"
eType="#//DataUse" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//ComponentInstance"/>
</eClassifiers>
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
<eClassifiers xsi:type="ecore:EEnum" name="GateTypeKind">
<eLiterals name="Message"/>
<eLiterals name="Procedure" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="TimeLabelUseKind">
<eLiterals name="Last"/>
<eLiterals name="Previous" value="1"/>
<eLiterals name="First" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueAssignment" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
eType="#//Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="#//Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProcedureCall" eSuperTypes="#//Interaction">
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" lowerBound="1"
eType="#//ProcedureSignature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" lowerBound="1"
upperBound="-1" eType="#//ParameterBinding" containment="true">
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyTo" eType="#//ProcedureCall"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProcedureSignature" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
upperBound="-1" eType="#//ProcedureParameter" containment="true">
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProcedureParameter" eSuperTypes="#//Parameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//ParameterKind"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ParameterKind">
<eLiterals name="In"/>
<eLiterals name="Out" value="1"/>
<eLiterals name="Exception" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionDataType" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="itemType" lowerBound="1"
eType="#//DataType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionDataInstance" eSuperTypes="#//DataInstance">
<eStructuralFeatures xsi:type="ecore:EReference" name="item" upperBound="-1" eType="#//StaticDataUse"
containment="true">
<eAnnotations source="http://www.eclipse.org/OCL/Collection">
<details key="nullFree" value="false"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Element">
<eOperations name="transitiveExtending" eType="#//Extension">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
				if (self.extending.oclIsKindOf(AnnotationType)) then
					self.extending.oclAsType(AnnotationType).extension
				else
					if (self.extending.oclIsKindOf(ComponentType)) then
						self.extending.oclAsType(AnnotationType).extension
					else
						if (self.extending.oclIsKindOf(GateType)) then
							self.extending.oclAsType(GateType).extension
						else
							if (self.extending.oclIsKindOf(GateType)) then
								self.extending.oclAsType(StructuredDataType).extension
							else
								null
							endif
						endif
					endif
				endif
				"/>
</eAnnotations>
</eOperations>
<eOperations name="extending" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="
				if (self.extending = e) then
				 true
				else
					if (self->closure(transitiveExtending())->includes(e)) then
						true
	 	else
	 		false
	 	endif 
				endif
				"/>
</eAnnotations>
<eParameters name="e" eType="#//PackageableElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extending" lowerBound="1"
eType="#//PackageableElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralValueUse" eSuperTypes="#//StaticDataUse">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
</eClassifiers>