blob: accd56b2eb39e66d08f3da9924093f38dbcd877d [file] [log] [blame]
<?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="UML" nsURI="http://www.omg.org/spec/UML/20131001" nsPrefix="UML">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
<details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Boolean is used for logical expressions, consisting of the predefined values true and false.&#xA;A Boolean type is used for logical expression, consisting of the predefined values true and false.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="BooleanObject" instanceClassName="java.lang.Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Boolean is used for logical expressions, consisting of the predefined values true and false.&#xA;A Boolean type is used for logical expression, consisting of the predefined values true and false.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Integer is a primitive type representing integer values.&#xA;An integer is a primitive type representing integer values.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="IntegerObject" instanceClassName="java.lang.Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Integer is a primitive type representing integer values.&#xA;An integer is a primitive type representing integer values.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="Real" instanceClassName="double">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Real is a primitive type representing the mathematical concept of real.&#xA;A real is a primitive type representing the mathematical concept of real.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="RealObject" instanceClassName="java.lang.Double">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Real is a primitive type representing the mathematical concept of real.&#xA;A real is a primitive type representing the mathematical concept of real.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="String is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.&#xA;A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="UnlimitedNatural is a primitive type representing unlimited natural values.&#xA;An unlimited natural is a primitive type representing unlimited natural values.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNaturalObject" instanceClassName="java.lang.Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="UnlimitedNatural is a primitive type representing unlimited natural values.&#xA;An unlimited natural is a primitive type representing unlimited natural values.&#xA;&lt;p>From package PrimitiveTypes.&lt;/p>&#xA;&lt;p>From package Types.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="AggregationKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="AggregationKind is an Enumeration for specifying the kind of aggregation of a Property.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eLiterals name="none">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the Property has no aggregation."/>
</eAnnotations>
</eLiterals>
<eLiterals name="shared" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the Property has shared aggregation."/>
</eAnnotations>
</eLiterals>
<eLiterals name="composite" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the Property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts)."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="CallConcurrencyKind is an Enumeration used to specify the semantics of concurrent calls to a BehavioralFeature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eLiterals name="sequential">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="No concurrency management mechanism is associated with the BehavioralFeature and, therefore, concurrency conflicts may occur. Instances that invoke a BehavioralFeature need to coordinate so that only one invocation to a target on any BehavioralFeature occurs at once."/>
</eAnnotations>
</eLiterals>
<eLiterals name="guarded" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance, but only one is allowed to commence. The others are blocked until the performance of the currently executing BehavioralFeature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocking."/>
</eAnnotations>
</eLiterals>
<eLiterals name="concurrent" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance and all of them may proceed concurrently."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ConnectorKind is an enumeration that defines whether a Connector is an assembly or a delegation.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eLiterals name="assembly">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the Connector is an assembly Connector."/>
</eAnnotations>
</eLiterals>
<eLiterals name="delegation" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the Connector is a delegation Connector."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ExpansionKind is an enumeration type used to specify how an ExpansionRegion executes its contents.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eLiterals name="parallel">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The content of the ExpansionRegion is executed concurrently for the elements of the input collections."/>
</eAnnotations>
</eLiterals>
<eLiterals name="iterative" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The content of the ExpansionRegion is executed iteratively for the elements of the input collections, in the order of the input elements, if the collections are ordered."/>
</eAnnotations>
</eLiterals>
<eLiterals name="stream" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A stream of input collection elements flows into a single execution of the content of the ExpansionRegion, in the order of the collection elements if the input collections are ordered."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="InteractionOperatorKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InteractionOperatorKind is an enumeration designating the different kinds of operators of CombinedFragments. The InteractionOperand defines the type of operator of a CombinedFragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eLiterals name="seq">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands."/>
</eAnnotations>
</eLiterals>
<eLiterals name="alt" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard."/>
</eAnnotations>
</eLiterals>
<eLiterals name="opt" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty."/>
</eAnnotations>
</eLiterals>
<eLiterals name="break" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically."/>
</eAnnotations>
</eLiterals>
<eLiterals name="par" value="4">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved."/>
</eAnnotations>
</eLiterals>
<eLiterals name="strict" value="5">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment."/>
</eAnnotations>
</eLiterals>
<eLiterals name="loop" value="6">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times."/>
</eAnnotations>
</eLiterals>
<eLiterals name="critical" value="7">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as with par-operator, this is prevented by defining a region."/>
</eAnnotations>
</eLiterals>
<eLiterals name="neg" value="8">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind neg designates that the CombinedFragment represents traces that are defined to be invalid."/>
</eAnnotations>
</eLiterals>
<eLiterals name="assert" value="9">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace."/>
</eAnnotations>
</eLiterals>
<eLiterals name="ignore" value="10">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces."/>
</eAnnotations>
</eLiterals>
<eLiterals name="consider" value="11">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InteractionOperatorKind consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This is an enumerated type that identifies the type of Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eLiterals name="complete">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="sendEvent and receiveEvent are present"/>
</eAnnotations>
</eLiterals>
<eLiterals name="lost" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="sendEvent present and receiveEvent absent"/>
</eAnnotations>
</eLiterals>
<eLiterals name="found" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="sendEvent absent and receiveEvent present"/>
</eAnnotations>
</eLiterals>
<eLiterals name="unknown" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="sendEvent and receiveEvent absent (should not appear)"/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This is an enumerated type that identifies the type of communication action that was used to generate the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eLiterals name="synchCall">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message was generated by a synchronous call to an operation."/>
</eAnnotations>
</eLiterals>
<eLiterals name="asynchCall" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous = false."/>
</eAnnotations>
</eLiterals>
<eLiterals name="asynchSignal" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message was generated by an asynchronous send action."/>
</eAnnotations>
</eLiterals>
<eLiterals name="createMessage" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message designating the creation of another lifeline object."/>
</eAnnotations>
</eLiterals>
<eLiterals name="deleteMessage" value="4">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message designating the termination of another lifeline."/>
</eAnnotations>
</eLiterals>
<eLiterals name="reply" value="5">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The message is a reply message to an operation call."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ObjectNodeOrderingKind is an enumeration indicating queuing order for offering the tokens held by an ObjectNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eLiterals name="unordered">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that tokens are unordered."/>
</eAnnotations>
</eLiterals>
<eLiterals name="ordered" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that tokens are ordered."/>
</eAnnotations>
</eLiterals>
<eLiterals name="LIFO" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that tokens are queued in a last in, first out manner."/>
</eAnnotations>
</eLiterals>
<eLiterals name="FIFO" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that tokens are queued in a first in, first out manner."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ParameterDirectionKind is an Enumeration that defines literals used to specify direction of parameters.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eLiterals name="in">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that Parameter values are passed in by the caller. "/>
</eAnnotations>
</eLiterals>
<eLiterals name="inout" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that Parameter values are passed in by the caller and (possibly different) values passed out to the caller."/>
</eAnnotations>
</eLiterals>
<eLiterals name="out" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that Parameter values are passed out to the caller."/>
</eAnnotations>
</eLiterals>
<eLiterals name="return" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that Parameter values are passed as return values back to the caller."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ParameterEffectKind is an Enumeration that indicates the effect of a Behavior on values passed in or out of its parameters.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eLiterals name="create">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that the behavior creates values."/>
</eAnnotations>
</eLiterals>
<eLiterals name="read" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classifiers retrieved during executions of the behavior."/>
</eAnnotations>
</eLiterals>
<eLiterals name="update" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classification changed during executions of the behavior."/>
</eAnnotations>
</eLiterals>
<eLiterals name="delete" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates objects that are values of the parameter do not exist after executions of the behavior are finished."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="PseudostateKind is an Enumeration type that is used to differentiate various kinds of Pseudostates.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eLiterals name="initial"/>
<eLiterals name="deepHistory" value="1"/>
<eLiterals name="shallowHistory" value="2"/>
<eLiterals name="join" value="3"/>
<eLiterals name="fork" value="4"/>
<eLiterals name="junction" value="5"/>
<eLiterals name="choice" value="6"/>
<eLiterals name="entryPoint" value="7"/>
<eLiterals name="exitPoint" value="8"/>
<eLiterals name="terminate" value="9"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="TransitionKind is an Enumeration type used to differentiate the various kinds of Transitions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eLiterals name="internal">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Implies that the Transition, if triggered, occurs without exiting or entering the source State (i.e., it does not cause a state change). This means that the entry or exit condition of the source State will not be invoked. An internal Transition can be taken even if the SateMachine is in one or more Regions nested within the associated State."/>
</eAnnotations>
</eLiterals>
<eLiterals name="local" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Implies that the Transition, if triggered, will not exit the composite (source) State, but it will exit and re-enter any state within the composite State that is in the current state configuration."/>
</eAnnotations>
</eLiterals>
<eLiterals name="external" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Implies that the Transition, if triggered, will exit the composite (source) State."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="VisibilityKind is an enumeration type that defines literals to determine the visibility of Elements in a model.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eLiterals name="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Named Element with public visibility is visible to all elements that can access the contents of the Namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="private" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A NamedElement with private visibility is only visible inside the Namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="protected" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A NamedElement with protected visibility is visible to Elements that have a generalization relationship to the Namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="package" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A NamedElement with package visibility is visible to all Elements within the nearest enclosing Package (given that other owning Elements have proper visibility). Outside the nearest enclosing Package, a NamedElement marked as having package visibility is not visible. Only NamedElements that are not owned by Packages can be marked as having package visibility. "/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Abstraction is a Relationship that relates two Elements or sets of Elements that represent the same concept at different levels of abstraction or from different viewpoints.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"
eType="#//OpaqueExpression" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="abstraction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OpaqueExpression that states the abstraction relationship between the supplier(s) and the client(s). In some cases, such as derivation, it is usually formal and unidirectional; in other cases, such as trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the Elements is not specified.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AcceptCallAction" eSuperTypes="#//AcceptEventAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="result_pins trigger_call_event unmarshall"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="result_pins" value="let parameter: OrderedSet(Parameter) = trigger.event->asSequence()->first().oclAsType(CallEvent).operation.inputParameters() in&#xD;&#xA;result->size() = parameter->size() and&#xD;&#xA;Sequence{1..result->size()}->forAll(i | &#xD;&#xA;&#x9;parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;&#xA;&#x9;parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;&#xA;&#x9;parameter->at(i).compatibleWith(result->at(i)))"/>
<details key="trigger_call_event" value="trigger->size()=1 and&#xD;&#xA;trigger->asSequence()->first().event.oclIsKindOf(CallEvent)&#xD;&#xA;"/>
<details key="unmarshall" value="isUnmarshall = true"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AcceptCallAction is an AcceptEventAction that handles the receipt of a synchronous call request. In addition to the values from the Operation input parameters, the Action produces an output that is needed later to supply the information to the ReplyAction necessary to return control to the caller. An AcceptCallAction is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent ReplyAction will complete immediately with no effect.&#xA;let parameter: OrderedSet(Parameter) = trigger.event->asSequence()->first().oclAsType(CallEvent).operation.inputParameters() in&#xA;result->size() = parameter->size() and&#xA;Sequence{1..result->size()}->forAll(i | &#xA;&#x9;parameter->at(i).type.conformsTo(result->at(i).type) and &#xA;&#x9;parameter->at(i).isOrdered = result->at(i).isOrdered and&#xA;&#x9;parameter->at(i).compatibleWith(result->at(i)))&#xA;trigger->size()=1 and&#xA;trigger->asSequence()->first().event.oclIsKindOf(CallEvent)&#xA;&#xA;isUnmarshall = true&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="acceptCallAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OutputPin where a value is placed containing sufficient information to perform a subsequent ReplyAction and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AcceptEventAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="one_output_pin no_input_pins no_output_pins unmarshall_signal_events conforming_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="one_output_pin" value="not isUnmarshall and trigger->exists(event.oclIsKindOf(SignalEvent) or event.oclIsKindOf(TimeEvent)) implies &#xD;&#xA;&#x9;output->size() = 1 and output->first().is(1,1)"/>
<details key="no_input_pins" value="input->size() = 0"/>
<details key="no_output_pins" value="(self.oclIsTypeOf(AcceptEventAction) and&#xD;&#xA; (trigger->forAll(event.oclIsKindOf(ChangeEvent) or &#xD;&#xA; event.oclIsKindOf(CallEvent))))&#xD;&#xA;implies output->size() = 0"/>
<details key="unmarshall_signal_events" value="isUnmarshall and self.oclIsTypeOf(AcceptEventAction) implies&#xD;&#xA;&#x9;trigger->size()=1 and&#xD;&#xA;&#x9;trigger->asSequence()->first().event.oclIsKindOf(SignalEvent) and&#xD;&#xA;&#x9;let attribute: OrderedSet(Property) = trigger->asSequence()->first().event.oclAsType(SignalEvent).signal.allAttributes() in&#xD;&#xA;&#x9;attribute->size()>0 and result->size() = attribute->size() and&#xD;&#xA;&#x9;Sequence{1..result->size()}->forAll(i | &#xD;&#xA;&#x9;&#x9;result->at(i).type = attribute->at(i).type and &#xD;&#xA;&#x9;&#x9;result->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;&#xA;&#x9;&#x9;result->at(i).includesMultiplicity(attribute->at(i)))"/>
<details key="conforming_type" value="not isUnmarshall implies &#xD;&#xA;&#x9;result->isEmpty() or&#xD;&#xA;&#x9;let type: Type = result->first().type in&#xD;&#xA;&#x9;type=null or &#xD;&#xA;&#x9;&#x9;(trigger->forAll(event.oclIsKindOf(SignalEvent)) and &#xD;&#xA;&#x9;&#x9; trigger.event.oclAsType(SignalEvent).signal->forAll(s | s.conformsTo(type)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AcceptEventAction is an Action that waits for the occurrence of one or more specific Events.&#xA;not isUnmarshall and trigger->exists(event.oclIsKindOf(SignalEvent) or event.oclIsKindOf(TimeEvent)) implies &#xA;&#x9;output->size() = 1 and output->first().is(1,1)&#xA;input->size() = 0&#xA;(self.oclIsTypeOf(AcceptEventAction) and&#xA; (trigger->forAll(event.oclIsKindOf(ChangeEvent) or &#xA; event.oclIsKindOf(CallEvent))))&#xA;implies output->size() = 0&#xA;isUnmarshall and self.oclIsTypeOf(AcceptEventAction) implies&#xA;&#x9;trigger->size()=1 and&#xA;&#x9;trigger->asSequence()->first().event.oclIsKindOf(SignalEvent) and&#xA;&#x9;let attribute: OrderedSet(Property) = trigger->asSequence()->first().event.oclAsType(SignalEvent).signal.allAttributes() in&#xA;&#x9;attribute->size()>0 and result->size() = attribute->size() and&#xA;&#x9;Sequence{1..result->size()}->forAll(i | &#xA;&#x9;&#x9;result->at(i).type = attribute->at(i).type and &#xA;&#x9;&#x9;result->at(i).isOrdered = attribute->at(i).isOrdered and&#xA;&#x9;&#x9;result->at(i).includesMultiplicity(attribute->at(i)))&#xA;not isUnmarshall implies &#xA;&#x9;result->isEmpty() or&#xA;&#x9;let type: Type = result->first().type in&#xA;&#x9;type=null or &#xA;&#x9;&#x9;(trigger->forAll(event.oclIsKindOf(SignalEvent)) and &#xA;&#x9;&#x9; trigger.event.oclAsType(SignalEvent).signal->forAll(s | s.conformsTo(type)))&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnmarshall" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether there is a single OutputPin for a SignalEvent occurrence, or multiple OutputPins for attribute values of the instance of the Signal associated with a SignalEvent occurrence.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="acceptEventAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="OutputPins holding the values received from an Event occurrence.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Trigger" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="acceptEventAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Triggers specifying the Events of which the AcceptEventAction waits for occurrences.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Action" abstract="true" eSuperTypes="#//ExecutableNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Action is the fundamental unit of executable functionality. The execution of an Action represents some transformation or processing in the modeled system. Actions provide the ExecutableNodes within Activities and may also be used within Interactions.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="allActions" ordered="false" upperBound="-1" eType="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return this Action and all Actions contained directly or indirectly in it. By default only the Action itself is returned, but the operation is overridden for StructuredActivityNodes.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allOwnedNodes" ordered="false" upperBound="-1" eType="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (input.oclAsType(Pin)->asSet()->union(output->asSet()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns all the ActivityNodes directly or indirectly owned by this Action. This includes at least all the Pins of the Action.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="containingBehavior" ordered="false" eType="#//Behavior">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if inStructuredNode&lt;>null then inStructuredNode.containingBehavior() &#xD;&#xA;else if activity&lt;>null then activity&#xD;&#xA;else interaction &#xD;&#xA;endif&#xD;&#xA;endif&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="context" ordered="false" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let behavior: Behavior = self.containingBehavior() in&#xD;&#xA;if behavior=null then null&#xD;&#xA;else if behavior._'context' = null then behavior&#xD;&#xA;else behavior._'context'&#xD;&#xA;endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The derivation for the context property.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="action"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The context Classifier of the Behavior that contains this Action, or the Behavior itself if it has no context.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="action"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of InputPins representing the inputs to the Action.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isLocallyReentrant" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Action can begin a new, concurrent execution, even if there is already another execution of the Action ongoing. If false, the Action cannot begin a new execution until any previous execution has completed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="action"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Constraint that must be satisfied when execution of the Action is completed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="action"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Constraint that must be satisfied when execution of the Action is started.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="action"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of OutputPins representing outputs from the Action.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActionExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="action_referenced"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="action_referenced" value="(enclosingInteraction->notEmpty() or enclosingOperand.combinedFragment->notEmpty()) and&#xD;&#xA;let parentInteraction : Set(Interaction) = enclosingInteraction.oclAsType(Interaction)->asSet()->union(&#xD;&#xA;enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;&#xA;(parentInteraction->size() = 1) and self.action.interaction->asSet() = parentInteraction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActionExecutionSpecification is a kind of ExecutionSpecification representing the execution of an Action.&#xA;(enclosingInteraction->notEmpty() or enclosingOperand.combinedFragment->notEmpty()) and&#xA;let parentInteraction : Set(Interaction) = enclosingInteraction.oclAsType(Interaction)->asSet()->union(&#xA;enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xA;(parentInteraction->size() = 1) and self.action.interaction->asSet() = parentInteraction&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
lowerBound="1" eType="#//Action">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="actionExecutionSpecification"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Action whose execution is occurring.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActionInputPin" eSuperTypes="#//InputPin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="input_pin one_output_pin no_control_or_object_flow"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="input_pin" value="fromAction.input->forAll(oclIsKindOf(ActionInputPin))"/>
<details key="one_output_pin" value="fromAction.output->size() = 1"/>
<details key="no_control_or_object_flow" value="fromAction.incoming->union(outgoing)->isEmpty() and&#xD;&#xA;fromAction.input.incoming->isEmpty() and&#xD;&#xA;fromAction.output.outgoing->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActionInputPin is a kind of InputPin that executes an Action to determine the values to input to another Action.&#xA;fromAction.input->forAll(oclIsKindOf(ActionInputPin))&#xA;fromAction.output->size() = 1&#xA;fromAction.incoming->union(outgoing)->isEmpty() and&#xA;fromAction.input.incoming->isEmpty() and&#xA;fromAction.output.outgoing->isEmpty()&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="fromAction" ordered="false"
lowerBound="1" eType="#//Action" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="actionInputPin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Action used to provide the values of the ActionInputPin.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//Behavior">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="maximum_one_parameter_node maximum_two_parameter_nodes"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="maximum_one_parameter_node" value="ownedParameter->forAll(p | &#xD;&#xA; p.direction &lt;> ParameterDirectionKind::inout implies node->select(&#xD;&#xA; oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p)->size()= 1)"/>
<details key="maximum_two_parameter_nodes" value="ownedParameter->forAll(p | &#xD;&#xA;p.direction = ParameterDirectionKind::inout implies&#xD;&#xA;let associatedNodes : Set(ActivityNode) = node->select(&#xD;&#xA; oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p) in &#xD;&#xA; associatedNodes->size()=2 and&#xD;&#xA; associatedNodes->select(incoming->notEmpty())->size()&lt;=1 and&#xD;&#xA; associatedNodes->select(outgoing->notEmpty())->size()&lt;=1&#xD;&#xA;)&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Activity is the specification of parameterized Behavior as the coordinated sequencing of subordinate units.&#xA;ownedParameter->forAll(p | &#xA; p.direction &lt;> ParameterDirectionKind::inout implies node->select(&#xA; oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p)->size()= 1)&#xA;ownedParameter->forAll(p | &#xA;p.direction = ParameterDirectionKind::inout implies&#xA;let associatedNodes : Set(ActivityNode) = node->select(&#xA; oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p) in &#xA; associatedNodes->size()=2 and&#xA; associatedNodes->select(incoming->notEmpty())->size()&lt;=1 and&#xA; associatedNodes->select(outgoing->notEmpty())->size()&lt;=1&#xA;)&#xA;&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/activity">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges expressing flow between the nodes of the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="group" ordered="false"
upperBound="-1" eType="#//ActivityGroup" containment="true" eOpposite="#//ActivityGroup/inActivity">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Top-level ActivityGroups in the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, this Activity must not make any changes to objects. The default is false (an Activity may make nonlocal changes). (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the Activity, then the model is ill-formed.) &#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSingleExecution" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, all invocations of the Activity are handled by the same execution.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/activity">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNodes coordinated by the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="partition" ordered="false"
upperBound="-1" eType="#//ActivityPartition">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Top-level ActivityPartitions in the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Activity/group"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
upperBound="-1" eType="#//StructuredActivityNode" volatile="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Top-level StructuredActivityNodes in the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Activity/group #//Activity/node"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/activityScope">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Top-level Variables defined by the Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefiningElement.oclIsKindOf(ActivityEdge))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="source_and_target"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="source_and_target" value="activity&lt;>null implies source.containingActivity() = activity and target.containingActivity() = activity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActivityEdge is an abstract class for directed connections between two ActivityNodes.&#xA;activity&lt;>null implies source.containingActivity() = activity and target.containingActivity() = activity&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
eType="#//Activity" eOpposite="#//Activity/edge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity containing the ActivityEdge, if it is directly owned by an Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityEdge"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification that is evaluated to determine if a token can traverse the ActivityEdge. If an ActivityEdge has no guard, then there is no restriction on tokens traversing the edge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//ActivityGroup/containedEdge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityGroups containing the ActivityEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/edge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityPartitions containing the ActivityEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityEdge/inGroup"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/edge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StructuredActivityNode containing the ActivityEdge, if it is owned by a StructuredActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityEdge/inGroup #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" ordered="false"
eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/interruptingEdge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InterruptibleActivityRegion for which this ActivityEdge is an interruptingEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedEdge" ordered="false"
upperBound="-1" eType="#//ActivityEdge">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityEdge"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges from a generalization of the Activity containing this ActivityEdge that are redefined by this ActivityEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityNode from which tokens are taken when they traverse the ActivityEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityNode to which tokens are put when they traverse the ActivityEdge.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityEdge"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The minimum number of tokens that must traverse the ActivityEdge at the same time. If no weight is specified, this is equivalent to specifying a constant value of 1.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActivityFinalNode is a FinalNode that terminates the execution of its owning Activity or StructuredActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="nodes_and_edges not_contained"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="nodes_and_edges" value="containedNode->forAll(activity = self.containingActivity()) and &#xD;&#xA;containedEdge->forAll(activity = self.containingActivity())"/>
<details key="not_contained" value="subgroup->closure(subgroup).containedNode->excludesAll(containedNode) and&#xD;&#xA;superGroup->closure(superGroup).containedNode->excludesAll(containedNode) and &#xD;&#xA;subgroup->closure(subgroup).containedEdge->excludesAll(containedEdge) and &#xD;&#xA;superGroup->closure(superGroup).containedEdge->excludesAll(containedEdge)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityGroup is an abstract class for defining sets of ActivityNodes and ActivityEdges in an Activity.&#xA;containedNode->forAll(activity = self.containingActivity()) and &#xA;containedEdge->forAll(activity = self.containingActivity())&#xA;subgroup->closure(subgroup).containedNode->excludesAll(containedNode) and&#xA;superGroup->closure(superGroup).containedNode->excludesAll(containedNode) and &#xA;subgroup->closure(subgroup).containedEdge->excludesAll(containedEdge) and &#xA;superGroup->closure(superGroup).containedEdge->excludesAll(containedEdge)&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eOperations name="containingActivity" ordered="false" eType="#//Activity">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if superGroup&lt;>null then superGroup.containingActivity()&#xD;&#xA;else inActivity&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity that directly or indirectly contains this ActivityGroup.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
upperBound="-1" eType="#//ActivityEdge" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//ActivityEdge/inGroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges immediately contained in the ActivityGroup.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
upperBound="-1" eType="#//ActivityNode" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//ActivityNode/inGroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNodes immediately contained in the ActivityGroup.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inActivity" ordered="false"
eType="#//Activity" eOpposite="#//Activity/group">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity containing the ActivityGroup, if it is directly owned by an Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//ActivityGroup/superGroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Other ActivityGroups immediately contained in this ActivityGroup.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
eType="#//ActivityGroup" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//ActivityGroup/subgroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityGroup immediately containing this ActivityGroup, if it is directly owned by another ActivityGroup.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefiningElement.oclIsKindOf(ActivityNode))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNode is an abstract class for points in the flow of an Activity connected by ActivityEdges.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eOperations name="ActivityNode_containingActivity" ordered="false" eType="#//Activity">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if inStructuredNode&lt;>null then inStructuredNode.containingActivity()&#xD;&#xA;else activity&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity that directly or indirectly contains this ActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ActivityGroup/containingActivity"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
eType="#//Activity" eOpposite="#//Activity/node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity containing the ActivityNode, if it is directly owned by an Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//ActivityGroup/containedNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityGroups containing the ActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InterruptibleActivityRegions containing the ActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityPartitions containing the ActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StructuredActivityNode containing the ActvityNode, if it is directly owned by a StructuredActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityNode/inGroup #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges that have the ActivityNode as their target.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges that have the ActivityNode as their source.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedNode" ordered="false"
upperBound="-1" eType="#//ActivityNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNodes from a generalization of the Activity containining this ActivityNode that are redefined by this ActivityNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_outgoing_edges has_parameters same_type no_incoming_edges no_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_outgoing_edges" value="(incoming->notEmpty() and outgoing->isEmpty()) implies &#xD;&#xA;&#x9;(parameter.direction = ParameterDirectionKind::out or &#xD;&#xA;&#x9; parameter.direction = ParameterDirectionKind::inout or &#xD;&#xA;&#x9; parameter.direction = ParameterDirectionKind::return)"/>
<details key="has_parameters" value="activity.ownedParameter->includes(parameter)"/>
<details key="same_type" value="type = parameter.type"/>
<details key="no_incoming_edges" value="(outgoing->notEmpty() and incoming->isEmpty()) implies &#xD;&#xA;&#x9;(parameter.direction = ParameterDirectionKind::_'in' or &#xD;&#xA;&#x9; parameter.direction = ParameterDirectionKind::inout)"/>
<details key="no_edges" value="incoming->isEmpty() or outgoing->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActivityParameterNode is an ObjectNode for accepting values from the input Parameters or providing values to the output Parameters of an Activity.&#xA;(incoming->notEmpty() and outgoing->isEmpty()) implies &#xA;&#x9;(parameter.direction = ParameterDirectionKind::out or &#xA;&#x9; parameter.direction = ParameterDirectionKind::inout or &#xA;&#x9; parameter.direction = ParameterDirectionKind::return)&#xA;activity.ownedParameter->includes(parameter)&#xA;type = parameter.type&#xA;(outgoing->notEmpty() and incoming->isEmpty()) implies &#xA;&#x9;(parameter.direction = ParameterDirectionKind::_'in' or &#xA;&#x9; parameter.direction = ParameterDirectionKind::inout)&#xA;incoming->isEmpty() or outgoing->isEmpty()&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
lowerBound="1" eType="#//Parameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityParameterNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Parameter for which the ActivityParameterNode will be accepting or providing values.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//ActivityGroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="represents_classifier represents_property_and_is_contained represents_property dimension_not_contained"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="represents_classifier" value="(not isExternal and represents.oclIsKindOf(Classifier) and superPartition->notEmpty()) implies&#xD;&#xA;(&#xD;&#xA; let representedClassifier : Classifier = represents.oclAsType(Classifier) in&#xD;&#xA; superPartition.represents.oclIsKindOf(Classifier) and&#xD;&#xA; let representedSuperClassifier : Classifier = superPartition.represents.oclAsType(Classifier) in&#xD;&#xA; (representedSuperClassifier.oclIsKindOf(BehavioredClassifier) and representedClassifier.oclIsKindOf(Behavior) and &#xD;&#xA; representedSuperClassifier.oclAsType(BehavioredClassifier).ownedBehavior->includes(representedClassifier.oclAsType(Behavior))) &#xD;&#xA; or&#xD;&#xA; (representedSuperClassifier.oclIsKindOf(Class) and representedSuperClassifier.oclAsType(Class).nestedClassifier->includes(representedClassifier))&#xD;&#xA; or&#xD;&#xA; (Association.allInstances()->exists(a | a.memberEnd->exists(end1 | end1.isComposite and end1.type = representedClassifier and &#xD;&#xA; a.memberEnd->exists(end2 | end1&lt;>end2 and end2.type = representedSuperClassifier))))&#xD;&#xA;)"/>
<details key="represents_property_and_is_contained" value="(represents.oclIsKindOf(Property) and superPartition->notEmpty()) implies&#xD;&#xA;(&#xD;&#xA; (superPartition.represents.oclIsKindOf(Classifier) and represents.owner = superPartition.represents) or &#xD;&#xA; (superPartition.represents.oclIsKindOf(Property) and represents.owner = superPartition.represents.oclAsType(Property).type)&#xD;&#xA;)"/>
<details key="represents_property" value="(represents.oclIsKindOf(Property) and superPartition->notEmpty() and superPartition.represents.oclIsKindOf(Classifier)) implies&#xD;&#xA;(&#xD;&#xA; let representedClassifier : Classifier = superPartition.represents.oclAsType(Classifier)&#xD;&#xA; in&#xD;&#xA; superPartition.subpartition->reject(isExternal)->forAll(p | &#xD;&#xA; p.represents.oclIsKindOf(Property) and p.owner=representedClassifier)&#xD;&#xA;)"/>
<details key="dimension_not_contained" value="isDimension implies superPartition->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ActivityPartition is a kind of ActivityGroup for identifying ActivityNodes that have some characteristic in common.&#xA;(not isExternal and represents.oclIsKindOf(Classifier) and superPartition->notEmpty()) implies&#xA;(&#xA; let representedClassifier : Classifier = represents.oclAsType(Classifier) in&#xA; superPartition.represents.oclIsKindOf(Classifier) and&#xA; let representedSuperClassifier : Classifier = superPartition.represents.oclAsType(Classifier) in&#xA; (representedSuperClassifier.oclIsKindOf(BehavioredClassifier) and representedClassifier.oclIsKindOf(Behavior) and &#xA; representedSuperClassifier.oclAsType(BehavioredClassifier).ownedBehavior->includes(representedClassifier.oclAsType(Behavior))) &#xA; or&#xA; (representedSuperClassifier.oclIsKindOf(Class) and representedSuperClassifier.oclAsType(Class).nestedClassifier->includes(representedClassifier))&#xA; or&#xA; (Association.allInstances()->exists(a | a.memberEnd->exists(end1 | end1.isComposite and end1.type = representedClassifier and &#xA; a.memberEnd->exists(end2 | end1&lt;>end2 and end2.type = representedSuperClassifier))))&#xA;)&#xA;(represents.oclIsKindOf(Property) and superPartition->notEmpty()) implies&#xA;(&#xA; (superPartition.represents.oclIsKindOf(Classifier) and represents.owner = superPartition.represents) or &#xA; (superPartition.represents.oclIsKindOf(Property) and represents.owner = superPartition.represents.oclAsType(Property).type)&#xA;)&#xA;(represents.oclIsKindOf(Property) and superPartition->notEmpty() and superPartition.represents.oclIsKindOf(Classifier)) implies&#xA;(&#xA; let representedClassifier : Classifier = superPartition.represents.oclAsType(Classifier)&#xA; in&#xA; superPartition.subpartition->reject(isExternal)->forAll(p | &#xA; p.represents.oclIsKindOf(Property) and p.owner=representedClassifier)&#xA;)&#xA;isDimension implies superPartition->isEmpty()&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityEdges immediately contained in the ActivityPartition.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/containedEdge"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the ActivityPartition groups other ActivityPartitions along a dimension.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the ActivityPartition represents an entity to which the partitioning structure does not apply.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNodes immediately contained in the ActivityPartition.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
eType="#//Element">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="activityPartition"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Element represented by the functionality modeled within the ActivityPartition.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subpartition" ordered="false"
upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Other ActivityPartitions immediately contained in this ActivityPartition (as its subgroups).&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/subgroup"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"
eType="#//ActivityPartition" eOpposite="#//ActivityPartition/subpartition">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Other ActivityPartitions immediately containing this ActivityPartition (as its superGroups).&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/superGroup"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="associations must_have_name"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="associations" value="Association.allInstances()->forAll( a |&#xA; a.memberEnd->collect(type)->includes(self) implies&#xA; (&#xA; a.memberEnd->size() = 2 and&#xA; let actorEnd : Property = a.memberEnd->any(type = self) in&#xA; actorEnd.opposite.class.oclIsKindOf(UseCase) or&#xA; ( actorEnd.opposite.class.oclIsKindOf(Class) and not&#xA; actorEnd.opposite.class.oclIsKindOf(Behavior))&#xA; )&#xA; )"/>
<details key="must_have_name" value="name->notEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Actor specifies a role played by a user or any other system that interacts with the subject.&#xA;Association.allInstances()->forAll( a |&#xA; a.memberEnd->collect(type)->includes(self) implies&#xA; (&#xA; a.memberEnd->size() = 2 and&#xA; let actorEnd : Property = a.memberEnd->any(type = self) in&#xA; actorEnd.opposite.class.oclIsKindOf(UseCase) or&#xA; ( actorEnd.opposite.class.oclIsKindOf(Class) and not&#xA; actorEnd.opposite.class.oclIsKindOf(Behavior))&#xA; )&#xA; )&#xA;name->notEmpty()&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AddStructuralFeatureValueAction" eSuperTypes="#//WriteStructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="required_value insertAt_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="required_value" value="value&lt;>null"/>
<details key="insertAt_pin" value="if not structuralFeature.isOrdered then insertAt = null&#xA;else &#xA; not isReplaceAll implies&#xA; &#x9;insertAt&lt;>null and &#xA; &#x9;insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))&#xA;endif&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AddStructuralFeatureValueAction is a WriteStructuralFeatureAction for adding values to a StructuralFeature.&#xA;value&lt;>null&#xA;if not structuralFeature.isOrdered then insertAt = null&#xA;else &#xA; not isReplaceAll implies&#xA; &#x9;insertAt&lt;>null and &#xA; &#x9;insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))&#xA;endif&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="addStructuralFeatureValueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that gives the position at which to insert the value in an ordered StructuralFeature. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered StructuralFeatures.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether existing values of the StructuralFeature should be removed before adding the new value.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AddVariableValueAction" eSuperTypes="#//WriteVariableAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="required_value insertAt_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="required_value" value="value &lt;> null"/>
<details key="insertAt_pin" value="if not variable.isOrdered then insertAt = null&#xA;else &#xA; not isReplaceAll implies&#xA; &#x9;insertAt&lt;>null and &#xA; &#x9;insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))&#xA;endif&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AddVariableValueAction is a WriteVariableAction for adding values to a Variable.&#xA;value &lt;> null&#xA;if not variable.isOrdered then insertAt = null&#xA;else &#xA; not isReplaceAll implies&#xA; &#x9;insertAt&lt;>null and &#xA; &#x9;insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))&#xA;endif&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="addVariableValueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that gives the position at which to insert a new value or move an existing value in ordered Variables. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered Variables.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether existing values of the Variable should be removed before adding the new value.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnyReceiveEvent" eSuperTypes="#//MessageEvent">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A trigger for an AnyReceiveEvent is triggered by the receipt of any message that is not explicitly handled by any related trigger.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.&#xA;An artifact is the source of a deployment to a node.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"
upperBound="-1" eType="#//Manifestation" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="artifact"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency.1"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"
upperBound="-1" eType="#//Artifact" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="artifact"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="artifact"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The attributes or association ends defined for the Artifact. The association is a specialization of the ownedMember association.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="artifact"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operations defined for the Artifact. The association is a specialization of the ownedMember association.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//Classifier #//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="specialized_end_number specialized_end_types binary_associations association_ends ends_must_be_typed"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="specialized_end_number" value="parents()->select(oclIsKindOf(Association)).oclAsType(Association)->forAll(p | p.memberEnd->size() = self.memberEnd->size())"/>
<details key="specialized_end_types" value="Sequence{1..memberEnd->size()}->&#xD;&#xA;&#x9;forAll(i | general->select(oclIsKindOf(Association)).oclAsType(Association)->&#xD;&#xA;&#x9;&#x9;forAll(ga | self.memberEnd->at(i).type.conformsTo(ga.memberEnd->at(i).type)))"/>
<details key="binary_associations" value="memberEnd->exists(aggregation &lt;> AggregationKind::none) implies (memberEnd->size() = 2 and memberEnd->exists(aggregation = AggregationKind::none))"/>
<details key="association_ends" value="memberEnd->size() > 2 implies ownedEnd->includesAll(memberEnd)"/>
<details key="ends_must_be_typed" value="memberEnd->forAll(type->notEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A link is a tuple of values that refer to typed objects. An Association classifies a set of links, each of which is an instance of the Association. Each value in the link refers to an instance of the type of the corresponding end of the Association.&#xA;&#xA;parents()->select(oclIsKindOf(Association)).oclAsType(Association)->forAll(p | p.memberEnd->size() = self.memberEnd->size())&#xA;Sequence{1..memberEnd->size()}->&#xA;&#x9;forAll(i | general->select(oclIsKindOf(Association)).oclAsType(Association)->&#xA;&#x9;&#x9;forAll(ga | self.memberEnd->at(i).type.conformsTo(ga.memberEnd->at(i).type)))&#xA;memberEnd->exists(aggregation &lt;> AggregationKind::none) implies (memberEnd->size() = 2 and memberEnd->exists(aggregation = AggregationKind::none))&#xA;memberEnd->size() > 2 implies ownedEnd->includesAll(memberEnd)&#xA;memberEnd->forAll(type->notEmpty())&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="endType" ordered="false" lowerBound="1" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (memberEnd->collect(type)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="endType is derived from the types of the member ends.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="endType" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Type" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="association"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers that are used as types of the ends of the Association.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the Association is derived from other model elements such as other Associations.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="memberEnd" lowerBound="2"
upperBound="-1" eType="#//Property" eOpposite="#//Property/association">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Each end represents participation of instances of the Classifier connected to the end in links of the Association.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="navigableOwnedEnd" ordered="false"
upperBound="-1" eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="association"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The navigable ends that are owned by the Association itself.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Association/ownedEnd"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/owningAssociation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ends that are owned by the Association itself.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Association/memberEnd #//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="cannot_be_defined disjoint_attributes_ends"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="cannot_be_defined" value="self.endType()->excludes(self) and self.endType()->collect(et|et.oclAsType(Classifier).allParents())->flatten()->excludes(self)"/>
<details key="disjoint_attributes_ends" value="ownedAttribute->intersection(ownedEnd)->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A model element that has both Association and Class properties. An AssociationClass can be seen as an Association that also has Class properties, or as a Class that also has Association properties. It not only connects a set of Classifiers but also defines a set of Features that belong to the Association itself and not to any of the associated Classifiers.&#xA;self.endType()->excludes(self) and self.endType()->collect(et|et.oclAsType(Classifier).allParents())->flatten()->excludes(self)&#xA;ownedAttribute->intersection(ownedEnd)->isEmpty()&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="most_one_behavior parameters_match feature_of_context_classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="most_one_behavior" value="specification &lt;> null implies _'context'.ownedBehavior->select(specification=self.specification)->size() = 1"/>
<details key="parameters_match" value="specification &lt;> null implies ownedParameter->size() = specification.ownedParameter->size()"/>
<details key="feature_of_context_classifier" value="_'context'.feature->includes(specification)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Behavior is a specification of how its context BehavioredClassifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.&#xA;specification &lt;> null implies _'context'.ownedBehavior->select(specification=self.specification)->size() = 1&#xA;specification &lt;> null implies ownedParameter->size() = specification.ownedParameter->size()&#xA;_'context'.feature->includes(specification)&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eOperations name="behavioredClassifier" ordered="false" eType="#//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eParameters name="from" ordered="false" lowerBound="1" eType="#//Element"/>
</eOperations>
<eOperations name="context" ordered="false" eType="#//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if nestingClass &lt;> null then&#xD;&#xA; null&#xD;&#xA;else&#xD;&#xA; let b:BehavioredClassifier = self.behavioredClassifier(self.owner) in&#xD;&#xA; if b.oclIsKindOf(Behavior) and b.oclAsType(Behavior)._'context' &lt;> null then &#xD;&#xA; b.oclAsType(Behavior)._'context'&#xD;&#xA; else &#xD;&#xA; b &#xD;&#xA; endif&#xD;&#xA;endif&#xD;&#xA; )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior. &#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="inputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The in and inout ownedParameters of the Behavior.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="outputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The out, inout and return ownedParameters.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
eType="#//BehavioredClassifier" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The BehavioredClassifier that is the context for the execution of the Behavior. A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior. For example, following this algorithm, the context of an entry Behavior in a StateMachine is the BehavioredClassifier that owns the StateMachine. The features of the context BehavioredClassifier as well as the Elements visible to the context Classifier are visible to the Behavior.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Tells whether the Behavior can be invoked while it is still executing from a previous invocation.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//Parameter" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a list of Parameters to the Behavior which describes the order and type of arguments that can be given when the Behavior is invoked and of the values which will be returned when the Behavior completes its execution.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
upperBound="-1" eType="#//ParameterSet" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterSets owned by this Behavior.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
upperBound="-1" eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional set of Constraints specifying what is fulfilled after the execution of the Behavior is completed, if its precondition was fulfilled before its invocation.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
upperBound="-1" eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional set of Constraints specifying what must be fulfilled before the Behavior is invoked.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedBehavior" ordered="false"
upperBound="-1" eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavior"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Behavior that this Behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the Behavior implements a BehavioralFeature, it replaces the redefined Behavior. If the Behavior is a classifierBehavior, it extends the redefined Behavior.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/redefinedClassifier"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
eType="#//BehavioralFeature" eOpposite="#//BehavioralFeature/method">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates a BehavioralFeature that the Behavior implements. The BehavioralFeature must be owned by the BehavioredClassifier that owns the Behavior or be inherited by it. The Parameters of the BehavioralFeature and the implementing Behavior must match. A Behavior does not need to have a specification, in which case it either is the classifierBehavior of a BehavioredClassifier or it can only be invoked by another Behavior of the Classifier.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehaviorExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A BehaviorExecutionSpecification is a kind of ExecutionSpecification representing the execution of a Behavior.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behaviorExecutionSpecification"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Behavior whose execution is occurring.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehavioralFeature" abstract="true" eSuperTypes="#//Namespace #//Feature">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isDistinguishableFrom" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((n.oclIsKindOf(BehavioralFeature) and ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()) implies&#xA; Set{self}->including(n.oclAsType(BehavioralFeature))->isUnique(ownedParameter->collect(p|&#xA; Tuple { name=p.name, type=p.type,effect=p.effect,direction=p.direction,isException=p.isException,&#xA; isStream=p.isStream,isOrdered=p.isOrdered,isUnique=p.isUnique,lower=p.lower, upper=p.upper }))&#xA; )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they must have different signatures.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/isDistinguishableFrom"/>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
<eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="abstract_no_method"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="abstract_no_method" value="isAbstract implies method->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A BehavioralFeature is a feature of a Classifier that specifies an aspect of the behavior of its instances. A BehavioralFeature is implemented (realized) by a Behavior. A BehavioralFeature specifies that a Classifier will respond to a designated request by invoking its implementing method.&#xA;isAbstract implies method->isEmpty()&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="inputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ownedParameters with direction in and inout.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="outputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ownedParameters with direction out, inout, or return.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="concurrency" ordered="false"
lowerBound="1" eType="#//CallConcurrencyKind" defaultValueLiteral="sequential">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a Class with isActive being false). Active instances control access to their own BehavioralFeatures.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, then the BehavioralFeature does not have an implementation, and one must be supplied by a more specific Classifier. If false, the BehavioralFeature must have an implementation in the Classifier or one must be inherited.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
upperBound="-1" eType="#//Behavior" eOpposite="#//Behavior/specification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior that implements the BehavioralFeature. There may be at most one Behavior for a particular pairing of a Classifier (as owner of the Behavior) and a BehavioralFeature (as specification of the Behavior).&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//Parameter" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ownerFormalParam"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of formal Parameters of this BehavioralFeature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
upperBound="-1" eType="#//ParameterSet" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavioralFeature"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterSets owned by this BehavioralFeature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="raisedException" ordered="false"
upperBound="-1" eType="#//Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavioralFeature"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Types representing exceptions that may be raised during an invocation of this BehavioralFeature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehavioredClassifier" abstract="true"
eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="class_behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="class_behavior" value="classifierBehavior->notEmpty() implies classifierBehavior.specification->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A BehavioredClassifier may have InterfaceRealizations, and owns a set of Behaviors one of which may specify the behavior of the BehavioredClassifier itself.&#xA;classifierBehavior->notEmpty() implies classifierBehavior.specification->isEmpty()&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifierBehavior" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavioredClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior that specifies the behavior of the BehavioredClassifier itself.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//BehavioredClassifier/ownedBehavior"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interfaceRealization" ordered="false"
upperBound="-1" eType="#//InterfaceRealization" containment="true" eOpposite="#//InterfaceRealization/implementingClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency.1"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedBehavior" ordered="false"
upperBound="-1" eType="#//Behavior" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="behavioredClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Behaviors owned by a BehavioredClassifier.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="number_of_arguments type_ordering_multiplicity no_onport"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="number_of_arguments" value="argument->size() = signal.allAttributes()->size()"/>
<details key="type_ordering_multiplicity" value="let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;&#xA;Sequence{1..argument->size()}->forAll(i | &#xD;&#xA;&#x9;argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;&#xA;&#x9;argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;&#xA;&#x9;argument->at(i).compatibleWith(attribute->at(i)))"/>
<details key="no_onport" value="onPort=null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A BroadcastSignalAction is an InvocationAction that transmits a Signal instance to all the potential target objects in the system. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instances are sent out and cannot receive reply values.&#xA;argument->size() = signal.allAttributes()->size()&#xA;let attribute: OrderedSet(Property) = signal.allAttributes() in&#xA;Sequence{1..argument->size()}->forAll(i | &#xA;&#x9;argument->at(i).type.conformsTo(attribute->at(i).type) and &#xA;&#x9;argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xA;&#x9;argument->at(i).compatibleWith(attribute->at(i)))&#xA;onPort=null&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
lowerBound="1" eType="#//Signal">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="broadcastSignalAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Signal whose instances are to be sent.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="argument_pins result_pins synchronous_call"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="argument_pins" value="let parameter: OrderedSet(Parameter) = self.inputParameters() in&#xD;&#xA;argument->size() = parameter->size() and&#xD;&#xA;Sequence{1..argument->size()}->forAll(i | &#xD;&#xA;&#x9;argument->at(i).type.conformsTo(parameter->at(i).type) and &#xD;&#xA;&#x9;argument->at(i).isOrdered = parameter->at(i).isOrdered and&#xD;&#xA;&#x9;argument->at(i).compatibleWith(parameter->at(i)))"/>
<details key="result_pins" value="let parameter: OrderedSet(Parameter) = self.outputParameters() in&#xD;&#xA;result->size() = parameter->size() and&#xD;&#xA;Sequence{1..result->size()}->forAll(i | &#xD;&#xA;&#x9;parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;&#xA;&#x9;parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;&#xA;&#x9;parameter->at(i).compatibleWith(result->at(i)))"/>
<details key="synchronous_call" value="result->notEmpty() implies isSynchronous"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="CallAction is an abstract class for Actions that invoke a Behavior with given argument values and (if the invocation is synchronous) receive reply values.&#xA;let parameter: OrderedSet(Parameter) = self.inputParameters() in&#xA;argument->size() = parameter->size() and&#xA;Sequence{1..argument->size()}->forAll(i | &#xA;&#x9;argument->at(i).type.conformsTo(parameter->at(i).type) and &#xA;&#x9;argument->at(i).isOrdered = parameter->at(i).isOrdered and&#xA;&#x9;argument->at(i).compatibleWith(parameter->at(i)))&#xA;let parameter: OrderedSet(Parameter) = self.outputParameters() in&#xA;result->size() = parameter->size() and&#xA;Sequence{1..result->size()}->forAll(i | &#xA;&#x9;parameter->at(i).type.conformsTo(result->at(i).type) and &#xA;&#x9;parameter->at(i).isOrdered = result->at(i).isOrdered and&#xA;&#x9;parameter->at(i).compatibleWith(result->at(i)))&#xA;result->notEmpty() implies isSynchronous&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="inputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the in and inout ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="outputParameters" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the inout, out and return ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the call is synchronous and the caller waits for completion of the invoked Behavior. If false, the call is asynchronous and the caller proceeds immediately and cannot receive return values.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="callAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins on which the reply values from the invocation are placed (if the call is synchronous).&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallBehaviorAction" eSuperTypes="#//CallAction">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="outputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (behavior.outputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the inout, out and return ownedParameters of the Behavior being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/outputParameters"/>
</contents>
<contents xsi:type="ecore:EOperation" name="inputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (behavior.inputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the in and inout ownedParameters of the Behavior being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/inputParameters"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_onport"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_onport" value="onPort=null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CallBehaviorAction is a CallAction that invokes a Behavior directly. The argument values of the CallBehaviorAction are passed on the input Parameters of the invoked Behavior. If the call is synchronous, the execution of the CallBehaviorAction waits until the execution of the invoked Behavior completes and the values of output Parameters of the Behavior are placed on the result OutputPins. If the call is asynchronous, the CallBehaviorAction completes immediately and no results values can be provided.&#xA;onPort=null&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
lowerBound="1" eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="callBehaviorAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Behavior being invoked.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallEvent" eSuperTypes="#//MessageEvent">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CallEvent models the receipt by an object of a message invoking a call of an Operation.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
lowerBound="1" eType="#//Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="callEvent"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the Operation whose invocation raised the CalEvent.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallOperationAction" eSuperTypes="#//CallAction">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="outputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (operation.outputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the inout, out and return ownedParameters of the Operation being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/outputParameters"/>
</contents>
<contents xsi:type="ecore:EOperation" name="inputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (operation.inputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the in and inout ownedParameters of the Operation being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/inputParameters"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_target_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_target_pin" value="if onPort=null then target.type.oclAsType(Classifier).allFeatures()->includes(operation)&#xD;&#xA;else target.type.oclAsType(Classifier).allFeatures()->includes(onPort) and onPort.provided->union(onPort.required).allFeatures()->includes(operation)&#xD;&#xA;endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CallOperationAction is a CallAction that transmits an Operation call request to the target object, where it may cause the invocation of associated Behavior. The argument values of the CallOperationAction are passed on the input Parameters of the Operation. If call is synchronous, the execution of the CallOperationAction waits until the execution of the invoked Operation completes and the values of output Parameters of the Operation are placed on the result OutputPins. If the call is asynchronous, the CallOperationAction completes immediately and no results values can be provided.&#xA;if onPort=null then target.type.oclAsType(Classifier).allFeatures()->includes(operation)&#xA;else target.type.oclAsType(Classifier).allFeatures()->includes(onPort) and onPort.provided->union(onPort.required).allFeatures()->includes(operation)&#xA;endif&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
lowerBound="1" eType="#//Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="callOperationAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operation being invoked.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="callOperationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the target object to which the Operation call request is sent.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CentralBufferNode is an ObjectNode for managing flows from multiple sources and targets.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ChangeEvent" eSuperTypes="#//Event">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ChangeEvent models a change in the system configuration that makes a condition true.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="changeEvent"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Boolean-valued ValueSpecification that will result in a ChangeEvent whenever its value changes from false to true.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//EncapsulatedClassifier #//BehavioredClassifier">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/class">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The attributes (i.e., the Properties) owned by the Class.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredClassifier/ownedAttribute"/>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
</contents>
<contents xsi:type="ecore:EAttribute" name="isAbstract" ordered="false" lowerBound="1"
eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Class does not provide a complete declaration and cannot be instantiated. An abstract Class is typically used as a target of Associations or Generalizations.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Classifier/isAbstract"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="passive_class"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="passive_class" value="not isActive implies (ownedReception->isEmpty() and classifierBehavior = null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Class classifies a set of objects and specifies the features that characterize the structure and behavior of those objects. A Class may have an internal structure and Ports.&#xA;&#xA;not isActive implies (ownedReception->isEmpty() and classifierBehavior = null)&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="extension" ordered="false" upperBound="-1" eType="#//Extension">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (Extension.allInstances()->select(ext | &#xD;&#xA; let endTypes : Sequence(Classifier) = ext.memberEnd->collect(type.oclAsType(Classifier)) in&#xD;&#xA; endTypes->includes(self) or endTypes.allParents()->includes(self) ))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Class::/extension : Extension&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="superClass" ordered="false" upperBound="-1" eType="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.general()->select(oclIsKindOf(Class))->collect(oclAsType(Class))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Class::/superClass : Class&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Extension/metaclass.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This property is used when the Class is acting as a metaclass. It references the Extensions that specify additional properties of the metaclass. The property is derived from the Extensions whose memberEnds are typed by the Class.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether an object specified by this Class is active or not. If true, then the owning Class is referred to as an active Class. If false, then such a Class is referred to as a passive Class.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
eType="#//Classifier" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="nestingClass"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers owned by the Class that are not ownedBehaviors.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true" eOpposite="#//Operation/class">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operations owned by the Class.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
upperBound="-1" eType="#//Reception" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="class"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Receptions owned by the Class.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="superClass" ordered="false"
upperBound="-1" eType="#//Class" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="class"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The superclasses of a Class, derived from its Generalizations.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Classifier/general.1"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//RedefinableElement #//Type #//TemplateableElement">
<eAnnotations source="duplicates">
<eAnnotations source="ownedTemplateSignature">
<details key="eType" value="UML::RedefinableTemplateSignature"/>
</eAnnotations>
<eAnnotations source="templateParameter">
<details key="eType" value="UML::ClassifierTemplateParameter"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="conformsTo" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if other.oclIsKindOf(Classifier) then&#xD;&#xA; let otherClassifier : Classifier = other.oclAsType(Classifier) in&#xD;&#xA; self = otherClassifier or allParents()->includes(otherClassifier)&#xD;&#xA;else&#xD;&#xA; false&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query conformsTo() gives true for a Classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Type/conformsTo"/>
<eParameters name="other" ordered="false" lowerBound="1" eType="#//Type"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isTemplate" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedTemplateSignature &lt;> null or general->exists(g | g.isTemplate()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplate() returns whether this Classifier is actually a template.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateableElement/isTemplate"/>
</contents>
<contents xsi:type="ecore:EReference" name="ownedTemplateSignature" ordered="false"
eType="#//TemplateSignature" containment="true" eOpposite="#//RedefinableTemplateSignature/classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional RedefinableTemplateSignature specifying the formal template parameters.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateableElement/ownedTemplateSignature"/>
</contents>
<contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//ClassifierTemplateParameter/%duplicates%/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="TheClassifierTemplateParameter that exposes this element as a formal parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="specialize_type maps_to_generalization_set non_final_parents no_cycles_in_generalization"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="specialize_type" value="parents()->forAll(c | self.maySpecializeType(c))"/>
<details key="maps_to_generalization_set" value="powertypeExtent->forAll( gs | &#xD;&#xA; gs.generalization->forAll( gen | &#xD;&#xA; not (gen.general = self) and not gen.general.allParents()->includes(self) and not (gen.specific = self) and not self.allParents()->includes(gen.specific) &#xD;&#xA; ))"/>
<details key="non_final_parents" value="parents()->forAll(not isFinalSpecialization)"/>
<details key="no_cycles_in_generalization" value="not allParents()->includes(self)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Classifier represents a classification of instances according to their Features.&#xA;parents()->forAll(c | self.maySpecializeType(c))&#xA;powertypeExtent->forAll( gs | &#xA; gs.generalization->forAll( gen | &#xA; not (gen.general = self) and not gen.general.allParents()->includes(self) and not (gen.specific = self) and not self.allParents()->includes(gen.specific) &#xA; ))&#xA;parents()->forAll(not isFinalSpecialization)&#xA;not allParents()->includes(self)&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="allAttributes" upperBound="-1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (attribute->asSequence()->union(parents()->asSequence().allAttributes())->select(p | member->includes(p))->asOrderedSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allAttributes gives an ordered set of all owned and inherited attributes of the Classifier. All owned attributes appear before any inherited attributes, and the attributes inherited from any more specific parent Classifier appear before those of any more general parent Classifier. However, if the Classifier has multiple immediate parents, then the relative ordering of the sets of attributes from those parents is not defined.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Feature">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (member->select(oclIsKindOf(Feature))->collect(oclAsType(Feature))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allFeatures() gives all of the Features in the namespace of the Classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allParents" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (parents()->union(parents()->collect(allParents())->asSet()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allRealizedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (directlyRealizedInterfaces()->union(self.allParents()->collect(directlyRealizedInterfaces()))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces realized by this Classifier and all of its generalizations&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allSlottableFeatures" ordered="false" upperBound="-1" eType="#//StructuralFeature">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (member->select(oclIsKindOf(StructuralFeature))->&#xD;&#xA; collect(oclAsType(StructuralFeature))->&#xD;&#xA; union(self.inherit(self.allParents()->collect(p | p.attribute)->asSet())->&#xD;&#xA; collect(oclAsType(StructuralFeature)))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="All StructuralFeatures related to the Classifier that may have Slots, including direct attributes, inherited attributes, private attributes in generalizations, and memberEnds of Associations, but excluding redefined StructuralFeatures.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (directlyUsedInterfaces()->union(self.allParents()->collect(directlyUsedInterfaces()))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces used by this Classifier and all of its generalizations&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="directlyRealizedInterfaces" ordered="false" upperBound="-1"
eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((clientDependency->&#xD;&#xA; select(oclIsKindOf(Realization) and supplier->forAll(oclIsKindOf(Interface))))->&#xD;&#xA; collect(supplier.oclAsType(Interface))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces directly realized by this Classifier&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="directlyUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((supplierDependency->&#xD;&#xA; select(oclIsKindOf(Usage) and client->forAll(oclIsKindOf(Interface))))->&#xD;&#xA; collect(client.oclAsType(Interface))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces directly used by this Classifier&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="general" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (parents())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The general Classifiers are the ones referenced by the Generalization relationships.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="hasVisibilityOf" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (n.visibility &lt;> VisibilityKind::private)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query hasVisibilityOf() determines whether a NamedElement is visible in the classifier. Non-private members are visible. It is only called when the argument is something owned by a parent.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (inhs->reject(inh |&#xD;&#xA; inh.oclIsKindOf(RedefinableElement) and&#xD;&#xA; ownedMember->select(oclIsKindOf(RedefinableElement))->&#xD;&#xA; select(redefinedElement->includes(inh.oclAsType(RedefinableElement)))&#xD;&#xA; ->notEmpty()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query inherit() defines how to inherit a set of elements passed as its argument. It excludes redefined elements from the result.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="inheritableMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (member->select(m | c.hasVisibilityOf(m)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query inheritableMembers() gives all of the members of a Classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="inheritedMember" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (inherit(parents()->collect(inheritableMembers(self))->asSet()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The inheritedMember association is derived by inheriting the inheritable members of the parents.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isSubstitutableFor" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (substitution.contract->includes(contract))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="contract" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="maySpecializeType" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oclIsKindOf(c.oclType()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="parents" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (generalization.general->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query parents() gives all of the immediate ancestors of a generalized Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="attribute" upperBound="-1"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="All of the Properties that are direct (i.e., not inherited or imported) attributes of the Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="collaborationUse" ordered="false"
upperBound="-1" eType="#//CollaborationUse" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The CollaborationUses owned by the Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="feature" ordered="false"
upperBound="-1" eType="#//Feature" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Feature/featuringClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies each Feature directly defined in the classifier. Note that there may be members of the Classifier that are of the type Feature but are not included, e.g., inherited features.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
upperBound="-1" eType="#//Classifier" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The generalizing Classifiers for this Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
upperBound="-1" eType="#//Generalization" containment="true" eOpposite="#//Generalization/specific">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Generalization relationships for this Classifier. These Generalizations navigate to more general Classifiers in the generalization hierarchy.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inheritedMember" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="inheritingClassifier"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="All elements inherited by this Classifier from its general Classifiers.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Classifier can only be instantiated by instantiating one of its specializations. An abstract Classifier is intended to be used by other Classifiers e.g., as the target of Associations or Generalizations.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isFinalSpecialization"
ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Classifier cannot be specialized.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
upperBound="-1" eType="#//UseCase" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCases owned by this classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The GeneralizationSet of which this Classifier is a power type.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedClassifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers redefined by this Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="representation" ordered="false"
eType="#//CollaborationUse">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CollaborationUse which indicates the Collaboration that represents this Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/collaborationUse"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
upperBound="-1" eType="#//Substitution" containment="true" eOpposite="#//Substitution/substitutingClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Substitutions owned by this Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency.1"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
upperBound="-1" eType="#//UseCase" eOpposite="#//UseCase/subject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of UseCases for which this Classifier is the subject.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">
<eAnnotations source="duplicates">
<eAnnotations source="parameteredElement">
<details key="eType" value="UML::Classifier"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Classifier/%duplicates%/templateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier exposed by this ClassifierTemplateParameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="has_constraining_classifier parametered_element_no_features matching_abstract actual_is_classifier constraining_classifiers_constrain_args constraining_classifiers_constrain_parametered_element"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="has_constraining_classifier" value="allowSubstitutable implies constrainingClassifier->notEmpty()"/>
<details key="parametered_element_no_features" value="parameteredElement.feature->isEmpty() and (constrainingClassifier->isEmpty() implies parameteredElement.allParents()->isEmpty())"/>
<details key="matching_abstract" value="(not parameteredElement.isAbstract) implies templateParameterSubstitution.actual->forAll(a | not a.oclAsType(Classifier).isAbstract)"/>
<details key="actual_is_classifier" value=" templateParameterSubstitution.actual->forAll(a | a.oclIsKindOf(Classifier))"/>
<details key="constraining_classifiers_constrain_args" value="templateParameterSubstitution.actual->forAll( a |&#xD;&#xA; let arg : Classifier = a.oclAsType(Classifier) in&#xD;&#xA; constrainingClassifier->forAll(&#xD;&#xA; cc | &#xD;&#xA; arg = cc or arg.conformsTo(cc) or (allowSubstitutable and arg.isSubstitutableFor(cc))&#xD;&#xA; )&#xD;&#xA;)"/>
<details key="constraining_classifiers_constrain_parametered_element" value="constrainingClassifier->forAll(&#xD;&#xA; cc | parameteredElement = cc or parameteredElement.conformsTo(cc) or (allowSubstitutable and parameteredElement.isSubstitutableFor(cc))&#xD;&#xA;)&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ClassifierTemplateParameter exposes a Classifier as a formal template parameter.&#xA;allowSubstitutable implies constrainingClassifier->notEmpty()&#xA;parameteredElement.feature->isEmpty() and (constrainingClassifier->isEmpty() implies parameteredElement.allParents()->isEmpty())&#xA;(not parameteredElement.isAbstract) implies templateParameterSubstitution.actual->forAll(a | not a.oclAsType(Classifier).isAbstract)&#xA; templateParameterSubstitution.actual->forAll(a | a.oclIsKindOf(Classifier))&#xA;templateParameterSubstitution.actual->forAll( a |&#xA; let arg : Classifier = a.oclAsType(Classifier) in&#xA; constrainingClassifier->forAll(&#xA; cc | &#xA; arg = cc or arg.conformsTo(cc) or (allowSubstitutable and arg.isSubstitutableFor(cc))&#xA; )&#xA;)&#xA;constrainingClassifier->forAll(&#xA; cc | parameteredElement = cc or parameteredElement.conformsTo(cc) or (allowSubstitutable and parameteredElement.isSubstitutableFor(cc))&#xA;)&#xA;&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="constrainingClassifier"
ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="classifierTemplateParameter"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The classifiers that constrain the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any Classifier that is compatible with this constraining Classifier can be substituted; otherwise, it must be either this Classifier or one of its specializations. If this property is empty, there are no constraints on the Classifier that can be used as an argument.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="body_output_pins decider_output test_and_body"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body_output_pins" value="_'body'.oclAsType(Action).allActions().output->includesAll(bodyOutput)"/>
<details key="decider_output" value="test.oclAsType(Action).allActions().output->includes(decider) and&#xD;&#xA;decider.type = Boolean and&#xD;&#xA;decider.is(1,1)"/>
<details key="test_and_body" value="test->intersection(_'body')->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Clause is an Element that represents a single branch of a ConditionalNode, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates to true.&#xA;_'body'.oclAsType(Action).allActions().output->includesAll(bodyOutput)&#xA;test.oclAsType(Action).allActions().output->includes(decider) and&#xA;decider.type = Boolean and&#xA;decider.is(1,1)&#xA;test->intersection(_'body')->isEmpty()&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clause"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of ExecutableNodes that are executed if the test evaluates to true and the Clause is chosen over other Clauses within the ConditionalNode that also have tests that evaluate to true.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
eType="#//OutputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clause"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins on Actions within the body section whose values are moved to the result OutputPins of the containing ConditionalNode after execution of the body.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
lowerBound="1" eType="#//OutputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clause"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OutputPin on an Action in the test section whose Boolean value determines the result of the test.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of Clauses whose tests must all evaluate to false before this Clause can evaluate its test.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of Clauses that may not evaluate their tests unless the test for this Clause evaluates to false.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" lowerBound="1"
upperBound="-1" eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clause"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of ExecutableNodes that are executed in order to provide a test result for the Clause.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClearAssociationAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity same_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="object.is(1,1)"/>
<details key="same_type" value="association.memberEnd->exists(self.object.type.conformsTo(type))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ClearAssociationAction is an Action that destroys all links of an Association in which a particular object participates.&#xA;object.is(1,1)&#xA;association.memberEnd->exists(self.object.type.conformsTo(type))&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
lowerBound="1" eType="#//Association">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clearAssociationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Association to be cleared.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clearAssociationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that gives the object whose participation in the Association is to be cleared.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClearStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_of_result multiplicity_of_result"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_of_result" value="result&lt;>null implies result.type = object.type"/>
<details key="multiplicity_of_result" value="result&lt;>null implies result.is(1,1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ClearStructuralFeatureAction is a StructuralFeatureAction that removes all values of a StructuralFeature.&#xA;result&lt;>null implies result.type = object.type&#xA;result&lt;>null implies result.is(1,1)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="clearStructuralFeatureAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which is put the input object as modified by the ClearStructuralFeatureAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClearVariableAction" eSuperTypes="#//VariableAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ClearVariableAction is a VariableAction that removes all values of a Variable.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Collaboration" eSuperTypes="#//StructuredClassifier #//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Collaboration describes a structure of collaborating elements (roles), each performing a specialized function, which collectively accomplish some desired functionality. &#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"
upperBound="-1" eType="#//ConnectableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collaboration"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Represents the participants in the Collaboration.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//StructuredClassifier/role"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollaborationUse" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="client_elements every_role connectors"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="client_elements" value="roleBinding->collect(client)->forAll(ne1, ne2 |&#xD;&#xA; ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;&#xA; let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;&#xA; ce1.structuredClassifier = ce2.structuredClassifier)&#xD;&#xA;and&#xD;&#xA; roleBinding->collect(supplier)->forAll(ne1, ne2 |&#xD;&#xA; ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;&#xA; let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;&#xA; ce1.collaboration = ce2.collaboration)"/>
<details key="every_role" value="type.collaborationRole->forAll(role | roleBinding->exists(rb | rb.supplier->includes(role)))"/>
<details key="connectors" value="type.ownedConnector->forAll(connector |&#xD;&#xA; let rolesConnectedInCollab : Set(ConnectableElement) = connector.end.role->asSet(),&#xD;&#xA; relevantBindings : Set(Dependency) = roleBinding->select(rb | rb.supplier->intersection(rolesConnectedInCollab)->notEmpty()),&#xD;&#xA; boundRoles : Set(ConnectableElement) = relevantBindings->collect(client.oclAsType(ConnectableElement))->asSet(),&#xD;&#xA; contextClassifier : StructuredClassifier = boundRoles->any(true).structuredClassifier->any(true) in&#xD;&#xA; contextClassifier.ownedConnector->exists( correspondingConnector | &#xD;&#xA; correspondingConnector.end.role->forAll( role | boundRoles->includes(role) )&#xD;&#xA; and (connector.type->notEmpty() and correspondingConnector.type->notEmpty()) implies connector.type->forAll(conformsTo(correspondingConnector.type)) )&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CollaborationUse is used to specify the application of a pattern specified by a Collaboration to a specific situation.&#xA;roleBinding->collect(client)->forAll(ne1, ne2 |&#xA; ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xA; let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xA; ce1.structuredClassifier = ce2.structuredClassifier)&#xA;and&#xA; roleBinding->collect(supplier)->forAll(ne1, ne2 |&#xA; ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xA; let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xA; ce1.collaboration = ce2.collaboration)&#xA;type.collaborationRole->forAll(role | roleBinding->exists(rb | rb.supplier->includes(role)))&#xA;type.ownedConnector->forAll(connector |&#xA; let rolesConnectedInCollab : Set(ConnectableElement) = connector.end.role->asSet(),&#xA; relevantBindings : Set(Dependency) = roleBinding->select(rb | rb.supplier->intersection(rolesConnectedInCollab)->notEmpty()),&#xA; boundRoles : Set(ConnectableElement) = relevantBindings->collect(client.oclAsType(ConnectableElement))->asSet(),&#xA; contextClassifier : StructuredClassifier = boundRoles->any(true).structuredClassifier->any(true) in&#xA; contextClassifier.ownedConnector->exists( correspondingConnector | &#xA; correspondingConnector.end.role->forAll( role | boundRoles->includes(role) )&#xA; and (connector.type->notEmpty() and correspondingConnector.type->notEmpty()) implies connector.type->forAll(conformsTo(correspondingConnector.type)) )&#xA;)&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"
upperBound="-1" eType="#//Dependency" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collaborationUse"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A mapping between features of the Collaboration and features of the owning Classifier. This mapping indicates which ConnectableElement of the Classifier plays which role(s) in the Collaboration. A ConnectableElement may be bound to multiple roles in the same CollaborationUse (that is, it may play multiple roles).&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
eType="#//Collaboration">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collaborationUse"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Collaboration which is used in this CollaborationUse. The Collaboration defines the cooperation between its roles which are mapped to ConnectableElements relating to the Classifier owning the CollaborationUse.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="break consider_and_ignore opt_loop_break_neg"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="break" value="interactionOperator=InteractionOperatorKind::break implies &#xD;&#xA;enclosingInteraction.oclAsType(InteractionFragment)->asSet()->union(&#xD;&#xA; enclosingOperand.oclAsType(InteractionFragment)->asSet()).covered->asSet() = self.covered->asSet()"/>
<details key="consider_and_ignore" value="((interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)) implies oclIsKindOf(ConsiderIgnoreFragment)"/>
<details key="opt_loop_break_neg" value="(interactionOperator = InteractionOperatorKind::opt or interactionOperator = InteractionOperatorKind::loop or&#xD;&#xA;interactionOperator = InteractionOperatorKind::break or interactionOperator = InteractionOperatorKind::assert or&#xD;&#xA;interactionOperator = InteractionOperatorKind::neg)&#xD;&#xA;implies operand->size()=1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CombinedFragment defines an expression of InteractionFragments. A CombinedFragment is defined by an interaction operator and corresponding InteractionOperands. Through the use of CombinedFragments the user will be able to describe a number of traces in a compact and concise manner.&#xA;interactionOperator=InteractionOperatorKind::break implies &#xA;enclosingInteraction.oclAsType(InteractionFragment)->asSet()->union(&#xA; enclosingOperand.oclAsType(InteractionFragment)->asSet()).covered->asSet() = self.covered->asSet()&#xA;((interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)) implies oclIsKindOf(ConsiderIgnoreFragment)&#xA;(interactionOperator = InteractionOperatorKind::opt or interactionOperator = InteractionOperatorKind::loop or&#xA;interactionOperator = InteractionOperatorKind::break or interactionOperator = InteractionOperatorKind::assert or&#xA;interactionOperator = InteractionOperatorKind::neg)&#xA;implies operand->size()=1&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="combinedFragment"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the gates that form the interface between this CombinedFragment and its surroundings&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
lowerBound="1" eType="#//InteractionOperatorKind" defaultValueLiteral="seq">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the operation which defines the semantics of this combination of InteractionFragments.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" lowerBound="1"
upperBound="-1" eType="#//InteractionOperand" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="combinedFragment"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of operands of the combined fragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Comment is a textual annotation that can be attached to a set of Elements.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
upperBound="-1" eType="#//Element">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="comment"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Element(s) being commented.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a string that is the comment.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="association_ends"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="association_ends" value="endType->forAll (oclIsKindOf(DeploymentTarget))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.&#xA;endType->forAll (oclIsKindOf(DeploymentTarget))&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_nested_classifiers no_packaged_elements"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_nested_classifiers" value="nestedClassifier->isEmpty()"/>
<details key="no_packaged_elements" value="nestingClass &lt;> null implies packagedElement->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment. &#xA;nestedClassifier->isEmpty()&#xA;nestingClass &lt;> null implies packagedElement->isEmpty()&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="provided" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let &#x9;ris : Set(Interface) = allRealizedInterfaces(),&#xD;&#xA; realizingClassifiers : Set(Classifier) = self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;&#xA; allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;&#xA; realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allRealizedInterfaces())),&#xD;&#xA; ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;&#xA; providedByPorts : Set(Interface) = ports.provided->asSet()&#xD;&#xA;in ris->union(realizingClassifierInterfaces) ->union(providedByPorts)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Component::/provided&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="required" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let &#x9;uis : Set(Interface) = allUsedInterfaces(),&#xD;&#xA; realizingClassifiers : Set(Classifier) = self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;&#xA; allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;&#xA; realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allUsedInterfaces())),&#xD;&#xA; ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;&#xA; usedByPorts : Set(Interface) = ports.required->asSet()&#xD;&#xA;in&#x9; uis->union(realizingClassifierInterfaces)->union(usedByPorts)->asSet()&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Component::/required&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Component is defined at design-time, but at run-time (or execution-time) an object specified by the Component does not exist, that is, the Component is instantiated indirectly, through the instantiation of its realizing Classifiers or parts.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="component"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of PackageableElements that a Component owns. In the namespace of a Component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g., Classes, Interfaces, Components, Packages, UseCases, Dependencies (e.g., mappings), and Artifacts.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="component"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces that the Component exposes to its environment. These Interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
upperBound="-1" eType="#//ComponentRealization" containment="true" eOpposite="#//ComponentRealization/abstraction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="component"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces that the Component requires from other Components in its environment in order to be able to offer its full set of provided functionality. These Interfaces may be used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComponentRealization" eSuperTypes="#//Realization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Realization is specialized to (optionally) define the Classifiers that realize the contract offered by a Component in terms of its provided and required Interfaces. The Component forms an abstraction from these various Classifiers.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"
eType="#//Component" eOpposite="#//Component/realization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Component that owns this ComponentRealization and which is implemented by its realizing Classifiers.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/supplier #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="componentRealization"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers that are involved in the implementation of the Component that owns this Realization.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/client"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="allActions" ordered="false" upperBound="-1"
eType="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return only this ConditionalNode. This prevents Actions within the ConditionalNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Action/allActions #//StructuredActivityNode/%duplicates%/allActions"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="result_no_incoming no_input_pins one_clause_with_executable_node matching_output_pins executable_nodes clause_no_predecessor"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="result_no_incoming" value="result.incoming->isEmpty()"/>
<details key="no_input_pins" value="input->isEmpty()"/>
<details key="one_clause_with_executable_node" value="node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->forAll(n | &#xD;&#xA;&#x9;self.clause->select(test->union(_'body')->includes(n))->size()=1)"/>
<details key="matching_output_pins" value="clause->forAll(&#xD;&#xA;&#x9;bodyOutput->size()=self.result->size() and&#xD;&#xA;&#x9;Sequence{1..self.result->size()}->forAll(i |&#xD;&#xA;&#x9;&#x9;bodyOutput->at(i).type.conformsTo(result->at(i).type) and&#xD;&#xA;&#x9;&#x9;bodyOutput->at(i).isOrdered = result->at(i).isOrdered and&#xD;&#xA;&#x9;&#x9;bodyOutput->at(i).isUnique = result->at(i).isUnique and&#xD;&#xA;&#x9;&#x9;bodyOutput->at(i).compatibleWith(result->at(i))))"/>
<details key="executable_nodes" value="clause.test->union(clause._'body') = node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)"/>
<details key="clause_no_predecessor" value="clause->closure(predecessorClause)->intersection(clause)->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConditionalNode is a StructuredActivityNode that chooses one among some number of alternative collections of ExecutableNodes to execute.&#xA;result.incoming->isEmpty()&#xA;input->isEmpty()&#xA;node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->forAll(n | &#xA;&#x9;self.clause->select(test->union(_'body')->includes(n))->size()=1)&#xA;clause->forAll(&#xA;&#x9;bodyOutput->size()=self.result->size() and&#xA;&#x9;Sequence{1..self.result->size()}->forAll(i |&#xA;&#x9;&#x9;bodyOutput->at(i).type.conformsTo(result->at(i).type) and&#xA;&#x9;&#x9;bodyOutput->at(i).isOrdered = result->at(i).isOrdered and&#xA;&#x9;&#x9;bodyOutput->at(i).isUnique = result->at(i).isUnique and&#xA;&#x9;&#x9;bodyOutput->at(i).compatibleWith(result->at(i))))&#xA;clause.test->union(clause._'body') = node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)&#xA;clause->closure(predecessorClause)->intersection(clause)->isEmpty()&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="conditionalNode"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Clauses composing the ConditionalNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the modeler asserts that the test for at least one Clause of the ConditionalNode will succeed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the modeler asserts that the test for at most one Clause of the ConditionalNode will succeed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="conditionalNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins that onto which are moved values from the bodyOutputs of the Clause selected for execution.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredActivityNode/structuredNodeOutput"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
eSuperTypes="#//TypedElement #//ParameterableElement">
<eAnnotations source="duplicates">
<eAnnotations source="templateParameter">
<details key="eType" value="UML::ConnectableElementTemplateParameter"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//ConnectableElementTemplateParameter/%duplicates%/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ConnectableElementTemplateParameter for this ConnectableElement parameter.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ConnectableElement is an abstract metaclass representing a set of instances that play roles of a StructuredClassifier. ConnectableElements may be joined by attached Connectors and specify configurations of linked instances to be created within an instance of the containing StructuredClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="end" ordered="false" upperBound="-1" eType="#//ConnectorEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ConnectorEnd.allInstances()->select(role = self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for ConnectableElement::/end : ConnectorEnd&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"
eType="#//ConnectorEnd" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//ConnectorEnd/role">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of ConnectorEnds that attach to this ConnectableElement.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
eSuperTypes="#//TemplateParameter">
<eAnnotations source="duplicates">
<eAnnotations source="parameteredElement">
<details key="eType" value="UML::ConnectableElement"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ConnectableElement/%duplicates%/templateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ConnectableElement for this ConnectableElementTemplateParameter.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConnectableElementTemplateParameter exposes a ConnectableElement as a formal parameter for a template.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="exit_pseudostates entry_pseudostates"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="exit_pseudostates" value="exit->forAll(kind = PseudostateKind::exitPoint)"/>
<details key="entry_pseudostates" value="entry->forAll(kind = PseudostateKind::entryPoint)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConnectionPointReference represents a usage (as part of a submachine State) of an entry/exit point Pseudostate defined in the StateMachine referenced by the submachine State.&#xA;exit->forAll(kind = PseudostateKind::exitPoint)&#xA;entry->forAll(kind = PseudostateKind::entryPoint)&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
upperBound="-1" eType="#//Pseudostate">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connectionPointReference"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The entryPoint Pseudostates corresponding to this connection point.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"
eType="#//Pseudostate">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connectionPointReference"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The exitPoints kind Pseudostates corresponding to this connection point.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
eType="#//State" eOpposite="#//State/connection">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The State in which the ConnectionPointReference is defined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="types roles"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="types" value="type&lt;>null implies &#xD;&#xA; let noOfEnds : Integer = end->size() in &#xD;&#xA; (type.memberEnd->size() = noOfEnds) and Sequence{1..noOfEnds}->forAll(i | end->at(i).role.type.conformsTo(type.memberEnd->at(i).type))"/>
<details key="roles" value="structuredClassifier &lt;> null&#xD;&#xA;and&#xD;&#xA; end->forAll( e | structuredClassifier.allRoles()->includes(e.role)&#xD;&#xA;or&#xD;&#xA; e.role.oclIsKindOf(Port) and structuredClassifier.allRoles()->includes(e.partWithPort))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Connector specifies links that enables communication between two or more instances. In contrast to Associations, which specify links between any instance of the associated Classifiers, Connectors specify links between instances playing the connected parts only.&#xA;type&lt;>null implies &#xA; let noOfEnds : Integer = end->size() in &#xA; (type.memberEnd->size() = noOfEnds) and Sequence{1..noOfEnds}->forAll(i | end->at(i).role.type.conformsTo(type.memberEnd->at(i).type))&#xA;structuredClassifier &lt;> null&#xA;and&#xA; end->forAll( e | structuredClassifier.allRoles()->includes(e.role)&#xA;or&#xA; e.role.oclIsKindOf(Port) and structuredClassifier.allRoles()->includes(e.partWithPort))&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="kind" ordered="false" lowerBound="1" eType="#//ConnectorKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if end->exists(&#xD;&#xA;&#x9;&#x9;role.oclIsKindOf(Port) &#xD;&#xA;&#x9;&#x9;and partWithPort->isEmpty()&#xD;&#xA;&#x9;&#x9;and not role.oclAsType(Port).isBehavior)&#xD;&#xA;then ConnectorKind::delegation &#xD;&#xA;else ConnectorKind::assembly &#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Connector::/kind : ConnectorKind&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
upperBound="-1" eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connector"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Behaviors that specify the valid interaction patterns across the Connector.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
eType="#//ConnectorEnd" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connector"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Connector has at least two ConnectorEnds, each representing the participation of instances of the Classifiers typing the ConnectableElements attached to the end. The set of ConnectorEnds is ordered.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
eType="#//ConnectorKind" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates the kind of Connector. This is derived: a Connector with one or more ends connected to a Port which is not on a Part and which is not a behavior port is a delegation; otherwise it is an assembly.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
upperBound="-1" eType="#//Connector">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connector"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Connector may be redefined when its containing Classifier is specialized. The redefining Connector may have a type that specializes the type of the redefined Connector. The types of the ConnectorEnds of the redefining Connector may specialize the types of the ConnectorEnds of the redefined Connector. The properties of the ConnectorEnds of the redefining Connector may be replaced.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connector"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional Association that classifies links corresponding to this Connector.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="role_and_part_with_port part_with_port_empty multiplicity self_part_with_port"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="role_and_part_with_port" value="partWithPort->notEmpty() implies &#xD;&#xA; (role.oclIsKindOf(Port) and partWithPort.type.oclAsType(Namespace).member->includes(role))"/>
<details key="part_with_port_empty" value="(role.oclIsKindOf(Port) and role.owner = connector.owner) implies partWithPort->isEmpty()"/>
<details key="multiplicity" value="self.compatibleWith(definingEnd)"/>
<details key="self_part_with_port" value="partWithPort->notEmpty() implies not partWithPort.oclIsKindOf(Port)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConnectorEnd is an endpoint of a Connector, which attaches the Connector to a ConnectableElement.&#xA;partWithPort->notEmpty() implies &#xA; (role.oclIsKindOf(Port) and partWithPort.type.oclAsType(Namespace).member->includes(role))&#xA;(role.oclIsKindOf(Port) and role.owner = connector.owner) implies partWithPort->isEmpty()&#xA;self.compatibleWith(definingEnd)&#xA;partWithPort->notEmpty() implies not partWithPort.oclIsKindOf(Port)&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="definingEnd" ordered="false" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if connector.type = null &#xD;&#xA;then&#xD;&#xA; null &#xD;&#xA;else&#xD;&#xA; let index : Integer = connector.end->indexOf(self) in&#xD;&#xA; connector.type.memberEnd->at(index)&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for ConnectorEnd::/definingEnd : Property&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connectorEnd"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A derived property referencing the corresponding end on the Association which types the Connector owing this ConnectorEnd, if any. It is derived by selecting the end at the same place in the ordering of Association ends as this ConnectorEnd.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="connectorEnd"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates the role of the internal structure of a Classifier with the Port to which the ConnectorEnd is attached.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" lowerBound="1"
eType="#//ConnectableElement" volatile="true" transient="true" derived="true"
eOpposite="#//ConnectableElement/end.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ConnectableElement attached at this ConnectorEnd. When an instance of the containing Classifier is created, a link may (depending on the multiplicities) be created to an instance of the Classifier that types this ConnectableElement.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConsiderIgnoreFragment" eSuperTypes="#//CombinedFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="consider_or_ignore type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="consider_or_ignore" value="(interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)"/>
<details key="type" value="message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Signal))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConsiderIgnoreFragment is a kind of CombinedFragment that is used for the consider and ignore cases, which require lists of pertinent Messages to be specified.&#xA;(interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)&#xA;message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Signal))&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="considerIgnoreFragment"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of messages that apply to this fragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="boolean_value no_side_effects not_apply_to_self"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="not_apply_to_self" value="not constrainedElement->includes(self)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an Element or set of Elements.&#xA;not constrainedElement->includes(self)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
eType="#//Element">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="constraint"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of Elements referenced by this Constraint.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
eType="#//Namespace" eOpposite="#//Namespace/ownedRule">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that owns the Constraint.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A condition that must be true when evaluated in order for the Constraint to be satisfied.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="first_or_last_interaction_fragment same_name global"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="first_or_last_interaction_fragment" value=" enclosingOperand->notEmpty() and &#xD;&#xA; let peerFragments : OrderedSet(InteractionFragment) = enclosingOperand.fragment in &#xD;&#xA; ( peerFragments->notEmpty() and &#xD;&#xA; ((peerFragments->first() = self) or (peerFragments->last() = self)))"/>
<details key="same_name" value="enclosingOperand.combinedFragment->notEmpty() and&#xD;&#xA;let parentInteraction : Set(Interaction) = &#xD;&#xA;enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()&#xD;&#xA;in &#xD;&#xA;(parentInteraction->size() = 1) &#xD;&#xA;and let peerInteractions : Set(Interaction) =&#xD;&#xA; (parentInteraction->union(parentInteraction->collect(_'context')->collect(behavior)->&#xD;&#xA; select(oclIsKindOf(Interaction)).oclAsType(Interaction)->asSet())->asSet()) in&#xD;&#xA; (peerInteractions->notEmpty()) and &#xD;&#xA; let combinedFragments1 : Set(CombinedFragment) = peerInteractions.fragment->&#xD;&#xA; select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet() in&#xD;&#xA; combinedFragments1->notEmpty() and combinedFragments1->closure(operand.fragment->&#xD;&#xA; select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment))->asSet().operand.fragment->&#xD;&#xA; select(oclIsKindOf(Continuation)).oclAsType(Continuation)->asSet()->&#xD;&#xA; forAll(c : Continuation | (c.name = self.name) implies &#xD;&#xA; (c.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by self&#xD;&#xA; self.covered->asSet()->&#xD;&#xA; select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;&#xA; and&#xD;&#xA; (self.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by c&#xD;&#xA; c.covered->asSet()->&#xD;&#xA; select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;&#xA; )"/>
<details key="global" value="enclosingOperand->notEmpty() and&#xD;&#xA; let operandLifelines : Set(Lifeline) = enclosingOperand.covered in &#xD;&#xA; (operandLifelines->notEmpty() and &#xD;&#xA; operandLifelines->forAll(ol :Lifeline |self.covered->includes(ol)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Continuation is a syntactic way to define continuations of different branches of an alternative CombinedFragment. Continuations are intuitively similar to labels representing intermediate points in a flow of control.&#xA; enclosingOperand->notEmpty() and &#xA; let peerFragments : OrderedSet(InteractionFragment) = enclosingOperand.fragment in &#xA; ( peerFragments->notEmpty() and &#xA; ((peerFragments->first() = self) or (peerFragments->last() = self)))&#xA;enclosingOperand.combinedFragment->notEmpty() and&#xA;let parentInteraction : Set(Interaction) = &#xA;enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()&#xA;in &#xA;(parentInteraction->size() = 1) &#xA;and let peerInteractions : Set(Interaction) =&#xA; (parentInteraction->union(parentInteraction->collect(_'context')->collect(behavior)->&#xA; select(oclIsKindOf(Interaction)).oclAsType(Interaction)->asSet())->asSet()) in&#xA; (peerInteractions->notEmpty()) and &#xA; let combinedFragments1 : Set(CombinedFragment) = peerInteractions.fragment->&#xA; select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet() in&#xA; combinedFragments1->notEmpty() and combinedFragments1->closure(operand.fragment->&#xA; select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment))->asSet().operand.fragment->&#xA; select(oclIsKindOf(Continuation)).oclAsType(Continuation)->asSet()->&#xA; forAll(c : Continuation | (c.name = self.name) implies &#xA; (c.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by self&#xA; self.covered->asSet()->&#xA; select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xA; and&#xA; (self.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by c&#xA; c.covered->asSet()->&#xA; select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xA; )&#xA;enclosingOperand->notEmpty() and&#xA; let operandLifelines : Set(Lifeline) = enclosingOperand.covered in &#xA; (operandLifelines->notEmpty() and &#xA; operandLifelines->forAll(ol :Lifeline |self.covered->includes(ol)))&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="object_nodes"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="object_nodes" value="(source.oclIsKindOf(ObjectNode) implies source.oclAsType(ObjectNode).isControlType) and &#xD;&#xA;(target.oclIsKindOf(ObjectNode) implies target.oclAsType(ObjectNode).isControlType)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ControlFlow is an ActivityEdge traversed by control tokens or object tokens of control type, which are use to control the execution of ExecutableNodes.&#xA;(source.oclIsKindOf(ObjectNode) implies source.oclAsType(ObjectNode).isControlType) and &#xA;(target.oclIsKindOf(ObjectNode) implies target.oclAsType(ObjectNode).isControlType)&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ControlNode is an abstract ActivityNode that coordinates flows in an Activity.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CreateLinkAction" eSuperTypes="#//WriteLinkAction">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
upperBound="-1" eType="#//LinkEndCreationData" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="createLinkAction"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The LinkEndData that specifies the values to be placed on the Association ends for the new link.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkAction/endData"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="association_not_abstract"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="association_not_abstract" value="not self.association().isAbstract"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CreateLinkAction is a WriteLinkAction for creating links.&#xA;not self.association().isAbstract&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CreateLinkObjectAction" eSuperTypes="#//CreateLinkAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity type_of_result association_class"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="result.is(1,1)"/>
<details key="type_of_result" value="result.type = association()"/>
<details key="association_class" value="self.association().oclIsKindOf(AssociationClass)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CreateLinkObjectAction is a CreateLinkAction for creating link objects (AssociationClasse instances).&#xA;result.is(1,1)&#xA;result.type = association()&#xA;self.association().oclIsKindOf(AssociationClass)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="createLinkObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The output pin on which the newly created link object is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="classifier_not_abstract multiplicity classifier_not_association_class same_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="classifier_not_abstract" value="not classifier.isAbstract "/>
<details key="multiplicity" value="result.is(1,1)"/>
<details key="classifier_not_association_class" value="not classifier.oclIsKindOf(AssociationClass)"/>
<details key="same_type" value="result.type = classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A CreateObjectAction is an Action that creates an instance of the specified Classifier.&#xA;not classifier.isAbstract &#xA;result.is(1,1)&#xA;not classifier.oclIsKindOf(AssociationClass)&#xA;result.type = classifier&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="createObjectAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier to be instantiated.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="createObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the newly created object is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DataStoreNode is a CentralBufferNode for persistent data.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DataType is a type whose instances are identified only by their value.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/datatype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The attributes owned by the DataType.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true" eOpposite="#//Operation/datatype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operations owned by the DataType.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="zero_input_parameters edges decision_input_flow_incoming two_input_parameters incoming_outgoing_edges incoming_control_one_input_parameter parameters incoming_object_one_input_parameter"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="zero_input_parameters" value="(decisionInput&lt;>null and decisionInputFlow=null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;&#xA; decisionInput.inputParameters()->isEmpty()"/>
<details key="edges" value="let allEdges: Set(ActivityEdge) = incoming->union(outgoing) in&#xD;&#xA;let allRelevantEdges: Set(ActivityEdge) = if decisionInputFlow->notEmpty() then allEdges->excluding(decisionInputFlow) else allEdges endif in&#xD;&#xA;allRelevantEdges->forAll(oclIsKindOf(ControlFlow)) or allRelevantEdges->forAll(oclIsKindOf(ObjectFlow))&#xD;&#xA;"/>
<details key="decision_input_flow_incoming" value="incoming->includes(decisionInputFlow)"/>
<details key="two_input_parameters" value="(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;&#xA;&#x9;decisionInput.inputParameters()->size()=2"/>
<details key="incoming_outgoing_edges" value="(incoming->size() = 1 or incoming->size() = 2) and outgoing->size() > 0"/>
<details key="incoming_control_one_input_parameter" value="(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;&#xA;&#x9;decisionInput.inputParameters()->size()=1"/>
<details key="parameters" value="decisionInput&lt;>null implies &#xD;&#xA; (decisionInput.ownedParameter->forAll(par | &#xD;&#xA; par.direction &lt;> ParameterDirectionKind::out and &#xD;&#xA; par.direction &lt;> ParameterDirectionKind::inout ) and&#xD;&#xA; decisionInput.ownedParameter->one(par | &#xD;&#xA; par.direction &lt;> ParameterDirectionKind::return))&#xD;&#xA; "/>
<details key="incoming_object_one_input_parameter" value="(decisionInput&lt;>null and decisionInputFlow=null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;&#xA;&#x9;decisionInput.inputParameters()->size()=1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DecisionNode is a ControlNode that chooses between outgoing ActivityEdges for the routing of tokens.&#xA;(decisionInput&lt;>null and decisionInputFlow=null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xA; decisionInput.inputParameters()->isEmpty()&#xA;let allEdges: Set(ActivityEdge) = incoming->union(outgoing) in&#xA;let allRelevantEdges: Set(ActivityEdge) = if decisionInputFlow->notEmpty() then allEdges->excluding(decisionInputFlow) else allEdges endif in&#xA;allRelevantEdges->forAll(oclIsKindOf(ControlFlow)) or allRelevantEdges->forAll(oclIsKindOf(ObjectFlow))&#xA;&#xA;incoming->includes(decisionInputFlow)&#xA;(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xA;&#x9;decisionInput.inputParameters()->size()=2&#xA;(incoming->size() = 1 or incoming->size() = 2) and outgoing->size() > 0&#xA;(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xA;&#x9;decisionInput.inputParameters()->size()=1&#xA;decisionInput&lt;>null implies &#xA; (decisionInput.ownedParameter->forAll(par | &#xA; par.direction &lt;> ParameterDirectionKind::out and &#xA; par.direction &lt;> ParameterDirectionKind::inout ) and&#xA; decisionInput.ownedParameter->one(par | &#xA; par.direction &lt;> ParameterDirectionKind::return))&#xA; &#xA;(decisionInput&lt;>null and decisionInputFlow=null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xA;&#x9;decisionInput.inputParameters()->size()=1&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="decisionNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior that is executed to provide an input to guard ValueSpecifications on ActivityEdges outgoing from the DecisionNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decisionInputFlow" ordered="false"
eType="#//ObjectFlow">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="decisionNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An additional ActivityEdge incoming to the DecisionNode that provides a decision input value for the guards ValueSpecifications on ActivityEdges outgoing from the DecisionNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Dependency is a Relationship that signifies that a single model Element or a set of model Elements requires other model Elements for their specification or implementation. This means that the complete semantics of the client Element(s) are either semantically or structurally dependent on the definition of the supplier Element(s).&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true" transient="true"
derived="true" eOpposite="#//NamedElement/clientDependency.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Element(s) dependent on the supplier Element(s). In some cases (such as a trace Abstraction) the assignment of direction (that is, the designation of the client Element) is at the discretion of the modeler and is a stipulation.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="supplierDependency"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Element(s) on which the client Element(s) depend in some respect. The modeler may stipulate a sense of Dependency direction suitable for their domain.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A deployment is the allocation of an artifact or artifact instance to a deployment target.&#xA;A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"
upperBound="-1" eType="#//DeploymentSpecification" containment="true" eOpposite="#//DeploymentSpecification/deployment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specification of properties that parameterize the deployment and execution of one or more Artifacts.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"
upperBound="-1" eType="#//DeployedArtifact">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="deploymentForArtifact"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Artifacts that are deployed onto a Node. This association specializes the supplier association.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/supplier"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="location" ordered="false"
lowerBound="1" eType="#//DeploymentTarget" eOpposite="#//DeploymentTarget/deployment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The DeployedTarget which is the target of a Deployment.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/client #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="deployment_target deployed_elements"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="deployment_target" value="deployment->forAll (location.oclIsKindOf(ExecutionEnvironment))"/>
<details key="deployed_elements" value="deployment->forAll (location.deployedElement->forAll (oclIsKindOf(Component)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor.&#xA;deployment->forAll (location.oclIsKindOf(ExecutionEnvironment))&#xA;deployment->forAll (location.deployedElement->forAll (oclIsKindOf(Component)))&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
eType="#//Deployment" eOpposite="#//Deployment/configuration">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The deployment with which the DeploymentSpecification is associated.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address.'&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="executionLocation" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The location where a component Artifact executes. This may be a local or remote location.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A deployment target is the location for a deployed artifact.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eOperations name="deployedElement" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (deployment.deployedArtifact->select(oclIsKindOf(Artifact))->collect(oclAsType(Artifact).manifestation)->collect(utilizedElement)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for DeploymentTarget::/deployedElement&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="deploymentTarget"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
upperBound="-1" eType="#//Deployment" containment="true" eOpposite="#//Deployment/location">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Deployments for a DeploymentTarget.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency.1"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
upperBound="-1" eType="#//LinkEndDestructionData" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="destroyLinkAction"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The LinkEndData that the values of the Association ends for the links to be destroyed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkAction/endData"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DestroyLinkAction is a WriteLinkAction that destroys links (including link objects).&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DestroyObjectAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity no_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="target.is(1,1)"/>
<details key="no_type" value="target.type= null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DestroyObjectAction is an Action that destroys objects.&#xA;target.is(1,1)&#xA;target.type= null&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether links in which the object participates are destroyed along with the object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyOwnedObjects"
ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether objects owned by the object (via composition) are destroyed along with the object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="destroyObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin providing the object to be destroyed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DestructionOccurrenceSpecification"
eSuperTypes="#//MessageOccurrenceSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_occurrence_specifications_below"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_occurrence_specifications_below" value="let o : InteractionOperand = enclosingOperand in o->notEmpty() and &#xD;&#xA;let peerEvents : OrderedSet(OccurrenceSpecification) = covered.events->select(enclosingOperand = o)&#xD;&#xA;in peerEvents->last() = self"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DestructionOccurenceSpecification models the destruction of an object.&#xA;let o : InteractionOperand = enclosingOperand in o->notEmpty() and &#xA;let peerEvents : OrderedSet(OccurrenceSpecification) = covered.events->select(enclosingOperand = o)&#xA;in peerEvents->last() = self&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices).&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
eSuperTypes="#//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DirectedRelationship represents a relationship between a collection of source model Elements and a collection of target model Elements.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="directedRelationship"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the source Element(s) of the DirectedRelationship.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="directedRelationship"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the target Element(s) of the DirectedRelationship.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Duration" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_expr_requires_observation"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_expr_requires_observation" value="expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(DurationObservation)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Duration is a ValueSpecification that specifies the temporal distance between two time instants.&#xA;expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(DurationObservation)))&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="duration"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification that evaluates to the value of the Duration.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
upperBound="-1" eType="#//Observation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="duration"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the Observations that are involved in the computation of the Duration value&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DurationConstraint" eSuperTypes="#//IntervalConstraint">
<eAnnotations source="duplicates">
<eAnnotations source="specification">
<details key="eType" value="UML::DurationInterval"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="durationConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The DurationInterval constraining the duration.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="first_event_multiplicity has_one_or_two_constrainedElements"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="first_event_multiplicity" value="if (constrainedElement->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0) &#xD;&#xA;endif"/>
<details key="has_one_or_two_constrainedElements" value="constrainedElement->size() = 1 or constrainedElement->size()=2"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DurationConstraint is a Constraint that refers to a DurationInterval.&#xA;if (constrainedElement->size() = 2)&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0) &#xA;endif&#xA;constrainedElement->size() = 1 or constrainedElement->size()=2&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
upperBound="2" eType="#//BooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i].&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DurationInterval" eSuperTypes="#//Interval">
<eAnnotations source="duplicates">
<eAnnotations source="max">
<details key="eType" value="UML::Duration"/>
</eAnnotations>
<eAnnotations source="min">
<details key="eType" value="UML::Duration"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="durationInterval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the Duration denoting the maximum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/max"/>
</contents>
<contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="durationInterval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the Duration denoting the minimum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/min"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DurationInterval defines the range between two Durations.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DurationObservation" eSuperTypes="#//Observation">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="first_event_multiplicity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="first_event_multiplicity" value="if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)&#xD;&#xA;endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DurationObservation is a reference to a duration during an execution. It points out the NamedElement(s) in the model to observe and whether the observations are when this NamedElement is entered or when it is exited.&#xA;if (event->size() = 2)&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)&#xA;endif&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1" upperBound="2"
eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="durationObservation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The DurationObservation is determined as the duration between the entering or exiting of a single event Element during execution, or the entering/exiting of one event Element and the entering/exiting of a second.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
upperBound="2" eType="#//BooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i].&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="has_owner not_own_self"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="has_owner" value="mustBeOwned() implies owner->notEmpty()"/>
<details key="not_own_self" value="not allOwnedElements()->includes(self)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Element is a constituent of a model. As such, it has the capability of owning other Elements.&#xA;mustBeOwned() implies owner->notEmpty()&#xA;not allOwnedElements()->includes(self)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allOwnedElements() gives all of the direct and indirect ownedElements of an Element.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="mustBeOwned" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query mustBeOwned() indicates whether Elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedComment" ordered="false"
upperBound="-1" eType="#//Comment" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningElement"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Comments owned by this Element.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedElement" ordered="false"
upperBound="-1" eType="#//Element" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Element/owner">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Elements owned by this Element.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
eType="#//Element" changeable="false" volatile="true" transient="true" derived="true"
eOpposite="#//Element/ownedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Element that owns this Element.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="imported_element_is_public visibility_public_or_private"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="imported_element_is_public" value="importedElement.visibility &lt;> null implies importedElement.visibility = VisibilityKind::public"/>
<details key="visibility_public_or_private" value="visibility = VisibilityKind::public or visibility = VisibilityKind::private"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ElementImport identifies a NamedElement in a Namespace other than the one that owns that NamedElement and allows the NamedElement to be referenced using an unqualified name in the Namespace owning the ElementImport.&#xA;importedElement.visibility &lt;> null implies importedElement.visibility = VisibilityKind::public&#xA;visibility = VisibilityKind::public or visibility = VisibilityKind::private&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if alias->notEmpty() then&#xA; alias&#xA;else&#xA; importedElement.name&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the name that should be added to the importing Namespace in lieu of the name of the imported PackagableElement. The alias must not clash with any other member in the importing Namespace. By default, no alias is used.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
lowerBound="1" eType="#//PackageableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="import"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the PackageableElement whose name is to be added to a Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/elementImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that imports a PackageableElement from another Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the visibility of the imported PackageableElement within the importingNamespace, i.e., whether the importedElement will in turn be visible to other Namespaces. If the ElementImport is public, the importedElement will be visible outside the importingNamespace while, if the ElementImport is private, it will not.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
eSuperTypes="#//StructuredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An EncapsulatedClassifier may own Ports to specify typed interaction points.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="ownedPort" upperBound="-1" eType="#//Port">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedAttribute->select(oclIsKindOf(Port))->collect(oclAsType(Port))->asOrderedSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for EncapsulatedClassifier::/ownedPort : Port&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
upperBound="-1" eType="#//Port" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="encapsulatedClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Ports owned by the EncapsulatedClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//StructuredClassifier/ownedAttribute"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="immutable"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="immutable" value="ownedAttribute->forAll(isReadOnly)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Enumeration is a DataType whose values are enumerated in the model as EnumerationLiterals.&#xA;ownedAttribute->forAll(isReadOnly)&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedLiteral" upperBound="-1"
eType="#//EnumerationLiteral" containment="true" eOpposite="#//EnumerationLiteral/enumeration">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of literals owned by this Enumeration.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumerationLiteral" eSuperTypes="#//InstanceSpecification">
<eAnnotations source="duplicates">
<eAnnotations source="classifier">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="classifier" ordered="false" upperBound="-1"
eType="#//Enumeration" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="enumerationLiteral"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The classifier of this EnumerationLiteral derived to be equal to its Enumeration.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InstanceSpecification/classifier"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An EnumerationLiteral is a user-defined data value for an Enumeration.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="classifier" ordered="false" lowerBound="1" eType="#//Enumeration">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (enumeration)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation of Enumeration::/classifier&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="enumeration" ordered="false"
lowerBound="1" eType="#//Enumeration" eOpposite="#//Enumeration/ownedLiteral">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Enumeration that this EnumerationLiteral is a member of.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Event is the specification of some occurrence that may potentially trigger effects by an object.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="handler_body_edges output_pins one_input edge_source_target handler_body_owner exception_input_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="handler_body_edges" value="handlerBody.incoming->isEmpty() and handlerBody.outgoing->isEmpty() and exceptionInput.incoming->isEmpty()"/>
<details key="output_pins" value="(protectedNode.oclIsKindOf(Action) and protectedNode.oclAsType(Action).output->notEmpty()) implies&#xD;&#xA;(&#xD;&#xA; handlerBody.oclIsKindOf(Action) and &#xD;&#xA; let protectedNodeOutput : OrderedSet(OutputPin) = protectedNode.oclAsType(Action).output,&#xD;&#xA; handlerBodyOutput : OrderedSet(OutputPin) = handlerBody.oclAsType(Action).output in&#xD;&#xA; protectedNodeOutput->size() = handlerBodyOutput->size() and&#xD;&#xA; Sequence{1..protectedNodeOutput->size()}->forAll(i |&#xD;&#xA; &#x9;handlerBodyOutput->at(i).type.conformsTo(protectedNodeOutput->at(i).type) and&#xD;&#xA; &#x9;handlerBodyOutput->at(i).isOrdered=protectedNodeOutput->at(i).isOrdered and&#xD;&#xA; &#x9;handlerBodyOutput->at(i).compatibleWith(protectedNodeOutput->at(i)))&#xD;&#xA;)"/>
<details key="one_input" value="handlerBody.oclIsKindOf(Action) and&#xD;&#xA;let inputs: OrderedSet(InputPin) = handlerBody.oclAsType(Action).input in&#xD;&#xA;inputs->size()=1 and inputs->first()=exceptionInput"/>
<details key="edge_source_target" value="let nodes:Set(ActivityNode) = handlerBody.oclAsType(Action).allOwnedNodes() in&#xD;&#xA;nodes.outgoing->forAll(nodes->includes(target)) and&#xD;&#xA;nodes.incoming->forAll(nodes->includes(source))"/>
<details key="handler_body_owner" value="handlerBody.owner=protectedNode.owner"/>
<details key="exception_input_type" value="exceptionInput.type=null or &#xD;&#xA;exceptionType->forAll(conformsTo(exceptionInput.type.oclAsType(Classifier)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExceptionHandler is an Element that specifies a handlerBody ExecutableNode to execute in case the specified exception occurs during the execution of the protected ExecutableNode.&#xA;handlerBody.incoming->isEmpty() and handlerBody.outgoing->isEmpty() and exceptionInput.incoming->isEmpty()&#xA;(protectedNode.oclIsKindOf(Action) and protectedNode.oclAsType(Action).output->notEmpty()) implies&#xA;(&#xA; handlerBody.oclIsKindOf(Action) and &#xA; let protectedNodeOutput : OrderedSet(OutputPin) = protectedNode.oclAsType(Action).output,&#xA; handlerBodyOutput : OrderedSet(OutputPin) = handlerBody.oclAsType(Action).output in&#xA; protectedNodeOutput->size() = handlerBodyOutput->size() and&#xA; Sequence{1..protectedNodeOutput->size()}->forAll(i |&#xA; &#x9;handlerBodyOutput->at(i).type.conformsTo(protectedNodeOutput->at(i).type) and&#xA; &#x9;handlerBodyOutput->at(i).isOrdered=protectedNodeOutput->at(i).isOrdered and&#xA; &#x9;handlerBodyOutput->at(i).compatibleWith(protectedNodeOutput->at(i)))&#xA;)&#xA;handlerBody.oclIsKindOf(Action) and&#xA;let inputs: OrderedSet(InputPin) = handlerBody.oclAsType(Action).input in&#xA;inputs->size()=1 and inputs->first()=exceptionInput&#xA;let nodes:Set(ActivityNode) = handlerBody.oclAsType(Action).allOwnedNodes() in&#xA;nodes.outgoing->forAll(nodes->includes(target)) and&#xA;nodes.incoming->forAll(nodes->includes(source))&#xA;handlerBody.owner=protectedNode.owner&#xA;exceptionInput.type=null or &#xA;exceptionType->forAll(conformsTo(exceptionInput.type.oclAsType(Classifier)))&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"
lowerBound="1" eType="#//ObjectNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="exceptionHandler"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ObjectNode within the handlerBody. When the ExceptionHandler catches an exception, the exception token is placed on this ObjectNode, causing the handlerBody to execute.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="exceptionHandler"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers whose instances the ExceptionHandler catches as exceptions. If an exception occurs whose type is any exceptionType, the ExceptionHandler catches the exception and executes the handlerBody.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"
lowerBound="1" eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="exceptionHandler"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExecutableNode that is executed if the ExceptionHandler catches an exception.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"
lowerBound="1" eType="#//ExecutableNode" eOpposite="#//ExecutableNode/handler">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExecutableNode protected by the ExceptionHandler. If an exception propagates out of the protectedNode and has a type matching one of the exceptionTypes, then it is caught by this ExceptionHandler.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExecutableNode is an abstract class for ActivityNodes whose execution may be controlled using ControlFlows and to which ExceptionHandlers may be attached.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of ExceptionHandlers that are examined if an exception propagates out of the ExceptionNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExecutionOccurrenceSpecification represents moments in time at which Actions or Behaviors start or finish.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="execution" ordered="false"
lowerBound="1" eType="#//ExecutionSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="executionOccurrenceSpecification"/>
<details key="upper" value="2"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the execution specification describing the execution that is started or finished at this execution event.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionSpecification" abstract="true"
eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="same_lifeline"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="same_lifeline" value="start.covered = finish.covered"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExecutionSpecification is a specification of the execution of a unit of Behavior or Action within the Lifeline. The duration of an ExecutionSpecification is represented by two OccurrenceSpecifications, the start OccurrenceSpecification and the finish OccurrenceSpecification.&#xA;start.covered = finish.covered&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
lowerBound="1" eType="#//OccurrenceSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="executionSpecification"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the OccurrenceSpecification that designates the finish of the Action or Behavior.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
lowerBound="1" eType="#//OccurrenceSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="executionSpecification"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the OccurrenceSpecification that designates the start of the Action or Behavior.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="region_as_input_or_output"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="region_as_input_or_output" value="regionAsInput->notEmpty() xor regionAsOutput->notEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExpansionNode is an ObjectNode used to indicate a collection input or output for an ExpansionRegion. A collection input of an ExpansionRegion contains a collection that is broken into its individual elements inside the region, whose content is executed once per element. A collection output of an ExpansionRegion combines individual elements produced by the execution of the region into a collection for use outside the region.&#xA;regionAsInput->notEmpty() xor regionAsOutput->notEmpty()&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"
eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExpansionRegion for which the ExpansionNode is an input.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"
eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExpansionRegion for which the ExpansionNode is an output.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExpansionRegion is a StructuredActivityNode that executes its content multiple times corresponding to elements of input collection(s).&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"
lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExpansionNodes that hold the input collections for the ExpansionRegion.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" lowerBound="1"
eType="#//ExpansionKind" defaultValueLiteral="iterative">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The mode in which the ExpansionRegion executes its contents. If parallel, executions are concurrent. If iterative, executions are sequential. If stream, a stream of values flows into a single execution.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"
upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExpansionNodes that form the output collections of the ExpansionRegion.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands that are ValueSpecifications. It denotes a (possibly empty) set of values when evaluated in a context.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="expression"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a sequence of operand ValueSpecifications.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The symbol associated with this node in the expression tree.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="extension_points"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="extension_points" value="extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A relationship from an extending UseCase to an extended UseCase that specifies how and when the behavior defined in the extending UseCase can be inserted into the behavior defined in the extended UseCase.&#xA;extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
eType="#//Constraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extend"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the condition that must hold when the first ExtensionPoint is reached for the extension to take place. If no constraint is associated with the Extend relationship, the extension is unconditional.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
lowerBound="1" eType="#//UseCase">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extend"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCase that is being extended.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extend">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCase that represents the extension and owns the Extend relationship.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extensionLocation" lowerBound="1"
upperBound="-1" eType="#//ExtensionPoint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extension"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ordered list of ExtensionPoints belonging to the extended UseCase, specifying where the respective behavioral fragments of the extending UseCase are to be inserted. The first fragment in the extending UseCase is associated with the first extension point in the list, the second fragment with the second point, and so on. Note that, in most practical cases, the extending UseCase has just a single behavior fragment, so that the list of ExtensionPoints is trivial.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Association">
<eAnnotations source="duplicates">
<eAnnotations source="ownedEnd">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1" eType="#//ExtensionEnd"
containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extension"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the end of the extension that is typed by a Stereotype.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Association/ownedEnd"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="non_owned_end is_binary"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="non_owned_end" value="metaclassEnd()->notEmpty() and metaclassEnd().type.oclIsKindOf(Class)"/>
<details key="is_binary" value="memberEnd->size() = 2"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.&#xA;metaclassEnd()->notEmpty() and metaclassEnd().type.oclIsKindOf(Class)&#xA;memberEnd->size() = 2&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eOperations name="isRequired" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedEnd.lowerBound() = 1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="metaclass" ordered="false" lowerBound="1" eType="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (metaclassEnd().type.oclAsType(Class))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="metaclassEnd" ordered="false" lowerBound="1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (memberEnd->reject(p | ownedEnd->includes(p.oclAsType(ExtensionEnd)))->any(true))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRequired" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the value of the lower property of the ExtensionEnd referenced by Extension::ownedEnd; a lower value of 1 means that isRequired is true, but otherwise it is false. Since the default value of ExtensionEnd::lower is 0, the default value of isRequired is false.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="metaclass" ordered="false"
lowerBound="1" eType="#//Class" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Class/extension.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionEnd" eSuperTypes="#//Property">
<eAnnotations source="duplicates">
<eAnnotations source="type">
<details key="lowerBound" value="1"/>
<details key="eType" value="UML::Stereotype"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="lowerBound" ordered="false" eType="#//IntegerObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if lowerValue=null then 0 else lowerValue.integerValue() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/lowerBound"/>
</contents>
<contents xsi:type="ecore:EAttribute" name="lower" ordered="false" lowerBound="1"
eType="#//Integer" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/lower.1"/>
</contents>
<contents xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extensionEnd"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity aggregation"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="(lowerBound() = 0 or lowerBound() = 1) and upperBound() = 1"/>
<details key="aggregation" value="self.aggregation = AggregationKind::composite"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An extension end is used to tie an extension to a stereotype when extending a metaclass.&#xA;The default multiplicity of an extension end is 0..1.&#xA;(lowerBound() = 0 or lowerBound() = 1) and upperBound() = 1&#xA;self.aggregation = AggregationKind::composite&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="must_have_name"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="must_have_name" value="name->notEmpty ()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExtensionPoint identifies a point in the behavior of a UseCase where that behavior can be extended by the behavior of some other (extending) UseCase, as specified by an Extend relationship.&#xA;name->notEmpty ()&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extensionPoint">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCase that owns this ExtensionPoint.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//RedefinableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Feature declares a behavioral or structural characteristic of Classifiers.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="featuringClassifier" ordered="false"
eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Classifier/feature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifiers that have this Feature as a feature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether this Feature characterizes individual instances classified by the Classifier (false) or the Classifier itself (true).&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_outgoing_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_outgoing_edges" value="outgoing->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A FinalNode is an abstract ControlNode at which a flow in an Activity stops.&#xA;outgoing->isEmpty()&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_exit_behavior no_outgoing_transitions no_regions cannot_reference_submachine no_entry_behavior no_state_behavior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_exit_behavior" value="exit->isEmpty()"/>
<details key="no_outgoing_transitions" value="outgoing->size() = 0"/>
<details key="no_regions" value="region->size() = 0"/>
<details key="cannot_reference_submachine" value="submachine->isEmpty()"/>
<details key="no_entry_behavior" value="entry->isEmpty()"/>
<details key="no_state_behavior" value="doActivity->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A special kind of State, which, when entered, signifies that the enclosing Region has completed. If the enclosing Region is directly contained in a StateMachine and all other Regions in that StateMachine also are completed, then it means that the entire StateMachine behavior is completed.&#xA;exit->isEmpty()&#xA;outgoing->size() = 0&#xA;region->size() = 0&#xA;submachine->isEmpty()&#xA;entry->isEmpty()&#xA;doActivity->isEmpty()&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A FlowFinalNode is a FinalNode that terminates a flow by consuming the tokens offered to it.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="edges one_incoming_edge"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="edges" value="let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;&#xA;allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))&#xD;&#xA;"/>
<details key="one_incoming_edge" value="incoming->size()=1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ForkNode is a ControlNode that splits a flow into multiple concurrent flows.&#xA;let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xA;allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))&#xA;&#xA;incoming->size()=1&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionBehavior" eSuperTypes="#//OpaqueBehavior">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="one_output_parameter types_of_parameters"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="one_output_parameter" value="self.ownedParameter->&#xD;&#xA; select(p | p.direction = ParameterDirectionKind::out or p.direction= ParameterDirectionKind::inout or p.direction= ParameterDirectionKind::return)->size() >= 1"/>
<details key="types_of_parameters" value="ownedParameter->forAll(p | p.type &lt;> null and&#xD;&#xA; p.type.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p.type.oclAsType(DataType)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A FunctionBehavior is an OpaqueBehavior that does not access or modify any objects or other external data.&#xA;self.ownedParameter->&#xA; select(p | p.direction = ParameterDirectionKind::out or p.direction= ParameterDirectionKind::inout or p.direction= ParameterDirectionKind::return)->size() >= 1&#xA;ownedParameter->forAll(p | p.type &lt;> null and&#xA; p.type.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p.type.oclAsType(DataType)))&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eOperations name="hasAllDataTypeAttributes" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsKindOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type.oclAsType(DataType))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The hasAllDataTypeAttributes query tests whether the types of the attributes of the given DataType are all DataTypes, and similarly for all those DataTypes.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eParameters name="d" ordered="false" lowerBound="1" eType="#//DataType"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isDistinguishableFrom" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isDistinguishableFrom() specifies that two Gates may coexist in the same Namespace, without an explicit name property. The association end formalGate subsets ownedElement, and since the Gate name attribute&#xA;is optional, it is allowed to have two formal gates without an explicit name, but having derived names which are distinct.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/isDistinguishableFrom"/>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
<eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="actual_gate_matched inside_cf_matched outside_cf_matched formal_gate_distinguishable actual_gate_distinguishable outside_cf_gate_distinguishable inside_cf_gate_distinguishable"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="actual_gate_matched" value="interactionUse->notEmpty() implies interactionUse.refersTo.formalGate->select(matches(self))->size()=1"/>
<details key="inside_cf_matched" value="isInsideCF() implies combinedFragment.cfragmentGate->select(isOutsideCF() and matches(self))->size()=1"/>
<details key="outside_cf_matched" value="isOutsideCF() implies&#xD;&#xA; if self.combinedFragment.interactionOperator->asOrderedSet()->first() = InteractionOperatorKind::alt&#xD;&#xA; then self.combinedFragment.operand->forAll(op : InteractionOperand |&#xD;&#xA; self.combinedFragment.cfragmentGate->select(isInsideCF() and &#xD;&#xA; oppositeEnd().enclosingFragment()->includes(self.combinedFragment) and matches(self))->size()=1)&#xD;&#xA; else self.combinedFragment.cfragmentGate->select(isInsideCF() and matches(self))->size()=1&#xD;&#xA; endif"/>
<details key="formal_gate_distinguishable" value="isFormal() implies interaction.formalGate->select(getName() = self.getName())->size()=1"/>
<details key="actual_gate_distinguishable" value="isActual() implies interactionUse.actualGate->select(getName() = self.getName())->size()=1"/>
<details key="outside_cf_gate_distinguishable" value="isOutsideCF() implies combinedFragment.cfragmentGate->select(getName() = self.getName())->size()=1"/>
<details key="inside_cf_gate_distinguishable" value="isInsideCF() implies&#xD;&#xA;let selfOperand : InteractionOperand = self.getOperand() in&#xD;&#xA; combinedFragment.cfragmentGate->select(isInsideCF() and getName() = self.getName())->select(getOperand() = selfOperand)->size()=1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Gate is a MessageEnd which serves as a connection point for relating a Message which has a MessageEnd (sendEvent / receiveEvent) outside an InteractionFragment with another Message which has a MessageEnd (receiveEvent / sendEvent) inside that InteractionFragment.&#xA;interactionUse->notEmpty() implies interactionUse.refersTo.formalGate->select(matches(self))->size()=1&#xA;isInsideCF() implies combinedFragment.cfragmentGate->select(isOutsideCF() and matches(self))->size()=1&#xA;isOutsideCF() implies&#xA; if self.combinedFragment.interactionOperator->asOrderedSet()->first() = InteractionOperatorKind::alt&#xA; then self.combinedFragment.operand->forAll(op : InteractionOperand |&#xA; self.combinedFragment.cfragmentGate->select(isInsideCF() and &#xA; oppositeEnd().enclosingFragment()->includes(self.combinedFragment) and matches(self))->size()=1)&#xA; else self.combinedFragment.cfragmentGate->select(isInsideCF() and matches(self))->size()=1&#xA; endif&#xA;isFormal() implies interaction.formalGate->select(getName() = self.getName())->size()=1&#xA;isActual() implies interactionUse.actualGate->select(getName() = self.getName())->size()=1&#xA;isOutsideCF() implies combinedFragment.cfragmentGate->select(getName() = self.getName())->size()=1&#xA;isInsideCF() implies&#xA;let selfOperand : InteractionOperand = self.getOperand() in&#xA; combinedFragment.cfragmentGate->select(isInsideCF() and getName() = self.getName())->select(getOperand() = selfOperand)->size()=1&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if name->notEmpty() then name->asOrderedSet()->first()&#xD;&#xA;else if isActual() or isOutsideCF() &#xD;&#xA; then if isSend() &#xD;&#xA; then 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;&#xA; else 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;&#xA; endif&#xD;&#xA; else if isSend()&#xD;&#xA; then 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;&#xA; else 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;&#xA; endif&#xD;&#xA; endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns the name of the gate, either the explicit name (.name) or the constructed name ('out_&quot; or 'in_' concatenated in front of .message.name) if the explicit name is not present.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="getOperand" ordered="false" lowerBound="1" eType="#//InteractionOperand">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if isInsideCF() then&#xD;&#xA; let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;&#xA; if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;&#xA; then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;&#xA; in oppMOS.enclosingOperand->asOrderedSet()->first()&#xD;&#xA; else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;&#xA; in oppGate.combinedFragment.enclosingOperand->asOrderedSet()->first()&#xD;&#xA; endif&#xD;&#xA; else null&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If the Gate is an inside Combined Fragment Gate, this operation returns the InteractionOperand that the opposite end of this Gate is included within.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isActual" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (interactionUse->notEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns true value if this Gate is an actualGate of an InteractionUse.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isFormal" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (interaction->notEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns true if this Gate is a formalGate of an Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isInsideCF" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;&#xA;let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;&#xA;if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;&#xA;then let oppMOS : MessageOccurrenceSpecification&#xD;&#xA;= oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;&#xA;in combinedFragment = oppMOS.enclosingOperand.combinedFragment&#xD;&#xA;else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;&#xA;in combinedFragment = oppGate.combinedFragment.enclosingOperand.combinedFragment&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present) is inside of an InteractionOperator of the same CombinedFragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isOutsideCF" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;&#xA;let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;&#xA;if oppEnd.oclIsKindOf(MessageOccurrenceSpecification) &#xD;&#xA;then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;&#xA;in self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;&#xA; oppMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(oppMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;&#xA;else let oppGate : Gate = oppEnd.oclAsType(Gate) &#xD;&#xA;in self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;&#xA; oppGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(oppGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present) is outside of the same CombinedFragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="matches" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.getName() = gateToMatch.getName() and &#xD;&#xA;self.message.messageSort = gateToMatch.message.messageSort and&#xD;&#xA;self.message.name = gateToMatch.message.name and&#xD;&#xA;self.message.sendEvent->includes(self) implies gateToMatch.message.receiveEvent->includes(gateToMatch) and&#xD;&#xA;self.message.receiveEvent->includes(self) implies gateToMatch.message.sendEvent->includes(gateToMatch) and&#xD;&#xA;self.message.signature = gateToMatch.message.signature)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns true if the name of this Gate matches the name of the in parameter Gate, and the messages for the two Gates correspond. The Message for one Gate (say A) corresponds to the Message for another Gate (say B) if (A and B have the same name value) and (if A is a sendEvent then B is a receiveEvent) and (if A is a receiveEvent then B is a sendEvent) and (A and B have the same messageSort value) and (A and B have the same signature value).&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eParameters name="gateToMatch" ordered="false" lowerBound="1" eType="#//Gate"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="irreflexive_transitive_closure"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="irreflexive_transitive_closure" value="after->closure(toAfter.after)->excludes(before)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A GeneralOrdering represents a binary relation between two OccurrenceSpecifications, to describe that one OccurrenceSpecification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of OccurrenceSpecifications that may otherwise not have a specified order.&#xA;after->closure(toAfter.after)->excludes(before)&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toBefore">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="before" ordered="false"
lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toAfter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Generalization" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Generalization is a taxonomic relationship between a more general Classifier and a more specific Classifier. Each instance of the specific Classifier is also an instance of the general Classifier. The specific Classifier inherits the features of the more general Classifier. A Generalization is owned by the specific Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="generalization"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The general classifier in the Generalization relationship.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalizationSet" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/generalization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Represents a set of instances of Generalization. A Generalization may appear in many GeneralizationSets.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
eType="#//BooleanObject" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the specific Classifier can be used wherever the general Classifier can be used. If true, the execution traces of the specific Classifier shall be a superset of the execution traces of the general Classifier. If false, there is no such constraint on execution traces. If unset, the modeler has not stated whether there is such a constraint or not.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specific" ordered="false"
lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/generalization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specializing Classifier in the Generalization relationship.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="generalization_same_classifier maps_to_generalization_set"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="generalization_same_classifier" value="generalization->collect(general)->asSet()->size() &lt;= 1"/>
<details key="maps_to_generalization_set" value="powertype &lt;> null implies generalization->forAll( gen | &#xD;&#xA; not (gen.general = powertype) and not gen.general.allParents()->includes(powertype) and not (gen.specific = powertype) and not powertype.allParents()->includes(gen.specific)&#xD;&#xA; )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A GeneralizationSet is a PackageableElement whose instances represent sets of Generalization relationships.&#xA;generalization->collect(general)->asSet()->size() &lt;= 1&#xA;powertype &lt;> null implies generalization->forAll( gen | &#xA; not (gen.general = powertype) and not gen.general.allParents()->includes(powertype) and not (gen.specific = powertype) and not powertype.allParents()->includes(gen.specific)&#xA; )&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the instances of Generalization that are members of this GeneralizationSet.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the Classifier that is defined as the power type for the associated GeneralizationSet, if there is one.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Image" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Physical definition of a graphical image.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="content" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="format" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This indicates the format of the content, which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP. In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Include" eSuperTypes="#//NamedElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Include relationship specifies that a UseCase contains the behavior defined in another UseCase.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="addition" ordered="false"
lowerBound="1" eType="#//UseCase">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="include"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCase that is to be included.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="includingCase" ordered="false"
lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/include">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The UseCase which includes the addition and owns the Include relationship.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//PackageableElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="must_conform sources_and_targets_kind convey_classifiers"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="sources_and_targets_kind" value="(self.informationSource->forAll( sis |&#xD;&#xA; oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;&#xA; oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;&#xA; (oclIsKindOf(InstanceSpecification) and not sis.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship))))) &#xD;&#xA;&#xD;&#xA;and&#xD;&#xA;&#xD;&#xA;(self.informationTarget->forAll( sit | &#xD;&#xA; oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;&#xA; oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;&#xA;(oclIsKindOf(InstanceSpecification) and not sit.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship)))))"/>
<details key="convey_classifiers" value="self.conveyed->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InformationFlows describe circulation of information through a system in a general manner. They do not specify the nature of the information, mechanisms by which it is conveyed, sequences of exchange or any control conditions. During more detailed modeling, representation and realization links may be added to specify which model elements implement an InformationFlow and to show how information is conveyed. InformationFlows require some kind of “information channel” for unidirectional transmission of information items from sources to targets.  They specify the information channel’s realizations, if any, and identify the information that flows along them.  Information moving along the information channel may be represented by abstract InformationItems and by concrete Classifiers.&#xA;(self.informationSource->forAll( sis |&#xA; oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xA; oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xA; (oclIsKindOf(InstanceSpecification) and not sis.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship))))) &#xA;&#xA;and&#xA;&#xA;(self.informationTarget->forAll( sit | &#xA; oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xA; oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xA;(oclIsKindOf(InstanceSpecification) and not sit.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship)))))&#xA;self.conveyed->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface)&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="conveyingFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the information items that may circulate on this information flow.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="informationSource" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="informationFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Defines from which source the conveyed InformationItems are initiated.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="informationTarget" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="informationFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Defines to which target the conveyed InformationItems are directed.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
upperBound="-1" eType="#//Relationship">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="abstraction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines which Relationship will realize the specified flow.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realizingActivityEdge"
ordered="false" upperBound="-1" eType="#//ActivityEdge">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="informationFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines which ActivityEdges will realize the specified flow.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realizingConnector" ordered="false"
upperBound="-1" eType="#//Connector">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="informationFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines which Connectors will realize the specified flow.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realizingMessage" ordered="false"
upperBound="-1" eType="#//Message">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="informationFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines which Messages will realize the specified flow.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="sources_and_targets has_no not_instantiable"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="sources_and_targets" value="(self.represented->select(oclIsKindOf(InformationItem))->forAll(p |&#xD;&#xA; p.conveyingFlow.source->forAll(q | self.conveyingFlow.source->includes(q)) and&#xD;&#xA; p.conveyingFlow.target->forAll(q | self.conveyingFlow.target->includes(q)))) and&#xD;&#xA; (self.represented->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;&#xA; oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))"/>
<details key="has_no" value="self.generalization->isEmpty() and self.feature->isEmpty()"/>
<details key="not_instantiable" value="isAbstract"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InformationItems represent many kinds of information that can flow from sources to targets in very abstract ways.  They represent the kinds of information that may move within a system, but do not elaborate details of the transferred information.  Details of transferred information are the province of other Classifiers that may ultimately define InformationItems.  Consequently, InformationItems cannot be instantiated and do not themselves have features, generalizations, or associations. An important use of InformationItems is to represent information during early design stages, possibly before the detailed modeling decisions that will ultimately define them have been made. Another purpose of InformationItems is to abstract portions of complex models in less precise, but perhaps more general and communicable, ways. &#xA;(self.represented->select(oclIsKindOf(InformationItem))->forAll(p |&#xA; p.conveyingFlow.source->forAll(q | self.conveyingFlow.source->includes(q)) and&#xA; p.conveyingFlow.target->forAll(q | self.conveyingFlow.target->includes(q)))) and&#xA; (self.represented->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xA; oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))&#xA;self.generalization->isEmpty() and self.feature->isEmpty()&#xA;isAbstract&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="representation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers.&#xA;&lt;p>From package UML::InformationFlows.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_incoming_edges control_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_incoming_edges" value="incoming->isEmpty()"/>
<details key="control_edges" value="outgoing->forAll(oclIsKindOf(ControlFlow))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InitialNode is a ControlNode that offers a single control token when initially enabled.&#xA;incoming->isEmpty()&#xA;outgoing->forAll(oclIsKindOf(ControlFlow))&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="outgoing_edges_structured_only"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="outgoing_edges_structured_only" value="outgoing->notEmpty() implies&#xD;&#xA;&#x9;action&lt;>null and&#xD;&#xA;&#x9;action.oclIsKindOf(StructuredActivityNode) and&#xD;&#xA;&#x9;action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(outgoing.target)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin is a Pin that holds input values to be consumed by an Action.&#xA;outgoing->notEmpty() implies&#xA;&#x9;action&lt;>null and&#xA;&#x9;action.oclIsKindOf(StructuredActivityNode) and&#xA;&#x9;action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(outgoing.target)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//DeploymentTarget #//PackageableElement #//DeployedArtifact">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="deployment_artifact structural_feature defining_feature deployment_target"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="deployment_artifact" value="deploymentForArtifact->notEmpty() implies classifier->exists(oclIsKindOf(Artifact))"/>
<details key="structural_feature" value="classifier->forAll(c | (c.allSlottableFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))"/>
<details key="defining_feature" value="slot->forAll(s | classifier->exists (c | c.allSlottableFeatures()->includes (s.definingFeature)))"/>
<details key="deployment_target" value="deployment->notEmpty() implies classifier->exists(node | node.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p.type = node)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InstanceSpecification is a model element that represents an instance in a modeled system. An InstanceSpecification can act as a DeploymentTarget in a Deployment relationship, in the case that it represents an instance of a Node. It can also act as a DeployedArtifact, if it represents an instance of an Artifact.&#xA;deploymentForArtifact->notEmpty() implies classifier->exists(oclIsKindOf(Artifact))&#xA;classifier->forAll(c | (c.allSlottableFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))&#xA;slot->forAll(s | classifier->exists (c | c.allSlottableFeatures()->includes (s.definingFeature)))&#xA;deployment->notEmpty() implies classifier->exists(node | node.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p.type = node)))&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="instanceSpecification"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier or Classifiers of the represented instance. If multiple Classifiers are specified, the instance is classified by all of them.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="slot" ordered="false" upperBound="-1"
eType="#//Slot" containment="true" eOpposite="#//Slot/owningInstance">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Slot giving the value or values of a StructuralFeature of the instance. An InstanceSpecification can have one Slot per StructuralFeature of its Classifiers, including inherited features. It is not necessary to model a Slot for every StructuralFeature, in which case the InstanceSpecification is a partial description.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningInstanceSpec"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A specification of how to compute, derive, or construct the instance.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceValue" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InstanceValue is a ValueSpecification that identifies an instance.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="instance" ordered="false"
lowerBound="1" eType="#//InstanceSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="instanceValue"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InstanceSpecification that represents the specified value.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="not_contained"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="not_contained" value="enclosingInteraction->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Interaction is a unit of Behavior that focuses on the observable exchange of information between connectable elements.&#xA;enclosingInteraction->isEmpty()&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
upperBound="-1" eType="#//Action" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interaction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Actions owned by the Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interaction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of fragments in the Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the participants in this Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Messages contained in this Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="minint_maxint minint_non_negative maxint_positive dynamic_variables global_data maxint_greater_equal_minint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="minint_maxint" value="maxint->notEmpty() or minint->notEmpty() implies&#xD;&#xA;interactionOperand.combinedFragment.interactionOperator =&#xD;&#xA;InteractionOperatorKind::loop"/>
<details key="minint_non_negative" value="minint->notEmpty() implies &#xD;&#xA;minint->asSequence()->first().integerValue() >= 0"/>
<details key="maxint_positive" value="maxint->notEmpty() implies &#xD;&#xA;maxint->asSequence()->first().integerValue() > 0"/>
<details key="maxint_greater_equal_minint" value="maxint->notEmpty() implies (minint->notEmpty() and &#xD;&#xA;maxint->asSequence()->first().integerValue() >=&#xD;&#xA;minint->asSequence()->first().integerValue() )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InteractionConstraint is a Boolean expression that guards an operand in a CombinedFragment.&#xA;maxint->notEmpty() or minint->notEmpty() implies&#xA;interactionOperand.combinedFragment.interactionOperator =&#xA;InteractionOperatorKind::loop&#xA;minint->notEmpty() implies &#xA;minint->asSequence()->first().integerValue() >= 0&#xA;maxint->notEmpty() implies &#xA;maxint->asSequence()->first().integerValue() > 0&#xA;maxint->notEmpty() implies (minint->notEmpty() and &#xA;maxint->asSequence()->first().integerValue() >=&#xA;minint->asSequence()->first().integerValue() )&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The maximum number of iterations of a loop&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The minimum number of iterations of a loop&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionFragment" abstract="true"
eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InteractionFragment is an abstract notion of the most general interaction unit. An InteractionFragment is a piece of an Interaction. Each InteractionFragment is conceptually like an Interaction by itself.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
upperBound="-1" eType="#//Lifeline" eOpposite="#//Lifeline/coveredBy">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Lifelines that the InteractionFragment involves.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" ordered="false"
eType="#//Interaction" eOpposite="#//Interaction/fragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interaction enclosing this InteractionFragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
eType="#//InteractionOperand" eOpposite="#//InteractionOperand/fragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operand enclosing this InteractionFragment (they may nest recursively).&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionFragment"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The general ordering relationships contained in this fragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="guard_contain_references guard_directly_prior"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InteractionOperand is contained in a CombinedFragment. An InteractionOperand represents one operand of the expression given by the enclosing CombinedFragment.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The fragments of the operand.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
eType="#//InteractionConstraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionOperand"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Constraint of the operand.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionUse" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="gates_match arguments_are_constants returnValueRecipient_coverage arguments_correspond_to_parameters returnValue_type_recipient_correspondence all_lifelines"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="gates_match" value="actualGate->notEmpty() implies &#xD;&#xA;refersTo.formalGate->forAll( fg : Gate | self.actualGate->select(matches(fg))->size()=1) and&#xD;&#xA;self.actualGate->forAll(ag : Gate | refersTo.formalGate->select(matches(ag))->size()=1)"/>
<details key="returnValueRecipient_coverage" value="returnValueRecipient->asSet()->notEmpty() implies&#xD;&#xA;let covCE : Set(ConnectableElement) = covered.represents->asSet() in &#xD;&#xA;covCE->notEmpty() and let classes:Set(Classifier) = covCE.type.oclIsKindOf(Classifier).oclAsType(Classifier)->asSet() in &#xD;&#xA;let allProps : Set(Property) = classes.attribute->union(classes.allParents().attribute)->asSet() in &#xD;&#xA;allProps->includes(returnValueRecipient)"/>
<details key="returnValue_type_recipient_correspondence" value="returnValue.type->asSequence()->notEmpty() implies returnValue.type->asSequence()->first() = returnValueRecipient.type->asSequence()->first()&#xD;&#xA;"/>
<details key="all_lifelines" value="let parentInteraction : Set(Interaction) = enclosingInteraction->asSet()->&#xD;&#xA;union(enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;&#xA;parentInteraction->size()=1 and let refInteraction : Interaction = refersTo in&#xD;&#xA;parentInteraction.covered-> forAll(intLifeline : Lifeline | refInteraction.covered->&#xD;&#xA;forAll( refLifeline : Lifeline | refLifeline.represents = intLifeline.represents and &#xD;&#xA;(&#xD;&#xA;( refLifeline.selector.oclIsKindOf(LiteralString) implies&#xD;&#xA; intLifeline.selector.oclIsKindOf(LiteralString) and &#xD;&#xA; refLifeline.selector.oclAsType(LiteralString).value = intLifeline.selector.oclAsType(LiteralString).value ) and&#xD;&#xA;( refLifeline.selector.oclIsKindOf(LiteralInteger) implies&#xD;&#xA; intLifeline.selector.oclIsKindOf(LiteralInteger) and &#xD;&#xA; refLifeline.selector.oclAsType(LiteralInteger).value = intLifeline.selector.oclAsType(LiteralInteger).value )&#xD;&#xA;)&#xD;&#xA; implies self.covered->asSet()->includes(intLifeline)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InteractionUse refers to an Interaction. The InteractionUse is a shorthand for copying the contents of the referenced Interaction where the InteractionUse is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal Gates with the actual ones.&#xA;actualGate->notEmpty() implies &#xA;refersTo.formalGate->forAll( fg : Gate | self.actualGate->select(matches(fg))->size()=1) and&#xA;self.actualGate->forAll(ag : Gate | refersTo.formalGate->select(matches(ag))->size()=1)&#xA;returnValueRecipient->asSet()->notEmpty() implies&#xA;let covCE : Set(ConnectableElement) = covered.represents->asSet() in &#xA;covCE->notEmpty() and let classes:Set(Classifier) = covCE.type.oclIsKindOf(Classifier).oclAsType(Classifier)->asSet() in &#xA;let allProps : Set(Property) = classes.attribute->union(classes.allParents().attribute)->asSet() in &#xA;allProps->includes(returnValueRecipient)&#xA;returnValue.type->asSequence()->notEmpty() implies returnValue.type->asSequence()->first() = returnValueRecipient.type->asSequence()->first()&#xA;&#xA;let parentInteraction : Set(Interaction) = enclosingInteraction->asSet()->&#xA;union(enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xA;collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xA;parentInteraction->size()=1 and let refInteraction : Interaction = refersTo in&#xA;parentInteraction.covered-> forAll(intLifeline : Lifeline | refInteraction.covered->&#xA;forAll( refLifeline : Lifeline | refLifeline.represents = intLifeline.represents and &#xA;(&#xA;( refLifeline.selector.oclIsKindOf(LiteralString) implies&#xA; intLifeline.selector.oclIsKindOf(LiteralString) and &#xA; refLifeline.selector.oclAsType(LiteralString).value = intLifeline.selector.oclAsType(LiteralString).value ) and&#xA;( refLifeline.selector.oclIsKindOf(LiteralInteger) implies&#xA; intLifeline.selector.oclIsKindOf(LiteralInteger) and &#xA; refLifeline.selector.oclAsType(LiteralInteger).value = intLifeline.selector.oclAsType(LiteralInteger).value )&#xA;)&#xA; implies self.covered->asSet()->includes(intLifeline)))&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionUse"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The actual gates of the InteractionUse.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionUse"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The actual arguments of the Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
lowerBound="1" eType="#//Interaction">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionUse"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the Interaction that defines its meaning.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionUse"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of the executed Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnValueRecipient" ordered="false"
eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interactionUse"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The recipient of the return value.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="visibility"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="visibility" value="feature->forAll(visibility = VisibilityKind::public)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Interfaces declare coherent services that are implemented by BehavioredClassifiers that implement the Interfaces via InterfaceRealizations.&#xA;feature->forAll(visibility = VisibilityKind::public)&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
eType="#//Classifier" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interface"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References all the Classifiers that are defined (nested) within the Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The attributes (i.e., the Properties) owned by the Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true" eOpposite="#//Operation/interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operations owned by the Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
upperBound="-1" eType="#//Reception" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interface"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Receptions that objects providing this Interface are willing to accept.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
eType="#//ProtocolStateMachine" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interface"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a ProtocolStateMachine specifying the legal sequences of the invocation of the BehavioralFeatures described in the Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"
upperBound="-1" eType="#//Interface">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interface"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References all the Interfaces redefined by this Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/redefinedClassifier"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InterfaceRealization" eSuperTypes="#//Realization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InterfaceRealization is a specialized realization relationship between a BehavioredClassifier and an Interface. This relationship signifies that the realizing BehavioredClassifier conforms to the contract specified by the Interface.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
lowerBound="1" eType="#//Interface">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interfaceRealization"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Interface specifying the conformance contract.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/supplier"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"
ordered="false" lowerBound="1" eType="#//BehavioredClassifier" eOpposite="#//BehavioredClassifier/interfaceRealization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the BehavioredClassifier that owns this InterfaceRealization, i.e., the BehavioredClassifier that realizes the Interface to which it refers.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/client #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="interrupting_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="interrupting_edges" value="interruptingEdge->forAll(edge | &#xD;&#xA; node->includes(edge.source) and node->excludes(edge.target) and edge.target.containingActivity() = inActivity)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InterruptibleActivityRegion is an ActivityGroup that supports the termination of tokens flowing in the portions of an activity within it.&#xA;interruptingEdge->forAll(edge | &#xA; node->includes(edge.source) and node->excludes(edge.target) and edge.target.containingActivity() = inActivity)&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityEdges leaving the InterruptibleActivityRegion on which a traversing token will result in the termination of other tokens flowing in the InterruptibleActivityRegion.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ActivityNodes immediately contained in the InterruptibleActivityRegion.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Interval defines the range between two ValueSpecifications.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the ValueSpecification denoting the maximum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="interval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the ValueSpecification denoting the minimum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IntervalConstraint" eSuperTypes="#//Constraint">
<eAnnotations source="duplicates">
<eAnnotations source="specification">
<details key="eType" value="UML::Interval"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="intervalConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interval that specifies the condition of the IntervalConstraint.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An IntervalConstraint is a Constraint that is specified by an Interval.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InvocationAction" abstract="true" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InvocationAction is an abstract class for the various actions that request Behavior invocation.&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="invocationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPins that provide the argument values passed in the invocation request.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="onPort" ordered="false"
eType="#//Port">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="invocationAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="For CallOperationActions, SendSignalActions, and SendObjectActions, an optional Port of the target object through which the invocation request is sent.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="one_outgoing_edge incoming_object_flow"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="one_outgoing_edge" value="outgoing->size() = 1"/>
<details key="incoming_object_flow" value="if incoming->exists(oclIsKindOf(ObjectFlow)) then outgoing->forAll(oclIsKindOf(ObjectFlow))&#xD;&#xA;else outgoing->forAll(oclIsKindOf(ControlFlow))&#xD;&#xA;endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A JoinNode is a ControlNode that synchronizes multiple flows.&#xA;outgoing->size() = 1&#xA;if incoming->exists(oclIsKindOf(ObjectFlow)) then outgoing->forAll(oclIsKindOf(ObjectFlow))&#xA;else outgoing->forAll(oclIsKindOf(ControlFlow))&#xA;endif&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether incoming tokens having objects with the same identity are combined into one by the JoinNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="joinNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification giving the condition under which the JoinNode will offer a token on its outgoing ActivityEdge. If no joinSpec is specified, then the JoinNode will offer an outgoing token if tokens are offered on all of its incoming ActivityEdges (an &quot;and&quot; condition).&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="selector_specified interaction_uses_share_lifeline same_classifier selector_int_or_string"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="selector_specified" value=" self.selector->notEmpty() = (self.represents.oclIsKindOf(MultiplicityElement) and self.represents.oclAsType(MultiplicityElement).isMultivalued())"/>
<details key="interaction_uses_share_lifeline" value="let intUses : Set(InteractionUse) = interaction.interactionUse in &#xD;&#xA;intUses->forAll&#xD;&#xA;( iuse : InteractionUse | &#xD;&#xA;let usingInteraction : Set(Interaction) = iuse.enclosingInteraction->asSet()&#xD;&#xA;->union(&#xD;&#xA;iuse.enclosingOperand.combinedFragment->asSet()->closure(enclosingOperand.combinedFragment).enclosingInteraction->asSet()&#xD;&#xA; ) &#xD;&#xA;in&#xD;&#xA;let peerUses : Set(InteractionUse) = usingInteraction.fragment->select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;&#xA;->union(&#xD;&#xA;usingInteraction.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet()&#xD;&#xA;->closure(operand.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)).operand.fragment->&#xD;&#xA;select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;&#xA; )->excluding(iuse)&#xD;&#xA; in&#xD;&#xA;peerUses->forAll( peerUse : InteractionUse |&#xD;&#xA; peerUse.refersTo.lifeline->forAll( l : Lifeline | (l.represents = self.represents and &#xD;&#xA; ( self.selector.oclIsKindOf(LiteralString) implies&#xD;&#xA; l.selector.oclIsKindOf(LiteralString) and &#xD;&#xA; self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;&#xA; and &#xD;&#xA;( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;&#xA; l.selector.oclIsKindOf(LiteralInteger) and &#xD;&#xA; self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;&#xA;) &#xD;&#xA;implies&#xD;&#xA; usingInteraction.lifeline->exists(represents = self.represents and&#xD;&#xA; ( self.selector.oclIsKindOf(LiteralString) implies&#xD;&#xA; l.selector.oclIsKindOf(LiteralString) and &#xD;&#xA; self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;&#xA;and &#xD;&#xA;( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;&#xA; l.selector.oclIsKindOf(LiteralInteger) and &#xD;&#xA; self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;&#xA;)&#xD;&#xA; )&#xD;&#xA; )&#xD;&#xA;)"/>
<details key="same_classifier" value="represents.namespace->closure(namespace)->includes(interaction._'context')"/>
<details key="selector_int_or_string" value="self.selector->notEmpty() implies &#xD;&#xA;self.selector.oclIsKindOf(LiteralInteger) or &#xD;&#xA;self.selector.oclIsKindOf(LiteralString)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Lifeline represents an individual participant in the Interaction. While parts and structural features may have multiplicity greater than 1, Lifelines represent only one interacting entity.&#xA; self.selector->notEmpty() = (self.represents.oclIsKindOf(MultiplicityElement) and self.represents.oclAsType(MultiplicityElement).isMultivalued())&#xA;let intUses : Set(InteractionUse) = interaction.interactionUse in &#xA;intUses->forAll&#xA;( iuse : InteractionUse | &#xA;let usingInteraction : Set(Interaction) = iuse.enclosingInteraction->asSet()&#xA;->union(&#xA;iuse.enclosingOperand.combinedFragment->asSet()->closure(enclosingOperand.combinedFragment).enclosingInteraction->asSet()&#xA; ) &#xA;in&#xA;let peerUses : Set(InteractionUse) = usingInteraction.fragment->select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xA;->union(&#xA;usingInteraction.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet()&#xA;->closure(operand.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)).operand.fragment->&#xA;select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xA; )->excluding(iuse)&#xA; in&#xA;peerUses->forAll( peerUse : InteractionUse |&#xA; peerUse.refersTo.lifeline->forAll( l : Lifeline | (l.represents = self.represents and &#xA; ( self.selector.oclIsKindOf(LiteralString) implies&#xA; l.selector.oclIsKindOf(LiteralString) and &#xA; self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xA; and &#xA;( self.selector.oclIsKindOf(LiteralInteger) implies&#xA; l.selector.oclIsKindOf(LiteralInteger) and &#xA; self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xA;) &#xA;implies&#xA; usingInteraction.lifeline->exists(represents = self.represents and&#xA; ( self.selector.oclIsKindOf(LiteralString) implies&#xA; l.selector.oclIsKindOf(LiteralString) and &#xA; self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xA;and &#xA;( self.selector.oclIsKindOf(LiteralInteger) implies&#xA; l.selector.oclIsKindOf(LiteralInteger) and &#xA; self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xA;)&#xA; )&#xA; )&#xA;)&#xA;represents.namespace->closure(namespace)->includes(interaction._'context')&#xA;self.selector->notEmpty() implies &#xA;self.selector.oclIsKindOf(LiteralInteger) or &#xA;self.selector.oclIsKindOf(LiteralString)&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
upperBound="-1" eType="#//InteractionFragment" eOpposite="#//InteractionFragment/covered">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the InteractionFragments in which this Lifeline takes part.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
eType="#//PartDecomposition">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lifeline"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Interaction that represents the decomposition.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/lifeline">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Interaction enclosing this Lifeline.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
eType="#//ConnectableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lifeline"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the ConnectableElement within the classifier that contains the enclosing interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="selector" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lifeline"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkAction" abstract="true" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="same_pins same_association not_static"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="same_pins" value="inputValue->asBag()=endData.allPins()"/>
<details key="same_association" value="endData.end = self.association().memberEnd->asBag()"/>
<details key="not_static" value="endData->forAll(not end.isStatic)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="LinkAction is an abstract class for all Actions that identify the links to be acted on using LinkEndData.&#xA;inputValue->asBag()=endData.allPins()&#xA;endData.end = self.association().memberEnd->asBag()&#xA;endData->forAll(not end.isStatic)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="association" ordered="false" lowerBound="1" eType="#//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (endData->asSequence()->first().end.association)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns the Association acted on by this LinkAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="endData" ordered="false"
lowerBound="2" upperBound="-1" eType="#//LinkEndData" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkAction"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The LinkEndData identifying the values on the ends of the links acting on by this LinkAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
lowerBound="1" upperBound="-1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InputPins used by the LinkEndData of the LinkAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkEndCreationData" eSuperTypes="#//LinkEndData">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="allPins" ordered="false" unique="false"
upperBound="-1" eType="#//InputPin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.LinkEndData::allPins()->including(insertAt))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Adds the insertAt InputPin (if any) to the set of all Pins.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkEndData/allPins"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="insertAt_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="insertAt_pin" value="if not end.isOrdered&#xA;then insertAt = null&#xA;else&#xA;&#x9;not isReplaceAll=false implies&#xA;&#x9;insertAt &lt;> null and insertAt->forAll(type=UnlimitedNatural and is(1,1))&#xA;endif&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="LinkEndCreationData is LinkEndData used to provide values for one end of a link to be created by a CreateLinkAction.&#xA;if not end.isOrdered&#xA;then insertAt = null&#xA;else&#xA;&#x9;not isReplaceAll=false implies&#xA;&#x9;insertAt &lt;> null and insertAt->forAll(type=UnlimitedNatural and is(1,1))&#xA;endif&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
eType="#//InputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkEndCreationData"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="For ordered Association ends, the InputPin that provides the position where the new link should be inserted or where an existing link should be moved to. The type of the insertAt InputPin is UnlimitedNatural, but the input cannot be zero. It is omitted for Association ends that are not ordered.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkEndData" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="same_type multiplicity end_object_input_pin property_is_association_end qualifiers"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="same_type" value="value&lt;>null implies value.type.conformsTo(end.type)"/>
<details key="multiplicity" value="value&lt;>null implies value.is(1,1)"/>
<details key="end_object_input_pin" value="value->excludesAll(qualifier.value)"/>
<details key="property_is_association_end" value="end.association &lt;> null"/>
<details key="qualifiers" value="end.qualifier->includesAll(qualifier.qualifier)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="LinkEndData is an Element that identifies on end of a link to be read or written by a LinkAction. As a link (that is not a link object) cannot be passed as a runtime value to or from an Action, it is instead identified by its end objects and qualifier values, if any. A LinkEndData instance provides these values for a single Association end.&#xA;value&lt;>null implies value.type.conformsTo(end.type)&#xA;value&lt;>null implies value.is(1,1)&#xA;value->excludesAll(qualifier.value)&#xA;end.association &lt;> null&#xA;end.qualifier->includesAll(qualifier.qualifier)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="allPins" ordered="false" unique="false" upperBound="-1" eType="#//InputPin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value->asBag()->union(qualifier.value))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns all the InputPins referenced by this LinkEndData. By default this includes the value and qualifier InputPins, but subclasses may override the operation to add other InputPins.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkEndData"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Association end for which this LinkEndData specifies values.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
upperBound="-1" eType="#//QualifierValue" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkEndData"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of QualifierValues used to provide values for the qualifiers of the end.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
eType="#//InputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkEndData"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the specified value for the given end. This InputPin is omitted if the LinkEndData specifies the &quot;open&quot; end for a ReadLinkAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkEndDestructionData" eSuperTypes="#//LinkEndData">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="allPins" ordered="false" unique="false"
upperBound="-1" eType="#//InputPin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.LinkEndData::allPins()->including(destroyAt))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Adds the destroyAt InputPin (if any) to the set of all Pins.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkEndData/allPins"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="destroyAt_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="destroyAt_pin" value="if not end.isOrdered or end.isUnique or isDestroyDuplicates&#xD;&#xA;then destroyAt = null&#xD;&#xA;else&#xD;&#xA;&#x9;destroyAt &lt;> null and &#xD;&#xA;&#x9;destroyAt->forAll(type=UnlimitedNatural and is(1,1))&#xD;&#xA;endif&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="LinkEndDestructionData is LinkEndData used to provide values for one end of a link to be destroyed by a DestroyLinkAction.&#xA;if not end.isOrdered or end.isUnique or isDestroyDuplicates&#xA;then destroyAt = null&#xA;else&#xA;&#x9;destroyAt &lt;> null and &#xA;&#x9;destroyAt->forAll(type=UnlimitedNatural and is(1,1))&#xA;endif&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="destroyAt" ordered="false"
eType="#//InputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="linkEndDestructionData"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the position of an existing link to be destroyed in an ordered, nonunique Association end. The type of the destroyAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyDuplicates" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether to destroy duplicates of the value in nonunique Association ends.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="booleanValue" ordered="false" eType="#//BooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query booleanValue() gives the value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/booleanValue"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralBoolean is a specification of a Boolean value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specified Boolean value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralInteger" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="integerValue" ordered="false" eType="#//IntegerObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query integerValue() gives the value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/integerValue"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralInteger is a specification of an Integer value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
lowerBound="1" eType="#//Integer" defaultValueLiteral="0">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specified Integer value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isNull" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isNull() returns true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isNull"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralNull specifies the lack of a value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralReal" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
<contents xsi:type="ecore:EOperation" name="realValue" ordered="false" eType="#//RealObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query realValue() gives the value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/realValue"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralReal is a specification of a Real value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
lowerBound="1" eType="#//Real">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specified Real value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"
eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralSpecification identifies a literal constant being modeled.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
<contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query stringValue() gives the value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralString is a specification of a String value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specified String value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() is redefined to be true.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
</contents>
<contents xsi:type="ecore:EOperation" name="unlimitedValue" ordered="false"
eType="#//UnlimitedNaturalObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (value)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query unlimitedValue() gives the value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/unlimitedValue"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LiteralUnlimitedNatural is a specification of an UnlimitedNatural number.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
lowerBound="1" eType="#//UnlimitedNatural" defaultValueLiteral="0">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specified UnlimitedNatural value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="allActions" ordered="false" upperBound="-1"
eType="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return only this LoopNode. This prevents Actions within the LoopNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Action/allActions #//StructuredActivityNode/%duplicates%/allActions"/>
</contents>
<contents xsi:type="ecore:EOperation" name="sourceNodes" ordered="false" upperBound="-1"
eType="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.StructuredActivityNode::sourceNodes()->union(loopVariable))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the loopVariable OutputPins in addition to other source nodes for the LoopNode as a StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredActivityNode/sourceNodes"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="result_no_incoming input_edges executable_nodes body_output_pins setup_test_and_body matching_output_pins matching_loop_variables matching_result_pins loop_variable_outgoing"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="result_no_incoming" value="result.incoming->isEmpty()"/>
<details key="input_edges" value="loopVariableInput.outgoing->isEmpty()"/>
<details key="executable_nodes" value="setupPart->union(test)->union(bodyPart)=node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->asSet()"/>
<details key="body_output_pins" value="bodyPart.oclAsType(Action).allActions().output->includesAll(bodyOutput)"/>
<details key="setup_test_and_body" value="setupPart->intersection(test)->isEmpty() and&#xD;&#xA;setupPart->intersection(bodyPart)->isEmpty() and&#xD;&#xA;test->intersection(bodyPart)->isEmpty()"/>
<details key="matching_output_pins" value="bodyOutput->size()=loopVariable->size() and&#xD;&#xA;Sequence{1..loopVariable->size()}->forAll(i |&#xD;&#xA;&#x9;bodyOutput->at(i).type.conformsTo(loopVariable->at(i).type) and&#xD;&#xA;&#x9;bodyOutput->at(i).isOrdered = loopVariable->at(i).isOrdered and&#xD;&#xA;&#x9;bodyOutput->at(i).isUnique = loopVariable->at(i).isUnique and&#xD;&#xA;&#x9;loopVariable->at(i).includesMultiplicity(bodyOutput->at(i)))"/>
<details key="matching_loop_variables" value="loopVariableInput->size()=loopVariable->size() and&#xD;&#xA;loopVariableInput.type=loopVariable.type and&#xD;&#xA;loopVariableInput.isUnique=loopVariable.isUnique and&#xD;&#xA;loopVariableInput.lower=loopVariable.lower and&#xD;&#xA;loopVariableInput.upper=loopVariable.upper"/>
<details key="matching_result_pins" value="result->size()=loopVariable->size() and&#xD;&#xA;result.type=loopVariable.type and&#xD;&#xA;result.isUnique=loopVariable.isUnique and&#xD;&#xA;result.lower=loopVariable.lower and&#xD;&#xA;result.upper=loopVariable.upper"/>
<details key="loop_variable_outgoing" value="allOwnedNodes()->includesAll(loopVariable.outgoing.target)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LoopNode is a StructuredActivityNode that represents an iterative loop with setup, test, and body sections.&#xA;result.incoming->isEmpty()&#xA;loopVariableInput.outgoing->isEmpty()&#xA;setupPart->union(test)->union(bodyPart)=node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->asSet()&#xA;bodyPart.oclAsType(Action).allActions().output->includesAll(bodyOutput)&#xA;setupPart->intersection(test)->isEmpty() and&#xA;setupPart->intersection(bodyPart)->isEmpty() and&#xA;test->intersection(bodyPart)->isEmpty()&#xA;bodyOutput->size()=loopVariable->size() and&#xA;Sequence{1..loopVariable->size()}->forAll(i |&#xA;&#x9;bodyOutput->at(i).type.conformsTo(loopVariable->at(i).type) and&#xA;&#x9;bodyOutput->at(i).isOrdered = loopVariable->at(i).isOrdered and&#xA;&#x9;bodyOutput->at(i).isUnique = loopVariable->at(i).isUnique and&#xA;&#x9;loopVariable->at(i).includesMultiplicity(bodyOutput->at(i)))&#xA;loopVariableInput->size()=loopVariable->size() and&#xA;loopVariableInput.type=loopVariable.type and&#xA;loopVariableInput.isUnique=loopVariable.isUnique and&#xA;loopVariableInput.lower=loopVariable.lower and&#xA;loopVariableInput.upper=loopVariable.upper&#xA;result->size()=loopVariable->size() and&#xA;result.type=loopVariable.type and&#xA;result.isUnique=loopVariable.isUnique and&#xA;result.lower=loopVariable.lower and&#xA;result.upper=loopVariable.upper&#xA;allOwnedNodes()->includesAll(loopVariable.outgoing.target)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
eType="#//OutputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins on Actions within the bodyPart, the values of which are moved to the loopVariable OutputPins after the completion of each execution of the bodyPart, before the next iteration of the loop begins or before the loop exits.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
upperBound="-1" eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of ExecutableNodes that perform the repetitive computations of the loop. The bodyPart is executed as long as the test section produces a true value.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
lowerBound="1" eType="#//OutputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OutputPin on an Action in the test section whose Boolean value determines whether to continue executing the loop bodyPart.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the test is performed before the first execution of the bodyPart. If false, the bodyPart is executed once before the test is performed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A list of OutputPins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are moved to the result OutputPins of the loop.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A list of InputPins whose values are moved into the loopVariable Pins before the first iteration of the loop.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredActivityNode/structuredNodeInput"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A list of OutputPins that receive the loopVariable values after the last iteration of the loop and constitute the output of the LoopNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredActivityNode/structuredNodeOutput"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
upperBound="-1" eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of ExecutableNodes executed before the first iteration of the loop, in order to initialize values or perform other setup computations.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" lowerBound="1"
upperBound="-1" eType="#//ExecutableNode">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of ExecutableNodes executed in order to provide the test result for the loop.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A manifestation is the concrete physical rendering of one or more model elements by an artifact.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"
lowerBound="1" eType="#//PackageableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="manifestation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The model element that is utilized in the manifestation in an Artifact.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/supplier"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="one_outgoing_edge edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="one_outgoing_edge" value="outgoing->size()=1"/>
<details key="edges" value="let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;&#xA;allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows.&#xA;outgoing->size()=1&#xA;let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xA;allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))&#xA;&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isDistinguishableFrom" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isDistinguishableFrom() specifies that any two Messages may coexist in the same Namespace, regardless of their names.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/isDistinguishableFrom"/>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
<eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="sending_receiving_message_event arguments cannot_cross_boundaries signature_is_signal occurrence_specifications signature_refer_to signature_is_operation_request signature_is_operation_reply"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="sending_receiving_message_event" value="receiveEvent.oclIsKindOf(MessageOccurrenceSpecification)&#xD;&#xA;implies&#xD;&#xA;let f : Lifeline = sendEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered in&#xD;&#xA;f = receiveEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered implies&#xD;&#xA;f.events->indexOf(sendEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() ) &lt; &#xD;&#xA;f.events->indexOf(receiveEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() )"/>
<details key="cannot_cross_boundaries" value="sendEvent->notEmpty() and receiveEvent->notEmpty() implies&#xD;&#xA;let sendEnclosingFrag : Set(InteractionFragment) = &#xD;&#xA;sendEvent->asOrderedSet()->first().enclosingFragment()&#xD;&#xA;in &#xD;&#xA;let receiveEnclosingFrag : Set(InteractionFragment) = &#xD;&#xA;receiveEvent->asOrderedSet()->first().enclosingFragment()&#xD;&#xA;in sendEnclosingFrag = receiveEnclosingFrag"/>
<details key="signature_is_signal" value="(messageSort = MessageSort::asynchSignal ) and signature.oclIsKindOf(Signal) implies&#xD;&#xA; let signalAttributes : OrderedSet(Property) = signature.oclAsType(Signal).inheritedMember()->&#xD;&#xA; select(n:NamedElement | n.oclIsTypeOf(Property))->collect(oclAsType(Property))->asOrderedSet()&#xD;&#xA; in signalAttributes->size() = self.argument->size()&#xD;&#xA; and self.argument->forAll( o: ValueSpecification |&#xD;&#xA; not (o.oclIsKindOf(Expression)&#xD;&#xA; and o.oclAsType(Expression).symbol->size()=0&#xD;&#xA; and o.oclAsType(Expression).operand->isEmpty() ) implies&#xD;&#xA; let p : Property = signalAttributes->at(self.argument->indexOf(o))&#xD;&#xA; in o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier)))&#xD;&#xA;"/>
<details key="signature_refer_to" value="signature->notEmpty() implies &#xD;&#xA;((signature.oclIsKindOf(Operation) and &#xD;&#xA;(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall or messageSort = MessageSort::reply) &#xD;&#xA;) or (signature.oclIsKindOf(Signal) and messageSort = MessageSort::asynchSignal )&#xD;&#xA; ) and name = signature.name"/>
<details key="signature_is_operation_request" value="(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall) and signature.oclIsKindOf(Operation) implies &#xD;&#xA; let requestParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;&#xA; select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::_'in' )&#xD;&#xA;in requestParms->size() = self.argument->size() and&#xD;&#xA;self.argument->forAll( o: ValueSpecification | &#xD;&#xA;not (o.oclIsKindOf(Expression) and o.oclAsType(Expression).symbol->size()=0 and o.oclAsType(Expression).operand->isEmpty() ) implies &#xD;&#xA;let p : Parameter = requestParms->at(self.argument->indexOf(o)) in&#xD;&#xA;o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;&#xA;)"/>
<details key="signature_is_operation_reply" value="(messageSort = MessageSort::reply) and signature.oclIsKindOf(Operation) implies &#xD;&#xA; let replyParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;&#xA;select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::return)&#xD;&#xA;in replyParms->size() = self.argument->size() and&#xD;&#xA;self.argument->forAll( o: ValueSpecification | o.oclIsKindOf(Expression) and let e : Expression = o.oclAsType(Expression) in&#xD;&#xA;e.operand->notEmpty() implies &#xD;&#xA;let p : Parameter = replyParms->at(self.argument->indexOf(o)) in&#xD;&#xA;e.operand->asSequence()->first().type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Message defines a particular communication between Lifelines of an Interaction.&#xA;receiveEvent.oclIsKindOf(MessageOccurrenceSpecification)&#xA;implies&#xA;let f : Lifeline = sendEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered in&#xA;f = receiveEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered implies&#xA;f.events->indexOf(sendEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() ) &lt; &#xA;f.events->indexOf(receiveEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() )&#xA;sendEvent->notEmpty() and receiveEvent->notEmpty() implies&#xA;let sendEnclosingFrag : Set(InteractionFragment) = &#xA;sendEvent->asOrderedSet()->first().enclosingFragment()&#xA;in &#xA;let receiveEnclosingFrag : Set(InteractionFragment) = &#xA;receiveEvent->asOrderedSet()->first().enclosingFragment()&#xA;in sendEnclosingFrag = receiveEnclosingFrag&#xA;(messageSort = MessageSort::asynchSignal ) and signature.oclIsKindOf(Signal) implies&#xA; let signalAttributes : OrderedSet(Property) = signature.oclAsType(Signal).inheritedMember()->&#xA; select(n:NamedElement | n.oclIsTypeOf(Property))->collect(oclAsType(Property))->asOrderedSet()&#xA; in signalAttributes->size() = self.argument->size()&#xA; and self.argument->forAll( o: ValueSpecification |&#xA; not (o.oclIsKindOf(Expression)&#xA; and o.oclAsType(Expression).symbol->size()=0&#xA; and o.oclAsType(Expression).operand->isEmpty() ) implies&#xA; let p : Property = signalAttributes->at(self.argument->indexOf(o))&#xA; in o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier)))&#xA;&#xA;signature->notEmpty() implies &#xA;((signature.oclIsKindOf(Operation) and &#xA;(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall or messageSort = MessageSort::reply) &#xA;) or (signature.oclIsKindOf(Signal) and messageSort = MessageSort::asynchSignal )&#xA; ) and name = signature.name&#xA;(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall) and signature.oclIsKindOf(Operation) implies &#xA; let requestParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xA; select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::_'in' )&#xA;in requestParms->size() = self.argument->size() and&#xA;self.argument->forAll( o: ValueSpecification | &#xA;not (o.oclIsKindOf(Expression) and o.oclAsType(Expression).symbol->size()=0 and o.oclAsType(Expression).operand->isEmpty() ) implies &#xA;let p : Parameter = requestParms->at(self.argument->indexOf(o)) in&#xA;o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xA;)&#xA;(messageSort = MessageSort::reply) and signature.oclIsKindOf(Operation) implies &#xA; let replyParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xA;select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::return)&#xA;in replyParms->size() = self.argument->size() and&#xA;self.argument->forAll( o: ValueSpecification | o.oclIsKindOf(Expression) and let e : Expression = o.oclAsType(Expression) in&#xA;e.operand->notEmpty() implies &#xA;let p : Parameter = replyParms->at(self.argument->indexOf(o)) in&#xA;e.operand->asSequence()->first().type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xA;)&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eOperations name="messageKind" ordered="false" lowerBound="1" eType="#//MessageKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (messageKind)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns the MessageKind value for this Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="message"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The arguments of the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
eType="#//Connector">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="message"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Connector on which this Message is sent.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/message">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The enclosing Interaction owning the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
lowerBound="1" eType="#//MessageKind" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The derived kind of the Message (complete, lost, found, or unknown).&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
lowerBound="1" eType="#//MessageSort" defaultValueLiteral="synchCall">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The sort of communication reflected by the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
eType="#//MessageEnd">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="endMessage"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Receiving of the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
eType="#//MessageEnd">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="endMessage"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Sending of the Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="message"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The signature of the Message is the specification of its content. It refers either an Operation or a Signal.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eOperations name="enclosingFragment" ordered="false" upperBound="-1" eType="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if self->select(oclIsKindOf(Gate))->notEmpty() &#xD;&#xA;then -- it is a Gate&#xD;&#xA;let endGate : Gate = &#xD;&#xA; self->select(oclIsKindOf(Gate)).oclAsType(Gate)->asOrderedSet()->first()&#xD;&#xA; in&#xD;&#xA; if endGate.isOutsideCF() &#xD;&#xA; then endGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(endGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;&#xA; else if endGate.isInsideCF() &#xD;&#xA; then endGate.combinedFragment.oclAsType(InteractionFragment)->asSet()&#xD;&#xA; else if endGate.isFormal() &#xD;&#xA; then endGate.interaction.oclAsType(InteractionFragment)->asSet()&#xD;&#xA; else if endGate.isActual() &#xD;&#xA; then endGate.interactionUse.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;&#xA; union(endGate.interactionUse.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;&#xA; else null&#xD;&#xA; endif&#xD;&#xA; endif&#xD;&#xA; endif&#xD;&#xA; endif&#xD;&#xA;else -- it is a MessageOccurrenceSpecification&#xD;&#xA;let endMOS : MessageOccurrenceSpecification = &#xD;&#xA; self->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() &#xD;&#xA; in&#xD;&#xA; if endMOS.enclosingInteraction->notEmpty() &#xD;&#xA; then endMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()&#xD;&#xA; else endMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet()&#xD;&#xA; endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns a set including the enclosing InteractionFragment this MessageEnd is enclosed within.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isReceive" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (message.receiveEvent->asSet()->includes(self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns value true if this MessageEnd is a receiveEvent.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isSend" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (message.sendEvent->asSet()->includes(self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns value true if this MessageEnd is a sendEvent.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="oppositeEnd" ordered="false" upperBound="-1" eType="#//MessageEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (message->asSet().messageEnd->asSet()->excluding(self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This query returns a set including the MessageEnd (if exists) at the opposite end of the Message for this MessageEnd.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
eType="#//Message">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="messageEnd"/>
<details key="upper" value="2"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a Message.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageEvent" abstract="true" eSuperTypes="#//Event">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A MessageEvent specifies the receipt by an object of either an Operation call or a Signal instance.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification #//MessageEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A MessageOccurrenceSpecification specifies the occurrence of Message events, such as sending and receiving of Signals or invoking or receiving of Operation calls. A MessageOccurrenceSpecification is a kind of MessageEnd. Messages are generated either by synchronous Operation calls or asynchronous Signal sends. They are received by the execution of corresponding AcceptEventActions.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the viewpoint that is expressed by a model (this name may refer to a profile definition).&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MultiplicityElement" abstract="true"
eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="upper_ge_lower lower_ge_0 value_specification_no_side_effects value_specification_constant lower_is_integer upper_is_unlimitedNatural"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="upper_ge_lower" value="upperBound() >= lowerBound()"/>
<details key="lower_ge_0" value="lowerBound() >= 0"/>
<details key="lower_is_integer" value="lowerValue &lt;> null implies lowerValue.integerValue() &lt;> null"/>
<details key="upper_is_unlimitedNatural" value="upperValue &lt;> null implies upperValue.unlimitedValue() &lt;> null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A MultiplicityElement embeds this information to specify the allowable cardinalities for an instantiation of the Element.&#xA;upperBound() >= lowerBound()&#xA;lowerBound() >= 0&#xA;lowerValue &lt;> null implies lowerValue.integerValue() &lt;> null&#xA;upperValue &lt;> null implies upperValue.unlimitedValue() &lt;> null&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="compatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((other.lowerBound() &lt;= self.lowerBound()) and ((other.upperBound() = *) or (self.upperBound() &lt;= other.upperBound())))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation compatibleWith takes another multiplicity as input. It returns true if the other multiplicity is wider than, or the same as, self.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="other" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
</eOperations>
<eOperations name="includesMultiplicity" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="M" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
</eOperations>
<eOperations name="is" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (lowerbound = self.lowerBound() and upperbound = self.upperBound())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation is determines if the upper and lower bound of the ranges are the ones given.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="lowerbound" ordered="false" lowerBound="1" eType="#//Integer"/>
<eParameters name="upperbound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
</eOperations>
<eOperations name="isMultivalued" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (upperBound() > 1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="lower" ordered="false" eType="#//IntegerObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (lowerBound())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The derived lower attribute must equal the lowerBound.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="lowerBound" ordered="false" eType="#//IntegerObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if (lowerValue=null or lowerValue.integerValue()=null) then 1 else lowerValue.integerValue() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an integer, which is the integerValue of lowerValue, if this is given, and 1 otherwise.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="upper" ordered="false" eType="#//UnlimitedNaturalObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (upperBound())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The derived upper attribute must equal the upperBound.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="upperBound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if (upperValue=null or upperValue.unlimitedValue()=null) then 1 else upperValue.unlimitedValue() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural, which is the unlimitedNaturalValue of upperValue, if given, and 1, otherwise.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this MultiplicityElement are sequentially ordered.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this MultiplicityElement are unique.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
lowerBound="1" eType="#//Integer" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The lower bound of the multiplicity interval.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="lowerValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningLower"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specification of the lower bound for this multiplicity.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
lowerBound="1" eType="#//UnlimitedNatural" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The upper bound of the multiplicity interval.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningUpper"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specification of the upper bound for this multiplicity.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="visibility_needs_ownership has_qualified_name has_no_qualified_name"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="visibility_needs_ownership" value="(namespace = null and owner &lt;> null) implies visibility = null"/>
<details key="has_qualified_name" value="(name &lt;> null and allNamespaces()->select(ns | ns.name = null)->isEmpty()) implies&#xA; qualifiedName = allNamespaces()->iterate( ns : Namespace; agg: String = name | ns.name.concat(self.separator()).concat(agg))"/>
<details key="has_no_qualified_name" value="name=null or allNamespaces()->select( ns | ns.name=null )->notEmpty() implies qualifiedName = null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A NamedElement is an Element in a model that may have a name. The name may be given directly and/or via the use of a StringExpression.&#xA;(namespace = null and owner &lt;> null) implies visibility = null&#xA;(name &lt;> null and allNamespaces()->select(ns | ns.name = null)->isEmpty()) implies&#xA; qualifiedName = allNamespaces()->iterate( ns : Namespace; agg: String = name | ns.name.concat(self.separator()).concat(agg))&#xA;name=null or allNamespaces()->select( ns | ns.name=null )->notEmpty() implies qualifiedName = null&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="allNamespaces" upperBound="-1" eType="#//Namespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if owner.oclIsKindOf(TemplateParameter) and&#xA; owner.oclAsType(TemplateParameter).signature.template.oclIsKindOf(Namespace) then&#xA; let enclosingNamespace : Namespace =&#xA; owner.oclAsType(TemplateParameter).signature.template.oclAsType(Namespace) in&#xA; enclosingNamespace.allNamespaces()->prepend(enclosingNamespace)&#xA;else&#xA; if namespace->isEmpty()&#xA; then OrderedSet{}&#xA; else&#xA; namespace.allNamespaces()->prepend(namespace)&#xA; endif&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allNamespaces() gives the sequence of Namespaces in which the NamedElement is nested, working outwards.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="allOwningPackages" ordered="false" upperBound="-1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if namespace.oclIsKindOf(Package)&#xD;&#xA;then&#xD;&#xA; let owningPackage : Package = namespace.oclAsType(Package) in&#xD;&#xA; owningPackage->union(owningPackage.allOwningPackages())&#xD;&#xA;else&#xD;&#xA; null&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allOwningPackages() returns the set of all the enclosing Namespaces of this NamedElement, working outwards, that are Packages, up to but not including the first such Namespace that is not a Package.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="clientDependency" ordered="false" upperBound="-1" eType="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (Dependency.allInstances()->select(d | d.client->includes(self)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isDistinguishableFrom" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((self.oclIsKindOf(n.oclType()) or n.oclIsKindOf(self.oclType())) implies&#xA; ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have types neither of which is a kind of the other or (b) they have different names.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
<eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
</eOperations>
<eOperations name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if self.name &lt;> null and self.allNamespaces()->select( ns | ns.name=null )->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; agg: String = self.name | ns.name.concat(self.separator()).concat(agg))&#xA;else&#xA; null&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="When a NamedElement has a name, and all of its containing Namespaces have a name, the qualifiedName is constructed from the name of the NamedElement and the names of the containing Namespaces.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="separator" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ('::')"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query separator() gives the string that is used to separate names when constructing a qualifiedName.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
upperBound="-1" eType="#//Dependency" volatile="true" transient="true" derived="true"
eOpposite="#//Dependency/client">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates the Dependencies that reference this NamedElement as a client.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the NamedElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
eType="#//StringExpression" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="namedElement"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StringExpression used to define the name of this NamedElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"
eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true"
eOpposite="#//Namespace/ownedMember">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that owns the NamedElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
eType="#//String" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A name that allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing Namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
eType="#//VisibilityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether and how the NamedElement is visible outside its owning Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="members_distinguishable cannot_import_self cannot_import_ownedMembers"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="members_distinguishable" value="membersAreDistinguishable()"/>
<details key="cannot_import_self" value="packageImport.importedPackage.oclAsType(Namespace)->excludes(self)"/>
<details key="cannot_import_ownedMembers" value="elementImport.importedElement.oclAsType(Element)->excludesAll(ownedMember)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Namespace is an Element in a model that owns and/or imports a set of NamedElements that can be identified by name.&#xA;membersAreDistinguishable()&#xA;packageImport.importedPackage.oclAsType(Namespace)->excludes(self)&#xA;elementImport.importedElement.oclAsType(Element)->excludesAll(ownedMember)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (imps->reject(imp1 | imps->exists(imp2 | not imp1.isDistinguishableFrom(imp2, self))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
</eOperations>
<eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if self.ownedMember ->includes(element)&#xA;then Set{element.name}&#xA;else let elementImports : Set(ElementImport) = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then&#xA; elementImports->collect(el | el.getName())->asSet()&#xA; else &#xA; self.packageImport->select(pi | pi.importedPackage.visibleMembers().oclAsType(NamedElement)->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))->asSet()&#xA; endif&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace, taking importing into account. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="element" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | imp.isDistinguishableFrom(mem, self))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query importMembers() defines which of a set of PackageableElements are actually imported into the Namespace. This excludes hidden ones, i.e., those which have names that conflict with names of ownedMembers, and it also excludes PackageableElements that would have the indistinguishable names when imported.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
</eOperations>
<eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.importMembers(elementImport.importedElement->asSet()->union(packageImport.importedPackage->collect(p | p.visibleMembers()))->asSet()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The importedMember property is derived as the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="membersAreDistinguishable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (member->forAll( memb |&#xA; member->excluding(memb)->forAll(other |&#xA; memb.isDistinguishableFrom(other, self))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Boolean query membersAreDistinguishable() determines whether all of the Namespace's members are distinguishable within it.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
upperBound="-1" eType="#//ElementImport" containment="true" eOpposite="#//ElementImport/importingNamespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the ElementImports owned by the Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="namespace"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="memberNamespace"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//NamedElement/namespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A collection of NamedElements owned by the Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//Namespace/member"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true" eOpposite="#//Constraint/context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a set of Constraints owned by this Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
upperBound="-1" eType="#//PackageImport" containment="true" eOpposite="#//PackageImport/importingNamespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageImports owned by the Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="internal_structure"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="internal_structure" value="part->forAll(oclIsKindOf(Node))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Node is computational resource upon which artifacts may be deployed for execution. Nodes can be interconnected through communication paths to define network structures.&#xA;part->forAll(oclIsKindOf(Node))&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
upperBound="-1" eType="#//Node" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="node"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Nodes that are defined (nested) within the Node.&#xA;&lt;p>From package UML::Deployments.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="input_and_output_parameter no_executable_nodes transformation_behavior selection_behavior compatible_types same_upper_bounds target is_multicast_or_is_multireceive"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="input_and_output_parameter" value="selection&lt;>null implies&#xD;&#xA;&#x9;selection.inputParameters()->size()=1 and&#xD;&#xA;&#x9;selection.inputParameters()->forAll(not isUnique and is(0,*)) and&#xD;&#xA;&#x9;selection.outputParameters()->size()=1"/>
<details key="no_executable_nodes" value="not (source.oclIsKindOf(ExecutableNode) or target.oclIsKindOf(ExecutableNode))"/>
<details key="transformation_behavior" value="transformation&lt;>null implies&#xD;&#xA;&#x9;transformation.inputParameters()->size()=1 and&#xD;&#xA;&#x9;transformation.outputParameters()->size()=1"/>
<details key="selection_behavior" value="selection&lt;>null implies source.oclIsKindOf(ObjectNode)"/>
<details key="is_multicast_or_is_multireceive" value="not (isMulticast and isMultireceive)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ObjectFlow is an ActivityEdge that is traversed by object tokens that may hold values. Object flows also support multicast/receive, token selection from object nodes, and transformation of tokens.&#xA;selection&lt;>null implies&#xA;&#x9;selection.inputParameters()->size()=1 and&#xA;&#x9;selection.inputParameters()->forAll(not isUnique and is(0,*)) and&#xA;&#x9;selection.outputParameters()->size()=1&#xA;not (source.oclIsKindOf(ExecutableNode) or target.oclIsKindOf(ExecutableNode))&#xA;transformation&lt;>null implies&#xA;&#x9;transformation.inputParameters()->size()=1 and&#xA;&#x9;transformation.outputParameters()->size()=1&#xA;selection&lt;>null implies source.oclIsKindOf(ObjectNode)&#xA;not (isMulticast and isMultireceive)&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the objects in the ObjectFlow are passed by multicasting.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the objects in the ObjectFlow are gathered from respondents to multicasting.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior used to select tokens from a source ObjectNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectFlow"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior used to change or replace object tokens flowing along the ObjectFlow.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="input_output_parameter selection_behavior object_flow_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="input_output_parameter" value="selection&lt;>null implies&#xD;&#xA;&#x9;selection.inputParameters()->size()=1 and&#xD;&#xA;&#x9;selection.inputParameters()->forAll(p | not p.isUnique and p.is(0,*) and self.type.conformsTo(p.type)) and&#xD;&#xA;&#x9;selection.outputParameters()->size()=1 and&#xD;&#xA;&#x9;&#x9;selection.inputParameters()->forAll(p | self.type.conformsTo(p.type))&#xD;&#xA;&#x9;"/>
<details key="selection_behavior" value="(selection&lt;>null) = (ordering=ObjectNodeOrderingKind::ordered)"/>
<details key="object_flow_edges" value="(not isControlType) implies incoming->union(outgoing)->forAll(oclIsKindOf(ObjectFlow))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ObjectNode is an abstract ActivityNode that may hold tokens within the object flow in an Activity. ObjectNodes also support token selection, limitation on the number of tokens held, specification of the state required for tokens being held, and carrying control values.&#xA;&#xA;selection&lt;>null implies&#xA;&#x9;selection.inputParameters()->size()=1 and&#xA;&#x9;selection.inputParameters()->forAll(p | not p.isUnique and p.is(0,*) and self.type.conformsTo(p.type)) and&#xA;&#x9;selection.outputParameters()->size()=1 and&#xA;&#x9;&#x9;selection.inputParameters()->forAll(p | self.type.conformsTo(p.type))&#xA;&#x9;&#xA;(selection&lt;>null) = (ordering=ObjectNodeOrderingKind::ordered)&#xA;(not isControlType) implies incoming->union(outgoing)->forAll(oclIsKindOf(ObjectFlow))&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
upperBound="-1" eType="#//State">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The States required to be associated with the values held by tokens on this ObjectNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isControlType" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the type of the ObjectNode is to be treated as representing control values that may traverse ControlFlows.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
lowerBound="1" eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates how the tokens held by the ObjectNode are ordered for selection to traverse ActivityEdges outgoing from the ObjectNode.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectNode"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior used to select tokens to be offered on outgoing ActivityEdges.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The maximum number of tokens that may be held by this ObjectNode. Tokens cannot flow into the ObjectNode if the upperBound is reached. If no upperBound is specified, then there is no limit on how many tokens the ObjectNode can hold.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Observation" abstract="true" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Observation specifies a value determined by observing an event or events that occur relative to other model Elements.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OccurrenceSpecification" eSuperTypes="#//InteractionFragment">
<eAnnotations source="duplicates">
<eAnnotations source="covered">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
eType="#//Lifeline">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="events"/>
<details key="ordered" value="true"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Lifeline on which the OccurrenceSpecification appears.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OccurrenceSpecification is the basic semantic unit of Interactions. The sequences of occurrences specified by them are the meanings of Interactions.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OpaqueAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="language_body_size"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="language_body_size" value="language->notEmpty() implies (_'body'->size() = language->size())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OpaqueAction is an Action whose functionality is not specified within UML.&#xA;language->notEmpty() implies (_'body'->size() = language->size())&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Provides a textual specification of the functionality of the Action, in one or more languages other than UML.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
upperBound="-1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opaqueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPins providing inputs to the OpaqueAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If provided, a specification of the language used for each of the body Strings.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="outputValue" ordered="false"
upperBound="-1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opaqueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins on which the OpaqueAction provides outputs.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OpaqueBehavior" eSuperTypes="#//Behavior">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OpaqueBehavior is a Behavior whose specification is given in a textual language other than UML.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the behavior in one or more languages.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Languages the body strings use in the same order as the body strings.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OpaqueExpression" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="language_body_size one_return_result_parameter only_return_result_parameters"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="language_body_size" value="language->notEmpty() implies (_'body'->size() = language->size())"/>
<details key="one_return_result_parameter" value="behavior &lt;> null implies&#xD;&#xA; behavior.ownedParameter->select(direction=ParameterDirectionKind::return)->size() = 1"/>
<details key="only_return_result_parameters" value="behavior &lt;> null implies behavior.ownedParameter->select(direction&lt;>ParameterDirectionKind::return)->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OpaqueExpression is a ValueSpecification that specifies the computation of a collection of values either in terms of a UML Behavior or based on a textual statement in a language other than UML&#xA;language->notEmpty() implies (_'body'->size() = language->size())&#xA;behavior &lt;> null implies&#xA; behavior.ownedParameter->select(direction=ParameterDirectionKind::return)->size() = 1&#xA;behavior &lt;> null implies behavior.ownedParameter->select(direction&lt;>ParameterDirectionKind::return)->isEmpty()&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eOperations name="isIntegral" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isIntegral() tells whether an expression is intended to produce an Integer.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isNonNegative" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isNonNegative() tells whether an integer expression has a non-negative value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isPositive" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isPositive() tells whether an integer expression has a positive value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="result" ordered="false" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if behavior = null then&#xD;&#xA;&#x9;null&#xD;&#xA;else&#xD;&#xA;&#x9;behavior.ownedParameter->first()&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for OpaqueExpression::/result &#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="value" ordered="false" lowerBound="1" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (0)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query value() gives an integer value for an expression intended to produce one.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opaqueExpression"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the behavior of the OpaqueExpression as a UML Behavior.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A textual definition of the behavior of the OpaqueExpression, possibly in multiple languages.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the languages used to express the textual bodies of the OpaqueExpression. Languages are matched to body Strings by order. The interpretation of the body depends on the languages. If the languages are unspecified, they may be implicit from the expression body or the context.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opaqueExpression"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If an OpaqueExpression is specified using a UML Behavior, then this refers to the single required return Parameter of that Behavior. When the Behavior completes execution, the values on this Parameter give the result of evaluating the OpaqueExpression.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//BehavioralFeature #//ParameterableElement #//TemplateableElement">
<eAnnotations source="duplicates">
<eAnnotations source="templateParameter">
<details key="eType" value="UML::OperationTemplateParameter"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefiningElement.oclIsKindOf(Operation) and&#xD;&#xA;let op : Operation = redefiningElement.oclAsType(Operation) in&#xD;&#xA;&#x9;self.ownedParameter->size() = op.ownedParameter->size() and&#xD;&#xA;&#x9;Sequence{1..self.ownedParameter->size()}->&#xD;&#xA;&#x9;&#x9;forAll(i | &#xD;&#xA;&#x9;&#x9; let redefiningParam : Parameter = op.ownedParameter->at(i),&#xD;&#xA; redefinedParam : Parameter = self.ownedParameter->at(i) in&#xD;&#xA; (redefiningParam.isUnique = redefinedParam.isUnique) and&#xD;&#xA; (redefiningParam.isOrdered = redefinedParam. isOrdered) and&#xD;&#xA; (redefiningParam.direction = redefinedParam.direction) and&#xD;&#xA; (redefiningParam.type.conformsTo(redefinedParam.type) or&#xD;&#xA; redefinedParam.type.conformsTo(redefiningParam.type)) and&#xD;&#xA; (redefiningParam.direction = ParameterDirectionKind::inout implies&#xD;&#xA; (redefinedParam.compatibleWith(redefiningParam) and&#xD;&#xA; redefiningParam.compatibleWith(redefinedParam))) and&#xD;&#xA; (redefiningParam.direction = ParameterDirectionKind::_'in' implies&#xD;&#xA; redefinedParam.compatibleWith(redefiningParam)) and&#xD;&#xA; ((redefiningParam.direction = ParameterDirectionKind::out or&#xD;&#xA; redefiningParam.direction = ParameterDirectionKind::return) implies&#xD;&#xA; redefiningParam.compatibleWith(redefinedParam))&#xD;&#xA;&#x9;&#x9;))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent. A redefining operation is consistent with a redefined operation if&#xA;it has the same number of owned parameters, and for each parameter the following holds:&#xA;&#xA;- Direction, ordering and uniqueness are the same.&#xA;- The corresponding types are covariant, contravariant or invariant.&#xA;- The multiplicities are compatible, depending on the parameter direction.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EReference" name="raisedException" ordered="false"
upperBound="-1" eType="#//Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="operation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Types representing exceptions that may be raised during an invocation of this operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//BehavioralFeature/raisedException"/>
</contents>
<contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//OperationTemplateParameter/%duplicates%/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OperationTemplateParameter that exposes this element as a formal parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
</contents>
<contents xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//Parameter" containment="true" eOpposite="#//Parameter/operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameters owned by this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//BehavioralFeature/ownedParameter"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="at_most_one_return only_body_for_query"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="at_most_one_return" value="self.ownedParameter->select(direction = ParameterDirectionKind::return)->size() &lt;= 1"/>
<details key="only_body_for_query" value="bodyCondition &lt;> null implies isQuery"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Operation is a BehavioralFeature of a Classifier that specifies the name, type, parameters, and constraints for invoking an associated Behavior. An Operation may invoke both the execution of method behaviors as well as other behavioral responses. Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.&#xA;self.ownedParameter->select(direction = ParameterDirectionKind::return)->size() &lt;= 1&#xA;bodyCondition &lt;> null implies isQuery&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="isOrdered" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if returnResult()->notEmpty() then returnResult()-> exists(isOrdered) else false endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isUnique" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if returnResult()->notEmpty() then returnResult()->exists(isUnique) else true endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="lower" ordered="false" lowerBound="1" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if returnResult()->notEmpty() then returnResult()->any(true).lower else null endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower has no value.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="returnResult" ordered="false" upperBound="-1" eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedParameter->select (direction = ParameterDirectionKind::return))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="type" ordered="false" lowerBound="1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if returnResult()->notEmpty() then returnResult()->any(true).type else null endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type has no value.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if returnResult()->notEmpty() then returnResult()->any(true).upper else null endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper has no value.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyCondition" ordered="false"
eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="bodyContext"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional Constraint on the result values of an invocation of this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
eType="#//Class" eOpposite="#//Class/ownedOperation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Class that owns this operation, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Feature/featuringClassifier #//NamedElement/namespace #//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
eType="#//DataType" eOpposite="#//DataType/ownedOperation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The DataType that owns this Operation, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Feature/featuringClassifier #//NamedElement/namespace #//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interface" ordered="false"
eType="#//Interface" eOpposite="#//Interface/ownedOperation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interface that owns this Operation, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Feature/featuringClassifier #//NamedElement/namespace #//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the return parameter is ordered or not, if present. This information is derived from the return result for this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the return parameter is unique or not, if present. This information is derived from the return result for this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
eType="#//IntegerObject" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the lower multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
upperBound="-1" eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="postContext"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional set of Constraints specifying the state of the system when the Operation is completed.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
upperBound="-1" eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="preContext"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional set of Constraints on the state of the system when the Operation is invoked.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedOperation" ordered="false"
upperBound="-1" eType="#//Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="operation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operations that are redefined by this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type"
changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="operation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The return type of the operation, if present. This information is derived from the return result for this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
eType="#//UnlimitedNaturalObject" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The upper multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OperationTemplateParameter" eSuperTypes="#//TemplateParameter">
<eAnnotations source="duplicates">
<eAnnotations source="parameteredElement">
<details key="eType" value="UML::Operation"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Operation/%duplicates%/templateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operation exposed by this OperationTemplateParameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="match_default_signature"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="match_default_signature" value="default->notEmpty() implies (default.oclIsKindOf(Operation) and (let defaultOp : Operation = default.oclAsType(Operation) in &#xD;&#xA; defaultOp.ownedParameter->size() = parameteredElement.ownedParameter->size() and&#xD;&#xA; Sequence{1.. defaultOp.ownedParameter->size()}->forAll( ix | &#xD;&#xA; let p1: Parameter = defaultOp.ownedParameter->at(ix), p2 : Parameter = parameteredElement.ownedParameter->at(ix) in&#xD;&#xA; p1.type = p2.type and p1.upper = p2.upper and p1.lower = p2.lower and p1.direction = p2.direction and p1.isOrdered = p2.isOrdered and p1.isUnique = p2.isUnique)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OperationTemplateParameter exposes an Operation as a formal parameter for a template.&#xA;default->notEmpty() implies (default.oclIsKindOf(Operation) and (let defaultOp : Operation = default.oclAsType(Operation) in &#xA; defaultOp.ownedParameter->size() = parameteredElement.ownedParameter->size() and&#xA; Sequence{1.. defaultOp.ownedParameter->size()}->forAll( ix | &#xA; let p1: Parameter = defaultOp.ownedParameter->at(ix), p2 : Parameter = parameteredElement.ownedParameter->at(ix) in&#xA; p1.type = p2.type and p1.upper = p2.upper and p1.lower = p2.lower and p1.direction = p2.direction and p1.isOrdered = p2.isOrdered and p1.isUnique = p2.isUnique)))&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="incoming_edges_structured_only"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="incoming_edges_structured_only" value="incoming->notEmpty() implies&#xD;&#xA;&#x9;action&lt;>null and&#xD;&#xA;&#x9;action.oclIsKindOf(StructuredActivityNode) and&#xD;&#xA;&#x9;action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(incoming.source)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An OutputPin is a Pin that holds output values produced by an Action.&#xA;incoming->notEmpty() implies&#xA;&#x9;action&lt;>null and&#xA;&#x9;action.oclIsKindOf(StructuredActivityNode) and&#xA;&#x9;action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(incoming.source)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement #//TemplateableElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="mustBeOwned" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Element/mustBeOwned"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="elements_public_or_private"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="elements_public_or_private" value="packagedElement->forAll(e | e.visibility&lt;> null implies e.visibility = VisibilityKind::public or e.visibility = VisibilityKind::private)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.&#xA;Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter.&#xA;A package is used to group elements, and provides a namespace for the grouped elements.&#xA;packagedElement->forAll(e | e.visibility&lt;> null implies e.visibility = VisibilityKind::public or e.visibility = VisibilityKind::private)&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eOperations name="allApplicableStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let ownedPackages : Bag(Package) = ownedMember->select(oclIsKindOf(Package))->collect(oclAsType(Package)) in&#xD;&#xA; ownedStereotype->union(ownedPackages.allApplicableStereotypes())->flatten()->asSet()&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allApplicableStereotypes() returns all the directly or indirectly owned stereotypes, including stereotypes contained in sub-profiles.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="containingProfile" ordered="false" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if self.oclIsKindOf(Profile) then &#xD;&#xA;&#x9;self.oclAsType(Profile)&#xD;&#xA;else&#xD;&#xA;&#x9;self.namespace.oclAsType(Package).containingProfile()&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query containingProfile() returns the closest profile directly or indirectly containing this package (or this package itself, if it is a profile).&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="makesVisible" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedMember->includes(el) or&#xA;(elementImport->select(ei|ei.importedElement = VisibilityKind::public)->collect(importedElement.oclAsType(NamedElement))->includes(el)) or&#xA;(packageImport->select(visibility = VisibilityKind::public)->collect(importedPackage.member->includes(el))->notEmpty()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eParameters name="el" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="nestedPackage" ordered="false" upperBound="-1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (packagedElement->select(oclIsKindOf(Package))->collect(oclAsType(Package))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Package::/nestedPackage &#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="ownedStereotype" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (packagedElement->select(oclIsKindOf(Stereotype))->collect(oclAsType(Stereotype))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Package::/ownedStereotype &#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="ownedType" ordered="false" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (packagedElement->select(oclIsKindOf(Type))->collect(oclAsType(Type))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Package::/ownedType&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="visibleMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (member->select( m | m.oclIsKindOf(PackageableElement) and self.makesVisible(m))->collect(oclAsType(PackageableElement))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query visibleMembers() defines which members of a Package can be accessed outside it.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="URI" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Provides an identifier for the package that can be used for many purposes. A URI is the universally unique identification of the package following the IETF URI specification, RFC 2396 http://www.ietf.org/rfc/rfc2396.txt and it must comply with those syntax rules.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
upperBound="-1" eType="#//Package" volatile="true" transient="true" derived="true"
eOpposite="#//Package/nestingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the packaged elements that are Packages.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Package/packagedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestingPackage" ordered="false"
eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/nestedPackage.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Package that owns this Package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedStereotype" ordered="false"
upperBound="-1" eType="#//Stereotype" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningPackage"/>
<details key="lower" value="1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Stereotypes that are owned by the Package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Package/packagedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedType" ordered="false"
upperBound="-1" eType="#//Type" volatile="true" transient="true" derived="true"
eOpposite="#//Type/package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the packaged elements that are Types.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Package/packagedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageMerge" ordered="false"
upperBound="-1" eType="#//PackageMerge" containment="true" eOpposite="#//PackageMerge/receivingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageMerges that are owned by this Package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningPackage"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the packageable elements that are owned by this Package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="profileApplication" ordered="false"
upperBound="-1" eType="#//ProfileApplication" containment="true" eOpposite="#//ProfileApplication/applyingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the ProfileApplications that indicate which profiles have been applied to the Package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageImport" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="public_or_private"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="public_or_private" value="visibility = VisibilityKind::public or visibility = VisibilityKind::private"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PackageImport is a Relationship that imports all the non-private members of a Package into the Namespace owning the PackageImport, so that those Elements may be referred to by their unqualified names in the importingNamespace.&#xA;visibility = VisibilityKind::public or visibility = VisibilityKind::private&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" ordered="false"
lowerBound="1" eType="#//Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="packageImport"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Package whose members are imported into a Namespace.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/packageImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that imports the members from a Package.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the visibility of the imported PackageableElements within the importingNamespace, i.e., whether imported Elements will in turn be visible to other Namespaces. If the PackageImport is public, the imported Elements will be visible outside the importingNamespace, while, if the PackageImport is private, they will not.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageMerge" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package merge defines how the contents of one package are extended by the contents of another package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mergedPackage" ordered="false"
lowerBound="1" eType="#//Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="packageMerge"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Package that is to be merged with the receiving package of the PackageMerge.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="receivingPackage" ordered="false"
lowerBound="1" eType="#//Package" eOpposite="#//Package/packageMerge">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Package that is being extended with the contents of the merged package of the PackageMerge.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
eSuperTypes="#//NamedElement #//ParameterableElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EAttribute" name="visibility" ordered="false" eType="#//VisibilityKind"
defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PackageableElement must have a visibility specified if it is owned by a Namespace. The default visibility is public.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/visibility"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="namespace_needs_visibility"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="namespace_needs_visibility" value="visibility = null implies namespace = null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PackageableElement is a NamedElement that may be owned directly by a Package. A PackageableElement is also able to serve as the parameteredElement of a TemplateParameter.&#xA;visibility = null implies namespace = null&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="in_and_out not_exception connector_end reentrant_behaviors stream_and_exception object_effect"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="in_and_out" value="(effect = ParameterEffectKind::delete implies (direction = ParameterDirectionKind::_'in' or direction = ParameterDirectionKind::inout))&#xD;&#xA;and&#xD;&#xA;(effect = ParameterEffectKind::create implies (direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::return))"/>
<details key="not_exception" value="isException implies (direction &lt;> ParameterDirectionKind::_'in' and direction &lt;> ParameterDirectionKind::inout)"/>
<details key="connector_end" value="end->notEmpty() implies collaboration->notEmpty()"/>
<details key="reentrant_behaviors" value="(isStream and behavior &lt;> null) implies not behavior.isReentrant"/>
<details key="stream_and_exception" value="not (isException and isStream)"/>
<details key="object_effect" value="(type.oclIsKindOf(DataType)) implies (effect = null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Parameter is a specification of an argument used to pass information into or out of an invocation of a BehavioralFeature. Parameters can be treated as ConnectableElements within Collaborations.&#xA;(effect = ParameterEffectKind::delete implies (direction = ParameterDirectionKind::_'in' or direction = ParameterDirectionKind::inout))&#xA;and&#xA;(effect = ParameterEffectKind::create implies (direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::return))&#xA;isException implies (direction &lt;> ParameterDirectionKind::_'in' and direction &lt;> ParameterDirectionKind::inout)&#xA;end->notEmpty() implies collaboration->notEmpty()&#xA;(isStream and behavior &lt;> null) implies not behavior.isReentrant&#xA;not (isException and isStream)&#xA;(type.oclIsKindOf(DataType)) implies (effect = null)&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="default" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if self.type = String then defaultValue.stringValue() else null endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Parameter::/default&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
eType="#//String" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A String that represents a value to be used when no argument is supplied for the Parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningParameter"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" ordered="false"
lowerBound="1" eType="#//ParameterDirectionKind" defaultValueLiteral="in">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether a parameter is being sent into or out of a behavioral element.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
eType="#//ParameterEffectKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the effect that executions of the owner of the Parameter have on objects passed in or out of the parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isException" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Tells whether an output parameter may emit a value to the exclusion of the other outputs.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStream" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter may post values while the behavior is executing.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
eType="#//Operation" changeable="false" volatile="true" transient="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Operation owning this parameter.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"
upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterSets containing the parameter. See ParameterSet.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="same_parameterized_entity input two_parameter_sets"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="same_parameterized_entity" value="parameter->forAll(p1, p2 | self.owner = p1.owner and self.owner = p2.owner and p1.direction = p2.direction)"/>
<details key="input" value="((parameter->exists(direction = ParameterDirectionKind::_'in')) implies &#xD;&#xA; behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::_'in' and p.parameterSet->isEmpty())->forAll(isStream))&#xD;&#xA; and&#xD;&#xA;((parameter->exists(direction = ParameterDirectionKind::out)) implies &#xD;&#xA; behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::out and p.parameterSet->isEmpty())->forAll(isStream)) &#xD;&#xA;"/>
<details key="two_parameter_sets" value="parameter->forAll(parameterSet->forAll(s1, s2 | s1->size() = s2->size() implies s1.parameter->exists(p | not s2.parameter->includes(p))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ParameterSet designates alternative sets of inputs or outputs that a Behavior may use.&#xA;parameter->forAll(p1, p2 | self.owner = p1.owner and self.owner = p2.owner and p1.direction = p2.direction)&#xA;((parameter->exists(direction = ParameterDirectionKind::_'in')) implies &#xA; behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::_'in' and p.parameterSet->isEmpty())->forAll(isStream))&#xA; and&#xA;((parameter->exists(direction = ParameterDirectionKind::out)) implies &#xA; behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::out and p.parameterSet->isEmpty())->forAll(isStream)) &#xA;&#xA;parameter->forAll(parameterSet->forAll(s1, s2 | s1->size() = s2->size() implies s1.parameter->exists(p | not s2.parameter->includes(p))))&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="parameterSet"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A constraint that should be satisfied for the owner of the Parameters in an input ParameterSet to start execution using the values provided for those Parameters, or the owner of the Parameters in an output ParameterSet to end execution providing the values for those Parameters, if all preconditions and conditions on input ParameterSets were satisfied.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Parameters in the ParameterSet.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterableElement" abstract="true"
eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ParameterableElement is an Element that can be exposed as a formal TemplateParameter for a template, or specified as an actual parameter in a binding of a template.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="isCompatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oclIsKindOf(p.oclType()))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isCompatibleWith() determines if this ParameterableElement is compatible with the specified ParameterableElement. By default, this ParameterableElement is compatible with another ParameterableElement p if the kind of this ParameterableElement is the same as or a subtype of the kind of p. Subclasses of ParameterableElement should override this operation to specify different compatibility constraints.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
</eOperations>
<eOperations name="isTemplateParameter" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (templateParameter->notEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplateParameter() determines if this ParameterableElement is exposed as a formal TemplateParameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningTemplateParameter"
ordered="false" eType="#//TemplateParameter" eOpposite="#//TemplateParameter/ownedParameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal TemplateParameter that owns this ParameterableElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner #//ParameterableElement/templateParameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//TemplateParameter/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateParameter that exposes this ParameterableElement as a formal parameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionUse">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="commutativity_of_decomposition assume parts_of_internal_structures"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PartDecomposition is a description of the internal Interactions of one Lifeline relative to an Interaction.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Pin" abstract="true" eSuperTypes="#//ObjectNode #//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="control_pins not_unique"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="control_pins" value="isControl implies isControlType"/>
<details key="not_unique" value="not isUnique"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Pin is an ObjectNode and MultiplicityElement that provides input values to an Action or accepts output values from an Action.&#xA;isControl implies isControlType&#xA;not isUnique&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isControl" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the Pin provides data to the Action or just controls how the Action executes.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="port_aggregation default_value encapsulated_owner"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="port_aggregation" value="aggregation = AggregationKind::composite"/>
<details key="default_value" value="type.oclIsKindOf(Interface) implies defaultValue->isEmpty()"/>
<details key="encapsulated_owner" value="owner = encapsulatedClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Port is a property of an EncapsulatedClassifier that specifies a distinct interaction point between that EncapsulatedClassifier and its environment or between the (behavior of the) EncapsulatedClassifier and its internal parts. Ports are connected to Properties of the EncapsulatedClassifier by Connectors through which requests can be made to invoke BehavioralFeatures. A Port may specify the services an EncapsulatedClassifier provides (offers) to its environment as well as the services that an EncapsulatedClassifier expects (requires) of its environment. A Port may have an associated ProtocolStateMachine.&#xA;aggregation = AggregationKind::composite&#xA;type.oclIsKindOf(Interface) implies defaultValue->isEmpty()&#xA;owner = encapsulatedClassifier&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="basicProvided" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if type.oclIsKindOf(Interface) &#xD;&#xA;then type.oclAsType(Interface)->asSet() &#xD;&#xA;else type.oclAsType(Classifier).allRealizedInterfaces() &#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly the type of the Port if the Port is typed by an Interface.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="basicRequired" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ( type.oclAsType(Classifier).allUsedInterfaces() )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The union of the sets of Interfaces used by the type of the Port and its supertypes.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="provided" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if isConjugated then basicRequired() else basicProvided() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Port::/provided&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="required" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if isConjugated then basicProvided() else basicRequired() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Port::/required&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether requests arriving at this Port are sent to the classifier behavior of this EncapsulatedClassifier. Such a Port is referred to as a behavior Port. Any invocation of a BehavioralFeature targeted at a behavior Port will be handled by the instance of the owning EncapsulatedClassifier itself, rather than by any instances that it may contain.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isConjugated" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the way that the provided and required Interfaces are derived from the Port’s Type.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, indicates that this Port is used to provide the published functionality of an EncapsulatedClassifier. If false, this Port is used to implement the EncapsulatedClassifier but is not part of the essential externally-visible functionality of the EncapsulatedClassifier and can, therefore, be altered or deleted along with the internal implementation of the EncapsulatedClassifier and other properties that are considered part of its implementation.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
eType="#//ProtocolStateMachine">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="port"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional ProtocolStateMachine which describes valid interactions at this interaction point.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="port"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCclassifier offers to its environment via this Port, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived according to the value of isConjugated. If isConjugated is false, provided is derived as the union of the sets of Interfaces realized by the type of the port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface. If isConjugated is true, it is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
upperBound="-1" eType="#//Port">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="port"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Port may be redefined when its containing EncapsulatedClassifier is specialized. The redefining Port may have additional Interfaces to those that are associated with the redefined Port or it may replace an Interface by one of its subtypes.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Property/redefinedProperty"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="port"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCassifier expects its environment to handle via this port. This association is derived according to the value of isConjugated. If isConjugated is false, required is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes. If isConjugated is true, it is derived as the union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PrimitiveType defines a predefined DataType, without any substructure. A PrimitiveType may have an algebra and operations defined outside of UML, for example, mathematically.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="metaclass_reference_not_specialized references_same_metamodel"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="metaclass_reference_not_specialized" value="metaclassReference.importedElement->&#xD;&#xA;&#x9;select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA;&#x9;&#x9;(c.oclAsType(Classifier).allParents()->collect(namespace)->includes(self)))->isEmpty()&#xD;&#xA;and &#xD;&#xA;packagedElement->&#xD;&#xA; select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier).allParents())->&#xD;&#xA; intersection(metaclassReference.importedElement->select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier)))->isEmpty()"/>
<details key="references_same_metamodel" value="metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages()->&#xD;&#xA; union(metaclassReference.importedElement.allOwningPackages() )->notEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.&#xA;metaclassReference.importedElement->&#xA;&#x9;select(c | c.oclIsKindOf(Classifier) and&#xA;&#x9;&#x9;(c.oclAsType(Classifier).allParents()->collect(namespace)->includes(self)))->isEmpty()&#xA;and &#xA;packagedElement->&#xA; select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier).allParents())->&#xA; intersection(metaclassReference.importedElement->select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier)))->isEmpty()&#xA;metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages()->&#xA; union(metaclassReference.importedElement.allOwningPackages() )->notEmpty()&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="metaclassReference" ordered="false"
upperBound="-1" eType="#//ElementImport">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="profile"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a metaclass that may be extended.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/elementImport"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="metamodelReference" ordered="false"
upperBound="-1" eType="#//PackageImport">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="profile"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a package containing (directly or indirectly) metaclasses that may be extended.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/packageImport"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProfileApplication" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A profile application is used to show which profiles have been applied to a package.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"
lowerBound="1" eType="#//Profile">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="profileApplication"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Profiles that are applied to a Package through this ProfileApplication.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="applyingPackage" ordered="false"
lowerBound="1" eType="#//Package" eOpposite="#//Package/profileApplication">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The package that owns the profile application.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStrict" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//StructuralFeature #//ConnectableElement #//DeploymentTarget">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies&#xD;&#xA;self.type.conformsTo(p.oclAsType(TypedElement).type)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isCompatibleWith() determines if this Property is compatible with the specified ParameterableElement. This Property is compatible with ParameterableElement p if the kind of this Property is thesame as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this Property must be conformant with the type of p.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
<eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefiningElement.oclIsKindOf(Property) and &#xA; let prop : Property = redefiningElement.oclAsType(Property) in &#xA; (prop.type.conformsTo(self.type) and &#xA; ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and &#xA; ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and &#xA; (self.isComposite implies prop.isComposite)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining Property is consistent with a redefined Property if the type of the redefining Property conforms to the type of the redefined Property, and the multiplicity of the redefining Property (if specified) is contained in the multiplicity of the redefined Property.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="subsetting_context_conforms derived_union_is_read_only multiplicity_of_composite redefined_property_inherited subsetting_rules binding_to_attribute derived_union_is_derived deployment_target subsetted_property_names type_of_opposite_end qualified_is_association_end"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="subsetting_context_conforms" value="subsettedProperty->notEmpty() implies&#xA; (subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |&#xA; subsettedProperty->forAll(sp |&#xA; sp.subsettingContext()->exists(c | sc.conformsTo(c)))))"/>
<details key="derived_union_is_read_only" value="isDerivedUnion implies isReadOnly"/>
<details key="multiplicity_of_composite" value="isComposite and association &lt;> null implies opposite.upperBound() &lt;= 1&#xD;&#xA;&#xD;&#xA;"/>
<details key="redefined_property_inherited" value="(redefinedProperty->notEmpty()) implies&#xD;&#xA; (redefinitionContext->notEmpty() and&#xD;&#xA; redefinedProperty->forAll(rp|&#xD;&#xA; ((redefinitionContext->collect(fc|&#xD;&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)))"/>
<details key="subsetting_rules" value="subsettedProperty->forAll(sp |&#xA; self.type.conformsTo(sp.type) and&#xA; ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA; self.upperBound() &lt;= sp.upperBound() ))"/>
<details key="binding_to_attribute" value="(self.isAttribute()&#xD;&#xA;and (templateParameterSubstitution->notEmpty())&#xD;&#xA;implies (templateParameterSubstitution->forAll(ts |&#xD;&#xA; ts.formal.oclIsKindOf(Property)&#xD;&#xA; and ts.formal.oclAsType(Property).isAttribute())))"/>
<details key="derived_union_is_derived" value="isDerivedUnion implies isDerived"/>
<details key="deployment_target" value="deployment->notEmpty() implies owner.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p = self))"/>
<details key="subsetted_property_names" value="subsettedProperty->forAll(sp | sp.name &lt;> name)"/>
<details key="type_of_opposite_end" value="(opposite->notEmpty() and owningAssociation->isEmpty()) implies classifier = opposite.type"/>
<details key="qualified_is_association_end" value="qualifier->notEmpty() implies association->notEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the Classifier to a value or set of values of the type of the attribute. A Property related by memberEnd to an Association represents an end of the Association. The type of the Property is the type of the end of the Association. A Property has the capability of being a DeploymentTarget in a Deployment relationship. This enables modeling the deployment to hierarchical nodes that have Properties functioning as internal parts. Property specializes ParameterableElement to specify that a Property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.&#xA;subsettedProperty->notEmpty() implies&#xA; (subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |&#xA; subsettedProperty->forAll(sp |&#xA; sp.subsettingContext()->exists(c | sc.conformsTo(c)))))&#xA;isDerivedUnion implies isReadOnly&#xA;isComposite and association &lt;> null implies opposite.upperBound() &lt;= 1&#xA;&#xA;&#xA;(redefinedProperty->notEmpty()) implies&#xA; (redefinitionContext->notEmpty() and&#xA; redefinedProperty->forAll(rp|&#xA; ((redefinitionContext->collect(fc|&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)))&#xA;subsettedProperty->forAll(sp |&#xA; self.type.conformsTo(sp.type) and&#xA; ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA; self.upperBound() &lt;= sp.upperBound() ))&#xA;(self.isAttribute()&#xA;and (templateParameterSubstitution->notEmpty())&#xA;implies (templateParameterSubstitution->forAll(ts |&#xA; ts.formal.oclIsKindOf(Property)&#xA; and ts.formal.oclAsType(Property).isAttribute())))&#xA;isDerivedUnion implies isDerived&#xA;deployment->notEmpty() implies owner.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p = self))&#xA;subsettedProperty->forAll(sp | sp.name &lt;> name)&#xA;(opposite->notEmpty() and owningAssociation->isEmpty()) implies classifier = opposite.type&#xA;qualifier->notEmpty() implies association->notEmpty()&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="isAttribute" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (not classifier->isEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isAttribute() is true if the Property is defined as an attribute of some Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (aggregation = AggregationKind::composite)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of isComposite is true only if aggregation is composite.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (not classifier->isEmpty() or association.navigableOwnedEnd->includes(self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isNavigable() indicates whether it is possible to navigate across the property.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="opposite" ordered="false" lowerBound="1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if association &lt;> null and association.memberEnd->size() = 2&#xA;then&#xA; association.memberEnd->any(e | e &lt;> self)&#xA;else&#xA; null&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If this property is a memberEnd of a binary association, then opposite gives the other end.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="subsettingContext" ordered="false" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if association &lt;> null&#xA;then association.memberEnd->excluding(self)->collect(type)->asSet()&#xA;else &#xA; if classifier&lt;>null&#xA; then classifier->asSet()&#xA; else Set{} &#xA; endif&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query subsettingContext() gives the context for subsetting a Property. It consists, in the case of an attribute, of the corresponding Classifier, and in the case of an association end, all of the Classifiers at the other ends.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="aggregation" ordered="false"
lowerBound="1" eType="#//AggregationKind" defaultValueLiteral="none">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the kind of aggregation that applies to the Property.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
eType="#//Association" eOpposite="#//Association/memberEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Association of which this Property is a member, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" ordered="false"
eType="#//Property" eOpposite="#//Property/qualifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the optional association end that owns a qualifier attribute.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
eType="#//Class" changeable="false" volatile="true" transient="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Class that owns this Property, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
eType="#//DataType" eOpposite="#//DataType/ownedAttribute">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The DataType that owns this Property, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningProperty"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification that is evaluated to give a default value for the Property when an instance of the owning Classifier is instantiated.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interface" ordered="false"
eType="#//Interface" eOpposite="#//Interface/ownedAttribute">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Interface that owns this Property, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="false"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. This is a derived value, indicating whether the aggregation of the Property is composite or not.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerivedUnion" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the property is derived as the union of all of the Properties that are constrained to subset it.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isID" ordered="false" lowerBound="1"
eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="True indicates this property can be used to uniquely identify an instance of the containing Class.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="opposite" ordered="false"
eType="#//Property" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="property"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="In the case where the Property is one end of a binary association this gives the other end.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningAssociation" ordered="false"
eType="#//Association" eOpposite="#//Association/ownedEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The owning association of this property, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Feature/featuringClassifier #//NamedElement/namespace #//Property/association #//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/associationEnd">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional list of ordered qualifier attributes for the end.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedProperty" ordered="false"
upperBound="-1" eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="property"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The properties that are redefined by this property, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subsettedProperty" ordered="false"
upperBound="-1" eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="property"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The properties of which this Property is constrained to be a subset, if any.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ProtocolStateMachine can be redefined into a more specific ProtocolStateMachine or into behavioral StateMachine. ProtocolConformance declares that the specific ProtocolStateMachine specifies a protocol that conforms to the general ProtocolStateMachine or that the specific behavioral StateMachine abides by the protocol of the general ProtocolStateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" ordered="false"
lowerBound="1" eType="#//ProtocolStateMachine">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="protocolConformance"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the ProtocolStateMachine to which the specific ProtocolStateMachine conforms.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"
lowerBound="1" eType="#//ProtocolStateMachine" eOpposite="#//ProtocolStateMachine/conformance">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the ProtocolStateMachine which conforms to the general ProtocolStateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="classifier_context deep_or_shallow_history entry_exit_do protocol_transitions"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="classifier_context" value="_'context' &lt;> null and specification = null"/>
<details key="deep_or_shallow_history" value="region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Pseudostate) implies&#xA;((v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::deepHistory) and (v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::shallowHistory))))&#xA;"/>
<details key="entry_exit_do" value="region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.oclAsType(State).entry->isEmpty() and v.oclAsType(State).exit->isEmpty() and v.oclAsType(State).doActivity->isEmpty())))&#xA;"/>
<details key="protocol_transitions" value="region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ProtocolStateMachine is always defined in the context of a Classifier. It specifies which BehavioralFeatures of the Classifier can be called in which State and under which conditions, thus specifying the allowed invocation sequences on the Classifier's BehavioralFeatures. A ProtocolStateMachine specifies the possible and permitted Transitions on the instances of its context Classifier, together with the BehavioralFeatures that carry the Transitions. In this manner, an instance lifecycle can be specified for a Classifier, by defining the order in which the BehavioralFeatures can be activated and the States through which an instance progresses during its existence.&#xA;_'context' &lt;> null and specification = null&#xA;region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Pseudostate) implies&#xA;((v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::deepHistory) and (v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::shallowHistory))))&#xA;&#xA;region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.oclAsType(State).entry->isEmpty() and v.oclAsType(State).exit->isEmpty() and v.oclAsType(State).doActivity->isEmpty())))&#xA;&#xA;region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Conformance between ProtocolStateMachine &#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="refers_to_operation associated_actions belongs_to_psm"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="refers_to_operation" value="if (referred()->notEmpty() and containingStateMachine()._'context'->notEmpty()) then &#xD;&#xA; containingStateMachine()._'context'.oclAsType(BehavioredClassifier).allFeatures()->includesAll(referred())&#xD;&#xA;else true endif"/>
<details key="associated_actions" value="effect = null"/>
<details key="belongs_to_psm" value="container.belongsToPSM()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ProtocolTransition specifies a legal Transition for an Operation. Transitions of ProtocolStateMachines have the following information: a pre-condition (guard), a Trigger, and a post-condition. Every ProtocolTransition is associated with at most one BehavioralFeature belonging to the context Classifier of the ProtocolStateMachine.&#xA;if (referred()->notEmpty() and containingStateMachine()._'context'->notEmpty()) then &#xA; containingStateMachine()._'context'.oclAsType(BehavioredClassifier).allFeatures()->includesAll(referred())&#xA;else true endif&#xA;effect = null&#xA;container.belongsToPSM()&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="referred" ordered="false" upperBound="-1" eType="#//Operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (trigger->collect(event)->select(oclIsKindOf(CallEvent))->collect(oclAsType(CallEvent).operation)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for ProtocolTransition::/referred&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningTransition"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the post condition of the Transition which is the Condition that should be obtained once the Transition is triggered. This post condition is part of the post condition of the Operation connected to the Transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" ordered="false"
eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="protocolTransition"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the precondition of the Transition. It specifies the Condition that should be verified before triggering the Transition. This guard condition added to the source State will be evaluated as part of the precondition of the Operation referred by the Transition if any.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Transition/guard"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"
upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="protocolTransition"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This association refers to the associated Operation. It is derived from the Operation of the CallEvent Trigger when applicable.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="transitions_outgoing choice_vertex outgoing_from_initial join_vertex junction_vertex history_vertices initial_vertex fork_vertex transitions_incoming"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="transitions_outgoing" value="(kind = PseudostateKind::fork) implies&#xD;&#xA;&#xD;&#xA;-- for any pair of outgoing transitions there exists an orthogonal state which contains the targets of these transitions &#xD;&#xA;-- such that these targets belong to different regions of that orthogonal state &#xD;&#xA;&#xD;&#xA;outgoing->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.target, t2.target) in&#xD;&#xA;&#x9;((contState &lt;> null) and (contState.region&#xD;&#xA;&#x9;&#x9;->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.target.isContainedInRegion(r1) and t2.target.isContainedInRegion(r2)))))&#xD;&#xA;&#x9;"/>
<details key="choice_vertex" value="(kind = PseudostateKind::choice) implies (incoming->size() >= 1 and outgoing->size() >= 1)&#xA;"/>
<details key="outgoing_from_initial" value="(kind = PseudostateKind::initial) implies (outgoing.guard = null and outgoing.trigger->isEmpty())"/>
<details key="join_vertex" value="(kind = PseudostateKind::join) implies (outgoing->size() = 1 and incoming->size() >= 2)&#xA;"/>
<details key="junction_vertex" value="(kind = PseudostateKind::junction) implies (incoming->size() >= 1 and outgoing->size() >= 1)&#xA;"/>
<details key="history_vertices" value="((kind = PseudostateKind::deepHistory) or (kind = PseudostateKind::shallowHistory)) implies (outgoing->size() &lt;= 1)&#xA;"/>
<details key="initial_vertex" value="(kind = PseudostateKind::initial) implies (outgoing->size() &lt;= 1)"/>
<details key="fork_vertex" value="(kind = PseudostateKind::fork) implies (incoming->size() = 1 and outgoing->size() >= 2)&#xA;"/>
<details key="transitions_incoming" value="(kind = PseudostateKind::join) implies&#xA;&#xA;-- for any pair of incoming transitions there exists an orthogonal state which contains the source vetices of these transitions &#xA;-- such that these source vertices belong to different regions of that orthogonal state &#xA;&#xA;incoming->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.source, t2.source) in&#xA;&#x9;((contState &lt;> null) and (contState.region&#xA;&#x9;&#x9;->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.source.isContainedInRegion(r1) and t2.source.isContainedInRegion(r2)))))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Pseudostate is an abstraction that encompasses different types of transient Vertices in the StateMachine graph. A StateMachine instance never comes to rest in a Pseudostate, instead, it will exit and enter the Pseudostate within a single run-to-completion step.&#xA;(kind = PseudostateKind::fork) implies&#xA;&#xA;-- for any pair of outgoing transitions there exists an orthogonal state which contains the targets of these transitions &#xA;-- such that these targets belong to different regions of that orthogonal state &#xA;&#xA;outgoing->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.target, t2.target) in&#xA;&#x9;((contState &lt;> null) and (contState.region&#xA;&#x9;&#x9;->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.target.isContainedInRegion(r1) and t2.target.isContainedInRegion(r2)))))&#xA;&#x9;&#xA;(kind = PseudostateKind::choice) implies (incoming->size() >= 1 and outgoing->size() >= 1)&#xA;&#xA;(kind = PseudostateKind::initial) implies (outgoing.guard = null and outgoing.trigger->isEmpty())&#xA;(kind = PseudostateKind::join) implies (outgoing->size() = 1 and incoming->size() >= 2)&#xA;&#xA;(kind = PseudostateKind::junction) implies (incoming->size() >= 1 and outgoing->size() >= 1)&#xA;&#xA;((kind = PseudostateKind::deepHistory) or (kind = PseudostateKind::shallowHistory)) implies (outgoing->size() &lt;= 1)&#xA;&#xA;(kind = PseudostateKind::initial) implies (outgoing->size() &lt;= 1)&#xA;(kind = PseudostateKind::fork) implies (incoming->size() = 1 and outgoing->size() >= 2)&#xA;&#xA;(kind = PseudostateKind::join) implies&#xA;&#xA;-- for any pair of incoming transitions there exists an orthogonal state which contains the source vetices of these transitions &#xA;-- such that these source vertices belong to different regions of that orthogonal state &#xA;&#xA;incoming->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.source, t2.source) in&#xA;&#x9;((contState &lt;> null) and (contState.region&#xA;&#x9;&#x9;->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.source.isContainedInRegion(r1) and t2.source.isContainedInRegion(r2)))))&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
eType="#//PseudostateKind" defaultValueLiteral="initial">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
eType="#//State" eOpposite="#//State/connectionPoint">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The State that owns this Pseudostate and in which it appears.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
eType="#//StateMachine" eOpposite="#//StateMachine/connectionPoint">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QualifierValue" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity_of_qualifier type_of_qualifier qualifier_attribute"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity_of_qualifier" value="value.is(1,1)"/>
<details key="type_of_qualifier" value="value.type.conformsTo(qualifier.type)"/>
<details key="qualifier_attribute" value="linkEndData.end.qualifier->includes(qualifier)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QualifierValue is an Element that is used as part of LinkEndData to provide the value for a single qualifier of the end given by the LinkEndData.&#xA;value.is(1,1)&#xA;value.type.conformsTo(qualifier.type)&#xA;linkEndData.end.qualifier->includes(qualifier)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
lowerBound="1" eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="qualifierValue"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualifier Property for which the value is to be specified.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
lowerBound="1" eType="#//InputPin">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="qualifierValue"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin from which the specified value for the qualifier is taken.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RaiseExceptionAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A RaiseExceptionAction is an Action that causes an exception to occur. The input value becomes the exception object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exception" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="raiseExceptionAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin whose value becomes the exception object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_is_classifier multiplicity_of_result"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_is_classifier" value="result.type = classifier"/>
<details key="multiplicity_of_result" value="result.is(0,*)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadExtentAction is an Action that retrieves the current instances of a Classifier.&#xA;result.type = classifier&#xA;result.is(0,*)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readExtentAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier whose instances are to be retrieved.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readExtentAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the Classifier instances are placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadIsClassifiedObjectAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_type multiplicity_of_output boolean_result multiplicity_of_input"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_type" value="object.type = null"/>
<details key="multiplicity_of_output" value="result.is(1,1)"/>
<details key="boolean_result" value="result.type = Boolean"/>
<details key="multiplicity_of_input" value="object.is(1,1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadIsClassifiedObjectAction is an Action that determines whether an object is classified by a given Classifier.&#xA;object.type = null&#xA;result.is(1,1)&#xA;result.type = Boolean&#xA;object.is(1,1)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readIsClassifiedObjectAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier against which the classification of the input object is tested.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the input object must be directly classified by the given Classifier or whether it may also be an instance of a specialization of the given Classifier.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readIsClassifiedObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that holds the object whose classification is to be tested.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readIsClassifiedObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin that holds the Boolean result of the test.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkAction" eSuperTypes="#//LinkAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_and_ordering compatible_multiplicity visibility one_open_end navigable_open_end"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_and_ordering" value="self.openEnd()->forAll(type=result.type and isOrdered=result.isOrdered)&#xA;"/>
<details key="compatible_multiplicity" value="self.openEnd()->first().compatibleWith(result)&#xA;"/>
<details key="visibility" value="let openEnd : Property = self.openEnd()->first() in&#xA; openEnd.visibility = VisibilityKind::public or &#xA; endData->exists(oed | &#xA; oed.end&lt;>openEnd and &#xA; (_'context' = oed.end.type or &#xA; (openEnd.visibility = VisibilityKind::protected and &#xA; _'context'.conformsTo(oed.end.type.oclAsType(Classifier)))))&#xA;"/>
<details key="one_open_end" value="self.openEnd()->size() = 1"/>
<details key="navigable_open_end" value="self.openEnd()->first().isNavigable()&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadLinkAction is a LinkAction that navigates across an Association to retrieve the objects on one end.&#xA;self.openEnd()->forAll(type=result.type and isOrdered=result.isOrdered)&#xA;&#xA;self.openEnd()->first().compatibleWith(result)&#xA;&#xA;let openEnd : Property = self.openEnd()->first() in&#xA; openEnd.visibility = VisibilityKind::public or &#xA; endData->exists(oed | &#xA; oed.end&lt;>openEnd and &#xA; (_'context' = oed.end.type or &#xA; (openEnd.visibility = VisibilityKind::protected and &#xA; _'context'.conformsTo(oed.end.type.oclAsType(Classifier)))))&#xA;&#xA;self.openEnd()->size() = 1&#xA;self.openEnd()->first().isNavigable()&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="openEnd" upperBound="-1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (endData->select(value=null).end->asOrderedSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns the ends corresponding to endData with no value InputPin. (A well-formed ReadLinkAction is constrained to have only one of these.)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the objects retrieved from the &quot;open&quot; end of those links whose values on other ends are given by the endData.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="property multiplicity_of_object ends_of_association type_of_result multiplicity_of_result type_of_object association_of_association"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="property" value="end.association &lt;> null"/>
<details key="multiplicity_of_object" value="object.is(1,1)"/>
<details key="ends_of_association" value="end.association.memberEnd->forAll(e | not e.isStatic)"/>
<details key="type_of_result" value="result.type = end.type"/>
<details key="multiplicity_of_result" value="result.is(1,1)"/>
<details key="type_of_object" value="object.type = end.association"/>
<details key="association_of_association" value="end.association.oclIsKindOf(AssociationClass)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadLinkObjectEndAction is an Action that retrieves an end object from a link object.&#xA;end.association &lt;> null&#xA;object.is(1,1)&#xA;end.association.memberEnd->forAll(e | not e.isStatic)&#xA;result.type = end.type&#xA;result.is(1,1)&#xA;object.type = end.association&#xA;end.association.oclIsKindOf(AssociationClass)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Association end to be read.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The input pin from which the link object is obtained.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin where the result value is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndQualifierAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity_of_object type_of_object multiplicity_of_qualifier ends_of_association multiplicity_of_result same_type association_of_association qualifier_attribute"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity_of_object" value="object.is(1,1)"/>
<details key="type_of_object" value="object.type = qualifier.associationEnd.association"/>
<details key="multiplicity_of_qualifier" value="qualifier.is(1,1)"/>
<details key="ends_of_association" value="qualifier.associationEnd.association.memberEnd->forAll(e | not e.isStatic)"/>
<details key="multiplicity_of_result" value="result.is(1,1)"/>
<details key="same_type" value="result.type = qualifier.type"/>
<details key="association_of_association" value="qualifier.associationEnd.association.oclIsKindOf(AssociationClass)"/>
<details key="qualifier_attribute" value="qualifier.associationEnd &lt;> null"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadLinkObjectEndQualifierAction is an Action that retrieves a qualifier end value from a link object.&#xA;object.is(1,1)&#xA;object.type = qualifier.associationEnd.association&#xA;qualifier.is(1,1)&#xA;qualifier.associationEnd.association.memberEnd->forAll(e | not e.isStatic)&#xA;result.is(1,1)&#xA;result.type = qualifier.type&#xA;qualifier.associationEnd.association.oclIsKindOf(AssociationClass)&#xA;qualifier.associationEnd &lt;> null&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndQualifierAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin from which the link object is obtained.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
lowerBound="1" eType="#//Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndQualifierAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualifier Property to be read.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readLinkObjectEndQualifierAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin where the result value is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadSelfAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="contained multiplicity not_static type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="contained" value="_'context' &lt;> null"/>
<details key="multiplicity" value="result.is(1,1)"/>
<details key="not_static" value="let behavior: Behavior = self.containingBehavior() in&#xD;&#xA;behavior.specification&lt;>null implies not behavior.specification.isStatic"/>
<details key="type" value="result.type = _'context'"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadSelfAction is an Action that retrieves the context object of the Behavior execution within which the ReadSelfAction execution is taking place.&#xA;_'context' &lt;> null&#xA;result.is(1,1)&#xA;let behavior: Behavior = self.containingBehavior() in&#xA;behavior.specification&lt;>null implies not behavior.specification.isStatic&#xA;result.type = _'context'&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readSelfAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the context object is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity type_and_ordering"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="structuralFeature.compatibleWith(result)"/>
<details key="type_and_ordering" value="result.type =structuralFeature.type and &#xA;result.isOrdered = structuralFeature.isOrdered&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadStructuralFeatureAction is a StructuralFeatureAction that retrieves the values of a StructuralFeature.&#xA;structuralFeature.compatibleWith(result)&#xA;result.type =structuralFeature.type and &#xA;result.isOrdered = structuralFeature.isOrdered&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readStructuralFeatureAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the result values are placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadVariableAction" eSuperTypes="#//VariableAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_and_ordering compatible_multiplicity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_and_ordering" value="result.type =variable.type and &#xA;result.isOrdered = variable.isOrdered&#xA;"/>
<details key="compatible_multiplicity" value="variable.compatibleWith(result)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReadVariableAction is a VariableAction that retrieves the values of a Variable.&#xA;result.type =variable.type and &#xA;result.isOrdered = variable.isOrdered&#xA;&#xA;variable.compatibleWith(result)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="readVariableAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the result values are placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Realization is a specialized Abstraction relationship between two sets of model Elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="same_name_as_signal same_structure_as_signal"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="same_name_as_signal" value="name = signal.name"/>
<details key="same_structure_as_signal" value="signal.ownedAttribute->size() = ownedParameter->size() and&#xD;&#xA;Sequence{1..signal.ownedAttribute->size()}->forAll( i | &#xD;&#xA; ownedParameter->at(i).direction = ParameterDirectionKind::_'in' and &#xD;&#xA; ownedParameter->at(i).name = signal.ownedAttribute->at(i).name and&#xD;&#xA; ownedParameter->at(i).type = signal.ownedAttribute->at(i).type and&#xD;&#xA; ownedParameter->at(i).lowerBound() = signal.ownedAttribute->at(i).lowerBound() and&#xD;&#xA; ownedParameter->at(i).upperBound() = signal.ownedAttribute->at(i).upperBound()&#xD;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Reception is a declaration stating that a Classifier is prepared to react to the receipt of a Signal.&#xA;name = signal.name&#xA;signal.ownedAttribute->size() = ownedParameter->size() and&#xA;Sequence{1..signal.ownedAttribute->size()}->forAll( i | &#xA; ownedParameter->at(i).direction = ParameterDirectionKind::_'in' and &#xA; ownedParameter->at(i).name = signal.ownedAttribute->at(i).name and&#xA; ownedParameter->at(i).type = signal.ownedAttribute->at(i).type and&#xA; ownedParameter->at(i).lowerBound() = signal.ownedAttribute->at(i).lowerBound() and&#xA; ownedParameter->at(i).upperBound() = signal.ownedAttribute->at(i).upperBound()&#xA;)&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
lowerBound="1" eType="#//Signal">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reception"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Signal that this Reception handles.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReclassifyObjectAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="input_pin classifier_not_abstract multiplicity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="input_pin" value="object.type = null"/>
<details key="classifier_not_abstract" value="not newClassifier->exists(isAbstract)"/>
<details key="multiplicity" value="object.is(1,1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReclassifyObjectAction is an Action that changes the Classifiers that classify an object.&#xA;object.type = null&#xA;not newClassifier->exists(isAbstract)&#xA;object.is(1,1)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether existing Classifiers should be removed before adding the new Classifiers.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="newClassifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reclassifyObjectAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of Classifiers to be added to the Classifiers of the given object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reclassifyObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that holds the object to be reclassified.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="oldClassifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reclassifyObjectAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A set of Classifiers to be removed from the Classifiers of the given object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="redefinition_consistent non_leaf_redefinition redefinition_context_valid"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="redefinition_consistent" value="redefinedElement->forAll(re | re.isConsistentWith(self))"/>
<details key="non_leaf_redefinition" value="redefinedElement->forAll(re | not re.isLeaf)"/>
<details key="redefinition_context_valid" value="redefinedElement->forAll(re | self.isRedefinitionContextValid(re))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A RedefinableElement is an element that, when defined in the context of a Classifier, can be redefined more specifically or differently in the context of another Classifier that specializes (directly or indirectly) the context Classifier.&#xA;redefinedElement->forAll(re | re.isConsistentWith(self))&#xA;redefinedElement->forAll(re | not re.isLeaf)&#xA;redefinedElement->forAll(re | self.isRedefinitionContextValid(re))&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefinitionContext->exists(c | c.allParents()->includesAll(redefinedElement.redefinitionContext)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eParameters name="redefinedElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
upperBound="-1" eType="#//RedefinableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="redefinableElement"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The RedefinableElement that is being redefined by this element.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="redefinableElement"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The contexts that this element may be redefined from.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RedefinableTemplateSignature" eSuperTypes="#//RedefinableElement #//TemplateSignature">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (redefiningElement.oclIsKindOf(RedefinableTemplateSignature))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, as redefinition only adds new formal parameters.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="redefines_parents"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="redefines_parents" value="classifier.allParents()->forAll(c | c.ownedTemplateSignature->notEmpty() implies self->closure(extendedSignature)->includes(c.ownedTemplateSignature))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A RedefinableTemplateSignature supports the addition of formal template parameters in a specialization of a template classifier.&#xA;classifier.allParents()->forAll(c | c.ownedTemplateSignature->notEmpty() implies self->closure(extendedSignature)->includes(c.ownedTemplateSignature))&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eOperations name="inheritedParameter" ordered="false" upperBound="-1" eType="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter->asSet() endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for RedefinableTemplateSignature::/inheritedParameter&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier" changeable="false" volatile="true" transient="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier that owns this RedefinableTemplateSignature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateSignature/template"/>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedSignature" ordered="false"
upperBound="-1" eType="#//RedefinableTemplateSignature">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="redefinableTemplateSignature"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The signatures extended by this RedefinableTemplateSignature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inheritedParameter" ordered="false"
upperBound="-1" eType="#//TemplateParameter" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="redefinableTemplateSignature"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal template parameters of the extended signatures.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//TemplateSignature/parameter"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReduceAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="reducer_inputs_output input_type_is_collection output_types_are_compatible"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="reducer_inputs_output" value="let inputs: OrderedSet(Parameter) = reducer.inputParameters() in&#xD;&#xA;let outputs: OrderedSet(Parameter) = reducer.outputParameters() in&#xD;&#xA;inputs->size()=2 and outputs->size()=1 and&#xD;&#xA;inputs.type->forAll(t | &#xD;&#xA;&#x9;outputs.type->forAll(conformsTo(t)) and &#xD;&#xA;&#x9;-- Note that the following only checks the case when the collection is via multiple tokens.&#xD;&#xA;&#x9;collection.upperBound()>1 implies collection.type.conformsTo(t))"/>
<details key="output_types_are_compatible" value="reducer.outputParameters().type->forAll(conformsTo(result.type))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReduceAction is an Action that reduces a collection to a single value by repeatedly combining the elements of the collection using a reducer Behavior.&#xA;let inputs: OrderedSet(Parameter) = reducer.inputParameters() in&#xA;let outputs: OrderedSet(Parameter) = reducer.outputParameters() in&#xA;inputs->size()=2 and outputs->size()=1 and&#xA;inputs.type->forAll(t | &#xA;&#x9;outputs.type->forAll(conformsTo(t)) and &#xA;&#x9;-- Note that the following only checks the case when the collection is via multiple tokens.&#xA;&#x9;collection.upperBound()>1 implies collection.type.conformsTo(t))&#xA;reducer.outputParameters().type->forAll(conformsTo(result.type))&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="collection" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reduceAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the collection to be reduced.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether the order of the input collection should determine the order in which the reducer Behavior is applied to its elements.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="reducer" ordered="false"
lowerBound="1" eType="#//Behavior">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reduceAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Behavior that is repreatedly applied to two elements of the input collection to produce a value that is of the same type as elements of the collection.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="reduceAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The output pin on which the result value is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//Namespace #//RedefinableElement">
<eAnnotations source="duplicates">
<eAnnotations source="redefinitionContext">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;&#xA;true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies that a redefining Region is consistent with a redefined Region provided that the redefining Region is an extension of the Redefined region, i.e., its Vertices and Transitions conform to one of the following: (1) they are equal to corresponding elements of the redefined Region or, (2) they consistently redefine a State or Transition of the redefined region, or (3) they add new States or Transitions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isRedefinitionContextValid" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if redefinedElement.oclIsKindOf(Region) then&#xD;&#xA; let redefinedRegion : Region = redefinedElement.oclAsType(Region) in&#xD;&#xA; if stateMachine->isEmpty() then&#xD;&#xA; -- the Region is owned by a State&#xD;&#xA; (state.redefinedState->notEmpty() and state.redefinedState.region->includes(redefinedRegion))&#xD;&#xA; else -- the region is owned by a StateMachine&#xD;&#xA; (stateMachine.extendedStateMachine->notEmpty() and&#xD;&#xA; stateMachine.extendedStateMachine->exists(sm : StateMachine |&#xD;&#xA; sm.region->includes(redefinedRegion)))&#xD;&#xA; endif&#xD;&#xA;else&#xD;&#xA; false&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a Region are properly related to the redefinition contexts of the specified Region to allow this element to redefine the other. The containing StateMachine or State of a redefining Region must Redefine the containing StateMachine or State of the redefined Region.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
<eParameters name="redefinedElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="region"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Classifier in which context this element may be redefined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="deep_history_vertex shallow_history_vertex owned initial_vertex"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="deep_history_vertex" value="self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::deepHistory)->size() &lt;= 1&#xA;"/>
<details key="shallow_history_vertex" value="subvertex->select(oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::shallowHistory)->size() &lt;= 1&#xA;"/>
<details key="owned" value="(stateMachine &lt;> null implies state = null) and (state &lt;> null implies stateMachine = null)"/>
<details key="initial_vertex" value="self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::initial)->size() &lt;= 1&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Region is a top-level part of a StateMachine or a composite State, that serves as a container for the Vertices and Transitions of the StateMachine. A StateMachine or composite State may contain multiple Regions representing behaviors that may occur in parallel.&#xA;self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::deepHistory)->size() &lt;= 1&#xA;&#xA;subvertex->select(oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::shallowHistory)->size() &lt;= 1&#xA;&#xA;(stateMachine &lt;> null implies state = null) and (state &lt;> null implies stateMachine = null)&#xA;self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->&#xA; select(kind = PseudostateKind::initial)->size() &lt;= 1&#xA;&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="belongsToPSM" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if stateMachine &lt;> null &#xA;then&#xA; stateMachine.oclIsKindOf(ProtocolStateMachine)&#xA;else &#xA; state &lt;> null implies state.container.belongsToPSM()&#xA;endif )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation belongsToPSM () checks if the Region belongs to a ProtocolStateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if stateMachine = null &#xA;then&#xA; state.containingStateMachine()&#xA;else&#xA; stateMachine&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation containingStateMachine() returns the StateMachine in which this Region is defined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let sm : StateMachine = containingStateMachine() in&#xA;if sm._'context' = null or sm.general->notEmpty() then&#xA; sm&#xA;else&#xA; sm._'context'&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The redefinition context of a Region is the nearest containing StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" ordered="false"
eType="#//Region">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="region"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The region of which this region is an extension.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
eType="#//State" eOpposite="#//State/region">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
eType="#//StateMachine" eOpposite="#//StateMachine/region">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"
upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Vertices that are owned by this Region.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"
upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of Transitions owned by the Region.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Relationship is an abstract concept that specifies some kind of relationship between Elements.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationship"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the elements related by the Relationship.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RemoveStructuralFeatureValueAction"
eSuperTypes="#//WriteStructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="removeAt_and_value"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="removeAt_and_value" value="if structuralFeature.isOrdered and not structuralFeature.isUnique and not isRemoveDuplicates then&#xD;&#xA; value = null and&#xD;&#xA; removeAt &lt;> null and&#xD;&#xA; removeAt.type = UnlimitedNatural and&#xD;&#xA; removeAt.is(1,1)&#xD;&#xA;else&#xD;&#xA; removeAt = null and value &lt;> null&#xD;&#xA;endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A RemoveStructuralFeatureValueAction is a WriteStructuralFeatureAction that removes values from a StructuralFeature.&#xA;if structuralFeature.isOrdered and not structuralFeature.isUnique and not isRemoveDuplicates then&#xA; value = null and&#xA; removeAt &lt;> null and&#xA; removeAt.type = UnlimitedNatural and&#xA; removeAt.is(1,1)&#xA;else&#xA; removeAt = null and value &lt;> null&#xA;endif&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique StructuralFeatures.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="removeStructuralFeatureValueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin that provides the position of an existing value to remove in ordered, nonunique structural features. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RemoveVariableValueAction" eSuperTypes="#//WriteVariableAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="removeAt_and_value"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="removeAt_and_value" value="if variable.isOrdered and not variable.isUnique and not isRemoveDuplicates then &#xD;&#xA; value = null and&#xD;&#xA; removeAt &lt;> null and&#xD;&#xA; removeAt.type = UnlimitedNatural and&#xD;&#xA; removeAt.is(1,1)&#xD;&#xA;else&#xD;&#xA; removeAt = null and value &lt;> null&#xD;&#xA;endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A RemoveVariableValueAction is a WriteVariableAction that removes values from a Variables.&#xA;if variable.isOrdered and not variable.isUnique and not isRemoveDuplicates then &#xA; value = null and&#xA; removeAt &lt;> null and&#xA; removeAt.type = UnlimitedNatural and&#xA; removeAt.is(1,1)&#xA;else&#xA; removeAt = null and value &lt;> null&#xA;endif&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique Variables.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="removeVariableValueAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin that provides the position of an existing value to remove in ordered, nonunique Variables. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReplyAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="pins_match_parameter event_on_reply_to_call_trigger"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="pins_match_parameter" value="let parameter:OrderedSet(Parameter) = replyToCall.event.oclAsType(CallEvent).operation.outputParameters() in&#xD;&#xA;replyValue->size()=parameter->size() and&#xD;&#xA;Sequence{1..replyValue->size()}->forAll(i |&#xD;&#xA;&#x9;replyValue->at(i).type.conformsTo(parameter->at(i).type) and&#xD;&#xA;&#x9;replyValue->at(i).isOrdered=parameter->at(i).isOrdered and&#xD;&#xA;&#x9;replyValue->at(i).compatibleWith(parameter->at(i)))"/>
<details key="event_on_reply_to_call_trigger" value="replyToCall.event.oclIsKindOf(CallEvent)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ReplyAction is an Action that accepts a set of reply values and a value containing return information produced by a previous AcceptCallAction. The ReplyAction returns the values to the caller of the previous call, completing execution of the call.&#xA;let parameter:OrderedSet(Parameter) = replyToCall.event.oclAsType(CallEvent).operation.outputParameters() in&#xA;replyValue->size()=parameter->size() and&#xA;Sequence{1..replyValue->size()}->forAll(i |&#xA;&#x9;replyValue->at(i).type.conformsTo(parameter->at(i).type) and&#xA;&#x9;replyValue->at(i).isOrdered=parameter->at(i).isOrdered and&#xA;&#x9;replyValue->at(i).compatibleWith(parameter->at(i)))&#xA;replyToCall.event.oclIsKindOf(CallEvent)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
lowerBound="1" eType="#//Trigger">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="replyAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Trigger specifying the Operation whose call is being replied to.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyValue" upperBound="-1"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="replyAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A list of InputPins providing the values for the output (inout, out, and return) Parameters of the Operation. These values are returned to the caller.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="replyAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin that holds the return information value produced by an earlier AcceptCallAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SendObjectAction" eSuperTypes="#//InvocationAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_target_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_target_pin" value="onPort&lt;>null implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SendObjectAction is an InvocationAction that transmits an input object to the target object, which is handled as a request message by the target object. The requestor continues execution immediately after the object is sent out and cannot receive reply values.&#xA;onPort&lt;>null implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="request" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="sendObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InvocationAction/argument"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="sendObjectAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The target object to which the object is sent.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SendSignalAction" eSuperTypes="#//InvocationAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="type_ordering_multiplicity number_order type_target_pin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="type_ordering_multiplicity" value="let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;&#xA;Sequence{1..argument->size()}->forAll(i | &#xD;&#xA;&#x9;argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;&#xA;&#x9;argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;&#xA;&#x9;argument->at(i).compatibleWith(attribute->at(i)))"/>
<details key="number_order" value="argument->size()=signal.allAttributes()->size()"/>
<details key="type_target_pin" value="not onPort->isEmpty() implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SendSignalAction is an InvocationAction that creates a Signal instance and transmits it to the target object. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instance is sent out and cannot receive reply values.&#xA;let attribute: OrderedSet(Property) = signal.allAttributes() in&#xA;Sequence{1..argument->size()}->forAll(i | &#xA;&#x9;argument->at(i).type.conformsTo(attribute->at(i).type) and &#xA;&#x9;argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xA;&#x9;argument->at(i).compatibleWith(attribute->at(i)))&#xA;argument->size()=signal.allAttributes()->size()&#xA;not onPort->isEmpty() implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
lowerBound="1" eType="#//Signal">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="sendSignalAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Signal whose instance is transmitted to the target.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="sendSignalAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the target object to which the Signal instance is sent.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SequenceNode" eSuperTypes="#//StructuredActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SequenceNode is a StructuredActivityNode that executes a sequence of ExecutableNodes in order.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="executableNode" upperBound="-1"
eType="#//ExecutableNode" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="sequenceNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of ExecutableNodes to be sequenced.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredActivityNode/node"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Signal is a specification of a kind of communication between objects in which a reaction is asynchronously triggered in the receiver without a reply.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningSignal"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The attributes owned by the Signal.&#xA;&lt;p>From package UML::SimpleClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SignalEvent" eSuperTypes="#//MessageEvent">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SignalEvent represents the receipt of an asynchronous Signal instance.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
lowerBound="1" eType="#//Signal">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="signalEvent"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The specific Signal that is associated with this SignalEvent.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Slot" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Slot designates that an entity modeled by an InstanceSpecification has a value or values for a specific StructuralFeature.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="definingFeature" ordered="false"
lowerBound="1" eType="#//StructuralFeature">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="slot"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StructuralFeature that specifies the values that may be held by the Slot.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningInstance" ordered="false"
lowerBound="1" eType="#//InstanceSpecification" eOpposite="#//InstanceSpecification/slot">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InstanceSpecification that owns this Slot.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningSlot"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value or values held by the Slot.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StartClassifierBehaviorAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity type_has_classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="object.is(1,1)"/>
<details key="type_has_classifier" value="object.type->notEmpty() implies &#xD;&#xA; (object.type.oclIsKindOf(BehavioredClassifier) and object.type.oclAsType(BehavioredClassifier).classifierBehavior&lt;>null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StartClassifierBehaviorAction is an Action that starts the classifierBehavior of the input object.&#xA;object.is(1,1)&#xA;object.type->notEmpty() implies &#xA; (object.type.oclIsKindOf(BehavioredClassifier) and object.type.oclAsType(BehavioredClassifier).classifierBehavior&lt;>null)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="startClassifierBehaviorAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that holds the object whose classifierBehavior is to be started.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StartObjectBehaviorAction" eSuperTypes="#//CallAction">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="outputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.behavior().outputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the inout, out and return ownedParameters of the Behavior being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/outputParameters"/>
</contents>
<contents xsi:type="ecore:EOperation" name="inputParameters" upperBound="-1"
eType="#//Parameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.behavior().inputParameters())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return the in and inout ownedParameters of the Behavior being called.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//CallAction/inputParameters"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity_of_object type_of_object no_onport"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity_of_object" value="object.is(1,1)"/>
<details key="type_of_object" value="self.behavior()&lt;>null"/>
<details key="no_onport" value="onPort->isEmpty()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StartObjectBehaviorAction is an InvocationAction that starts the execution either of a directly instantiated Behavior or of the classifierBehavior of an object. Argument values may be supplied for the input Parameters of the Behavior. If the Behavior is invoked synchronously, then output values may be obtained for output Parameters.&#xA;object.is(1,1)&#xA;self.behavior()&lt;>null&#xA;onPort->isEmpty()&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="behavior" ordered="false" eType="#//Behavior">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if object.type.oclIsKindOf(Behavior) then&#xD;&#xA; object.type.oclAsType(Behavior)&#xD;&#xA;else if object.type.oclIsKindOf(BehavioredClassifier) then&#xD;&#xA; object.type.oclAsType(BehavioredClassifier).classifierBehavior&#xD;&#xA;else&#xD;&#xA; null&#xD;&#xA;endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If the type of the object InputPin is a Behavior, then that Behavior. Otherwise, if the type of the object InputPin is a BehavioredClassifier, then the classifierBehavior of that BehavioredClassifier.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="startObjectBehaviorAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An InputPin that holds the object that is either a Behavior to be started or has a classifierBehavior to be started.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Namespace #//RedefinableElement #//Vertex">
<eAnnotations source="duplicates">
<eAnnotations source="redefinitionContext">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="containingStateMachine" ordered="false"
lowerBound="1" eType="#//StateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (container.containingStateMachine())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query containingStateMachine() returns the StateMachine that contains the State either directly or transitively.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Vertex/containingStateMachine"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;&#xA;true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies that a redefining State is consistent with a redefined State provided that the redefining State is an extension of the redefined State A simple State can be redefined (extended) to become a composite State (by adding one or more Regions) and a composite State can be redefined (extended) by adding Regions and by adding Vertices, States, and Transitions to inherited Regions. All States may add or replace entry, exit, and 'doActivity' Behaviors.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isRedefinitionContextValid" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if redefinedElement.oclIsKindOf(State) then&#xD;&#xA; let redefinedState : State = redefinedElement.oclAsType(State) in&#xD;&#xA; container.redefinedElement.oclAsType(Region)->exists(r:Region |&#xD;&#xA; r.subvertex->includes(redefinedState))&#xD;&#xA;else&#xD;&#xA; false&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a State are properly related to the redefinition contexts of the specified State to allow this element to redefine the other. This means that the containing Region of a redefining State must redefine the containing Region of the redefined State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
<eParameters name="redefinedElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Classifier in which context this element may be redefined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="entry_or_exit submachine_states composite_states destinations_or_sources_of_transitions submachine_or_regions"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="entry_or_exit" value="connectionPoint->forAll(kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)"/>
<details key="submachine_states" value="isSubmachineState implies connection->notEmpty( )"/>
<details key="composite_states" value="connectionPoint->notEmpty() implies isComposite"/>
<details key="destinations_or_sources_of_transitions" value="self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA; cp.entry->forAll (ps | ps.stateMachine = self.submachine) and&#xD;&#xA; cp.exit->forAll (ps | ps.stateMachine = self.submachine)))"/>
<details key="submachine_or_regions" value="isComposite implies not isSubmachineState"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A State models a situation during which some (usually implicit) invariant condition holds.&#xA;connectionPoint->forAll(kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)&#xA;isSubmachineState implies connection->notEmpty( )&#xA;connectionPoint->notEmpty() implies isComposite&#xA;self.isSubmachineState implies (self.connection->forAll (cp |&#xA; cp.entry->forAll (ps | ps.stateMachine = self.submachine) and&#xA; cp.exit->forAll (ps | ps.stateMachine = self.submachine)))&#xA;isComposite implies not isSubmachineState&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (region->notEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A composite State is a State with at least one Region.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isOrthogonal" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (region->size () > 1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An orthogonal State is a composite state with at least 2 regions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isSimple" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = ((region->isEmpty()) and not isSubmachineState())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A simple State is a State without any regions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isSubmachineState" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (submachine &lt;> null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Only submachine State references another StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let sm : StateMachine = containingStateMachine() in&#xA;if sm._'context' = null or sm.general->notEmpty() then&#xA; sm&#xA;else&#xA; sm._'context'&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The redefinition context of a State is the nearest containing StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"
upperBound="-1" eType="#//ConnectionPointReference" containment="true" eOpposite="#//ConnectionPointReference/state">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The entry and exit connection points used in conjunction with this (submachine) State, i.e., as targets and sources, respectively, in the Region with the submachine State. A connection point reference references the corresponding definition of a connection point Pseudostate in the StateMachine referenced by the submachine State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/state">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The entry and exit Pseudostates of a composite State. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite States.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"
upperBound="-1" eType="#//Trigger" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A list of Triggers that are candidates to be retained by the StateMachine if they trigger no Transitions out of the State (not consumed). A deferred Trigger is retained until the StateMachine reaches a State configuration where it is no longer deferred.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"
eType="#//Behavior" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional Behavior that is executed while being in the State. The execution starts when this State is entered, and ceases either by itself when done, or when the State is exited, whichever comes first.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
eType="#//Behavior" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional Behavior that is executed whenever this State is entered regardless of the Transition taken to reach the State. If defined, entry Behaviors are always executed to completion prior to any internal Behavior or Transitions performed within the State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Behavior"
containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An optional Behavior that is executed whenever this State is exited regardless of which Transition was taken out of the State. If defined, exit Behaviors are always executed to completion only after all internal and transition Behaviors have completed execution.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A state with isComposite=true is said to be a composite State. A composite State is a State that contains at least one Region.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A State with isOrthogonal=true is said to be an orthogonal composite State An orthogonal composite State contains two or more Regions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A State with isSimple=true is said to be a simple State A simple State does not have any Regions and it does not refer to any submachine StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"
lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A State with isSubmachineState=true is said to be a submachine State Such a State refers to another StateMachine(submachine).&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" ordered="false"
eType="#//State">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="state"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The State of which this State is a redefinition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/state">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Regions owned directly by the State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"
eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningState"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies conditions that are always true when this State is the current State. In ProtocolStateMachines state invariants are additional conditions to the preconditions of the outgoing Transitions, and to the postcondition of the incoming Transitions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"
eType="#//StateMachine" eOpposite="#//StateMachine/submachineState">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StateMachine that is to be inserted in place of the (submachine) State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
<eAnnotations source="duplicates">
<eAnnotations source="covered">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
eType="#//Lifeline">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="stateInvariant"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Lifeline on which the StateInvariant appears.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StateInvariant is a runtime constraint on the participants of the Interaction. It may be used to specify a variety of different kinds of Constraints, such as values of Attributes or Variables, internal or external States, and so on. A StateInvariant is an InteractionFragment and it is placed on a Lifeline.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
lowerBound="1" eType="#//Constraint" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="stateInvariant"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Constraint that should hold at runtime for this StateInvariant.&#xA;&lt;p>From package UML::Interactions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;&#xA;true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies that a redefining StateMachine is consistent with a redefined StateMachine provided that the redefining StateMachine is an extension of the redefined StateMachine : Regions are inherited and Regions can be added, inherited Regions can be redefined. In case of multiple redefining StateMachine, extension implies that the redefining StateMachine gets orthogonal Regions for each of the redefined StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EOperation" name="isRedefinitionContextValid" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if redefinedElement.oclIsKindOf(StateMachine) then&#xD;&#xA; let redefinedStateMachine : StateMachine = redefinedElement.oclAsType(StateMachine) in&#xD;&#xA; self._'context'().oclAsType(BehavioredClassifier).redefinedClassifier->&#xD;&#xA; includes(redefinedStateMachine._'context'())&#xD;&#xA;else&#xD;&#xA; false&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition context of a StateMachine is properly related to the redefinition contexts of the specified StateMachine to allow this element to redefine the other. The context Classifier of a redefining StateMachine must redefine the context Classifier of the redefined StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
<eParameters name="redefinedElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="connection_points classifier_context method context_classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="connection_points" value="connectionPoint->forAll (kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)"/>
<details key="classifier_context" value="_'context' &lt;> null implies not _'context'.oclIsKindOf(Interface)"/>
<details key="method" value="specification &lt;> null implies connectionPoint->isEmpty()"/>
<details key="context_classifier" value="specification &lt;> null implies ( _'context' &lt;> null and specification.featuringClassifier->exists(c | c = _'context'))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="StateMachines can be used to express event-driven behaviors of parts of a system. Behavior is modeled as a traversal of a graph of Vertices interconnected by one or more joined Transition arcs that are triggered by the dispatching of successive Event occurrences. During this traversal, the StateMachine may execute a sequence of Behaviors associated with various elements of the StateMachine.&#xA;connectionPoint->forAll (kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)&#xA;_'context' &lt;> null implies not _'context'.oclIsKindOf(Interface)&#xA;specification &lt;> null implies connectionPoint->isEmpty()&#xA;specification &lt;> null implies ( _'context' &lt;> null and specification.featuringClassifier->exists(c | c = _'context'))&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="LCA" ordered="false" lowerBound="1" eType="#//Region">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if ancestor(s1, s2) then &#xD;&#xA; s2.container&#xD;&#xA;else&#xD;&#xA;&#x9;if ancestor(s2, s1) then&#xD;&#xA;&#x9; s1.container &#xD;&#xA;&#x9;else &#xD;&#xA;&#x9; LCA(s1.container.state, s2.container.state)&#xD;&#xA;&#x9;endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation LCA(s1,s2) returns the Region that is the least common ancestor of Vertices s1 and s2, based on the StateMachine containment hierarchy.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eParameters name="s1" ordered="false" lowerBound="1" eType="#//Vertex"/>
<eParameters name="s2" ordered="false" lowerBound="1" eType="#//Vertex"/>
</eOperations>
<eOperations name="LCAState" ordered="false" lowerBound="1" eType="#//State">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if v2.oclIsTypeOf(State) and ancestor(v1, v2) then&#xD;&#xA;&#x9;v2.oclAsType(State)&#xD;&#xA;else if v1.oclIsTypeOf(State) and ancestor(v2, v1) then&#xD;&#xA;&#x9;v1.oclAsType(State)&#xD;&#xA;else if (v1.container.state->isEmpty() or v2.container.state->isEmpty()) then &#xD;&#xA;&#x9;null.oclAsType(State)&#xD;&#xA;else LCAState(v1.container.state, v2.container.state)&#xD;&#xA;endif endif endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This utility funciton is like the LCA, except that it returns the nearest composite State that contains both input Vertices.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eParameters name="v1" ordered="false" lowerBound="1" eType="#//Vertex"/>
<eParameters name="v2" ordered="false" lowerBound="1" eType="#//Vertex"/>
</eOperations>
<eOperations name="ancestor" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if (s2 = s1) then &#xD;&#xA;&#x9;true &#xD;&#xA;else &#xD;&#xA;&#x9;if s1.container.stateMachine->notEmpty() then &#xD;&#xA;&#x9; true&#xD;&#xA;&#x9;else &#xD;&#xA;&#x9; if s2.container.stateMachine->notEmpty() then &#xD;&#xA;&#x9; false&#xD;&#xA;&#x9; else&#xD;&#xA;&#x9; ancestor(s1, s2.container.state)&#xD;&#xA;&#x9; endif&#xD;&#xA;&#x9; endif&#xD;&#xA;endif )"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query ancestor(s1, s2) checks whether Vertex s2 is an ancestor of Vertex s1.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eParameters name="s1" ordered="false" lowerBound="1" eType="#//Vertex"/>
<eParameters name="s2" ordered="false" lowerBound="1" eType="#//Vertex"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/stateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The connection points defined for this StateMachine. They represent the interface of the StateMachine when used as part of submachine State&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" ordered="false"
upperBound="-1" eType="#//StateMachine">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="stateMachine"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StateMachines of which this is an extension.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Behavior/redefinedBehavior"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/stateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Regions owned directly by the StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="submachineState" ordered="false"
upperBound="-1" eType="#//State" eOpposite="#//State/submachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the submachine(s) in case of a submachine State. Multiple machines are referenced in case of a concurrent State.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="binaryAssociationsOnly generalize name_not_clash associationEndOwnership base_property_upper_bound base_property_multiplicity_single_extension base_property_multiplicity_multiple_extension"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="binaryAssociationsOnly" value="ownedAttribute.association->forAll(memberEnd->size()=2)"/>
<details key="generalize" value="allParents()->forAll(oclIsKindOf(Stereotype)) &#xD;&#xA;and Classifier.allInstances()->forAll(c | c.allParents()->exists(oclIsKindOf(Stereotype)) implies c.oclIsKindOf(Stereotype))&#xD;&#xA;"/>
<details key="associationEndOwnership" value="ownedAttribute&#xD;&#xA;->select(association->notEmpty() and not association.oclIsKindOf(Extension) and not type.oclIsKindOf(Stereotype))&#xD;&#xA;->forAll(opposite.owner = association)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.&#xA;ownedAttribute.association->forAll(memberEnd->size()=2)&#xA;allParents()->forAll(oclIsKindOf(Stereotype)) &#xA;and Classifier.allInstances()->forAll(c | c.allParents()->exists(oclIsKindOf(Stereotype)) implies c.oclIsKindOf(Stereotype))&#xA;&#xA;ownedAttribute&#xA;->select(association->notEmpty() and not association.oclIsKindOf(Extension) and not type.oclIsKindOf(Stereotype))&#xA;->forAll(opposite.owner = association)&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eOperations name="containingProfile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.namespace.oclAsType(Package).containingProfile())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query containingProfile returns the closest profile directly or indirectly containing this stereotype.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.containingProfile())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A stereotype must be contained, directly or indirectly, in a profile.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="icon" ordered="false" upperBound="-1"
eType="#//Image" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="stereotype"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="profile" ordered="false"
lowerBound="1" eType="#//Profile" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="stereotype"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile that directly or indirectly contains this stereotype.&#xA;&lt;p>From package UML::Packages.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StringExpression" eSuperTypes="#//Expression #//TemplateableElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if subExpression->notEmpty()&#xA;then subExpression->iterate(se; stringValue: String = '' | stringValue.concat(se.stringValue()))&#xA;else operand->iterate(op; stringValue: String = '' | stringValue.concat(op.stringValue()))&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query stringValue() returns the String resulting from concatenating, in order, all the component String values of all the operands or subExpressions that are part of the StringExpression.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="operands subexpressions"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="operands" value="operand->forAll (oclIsKindOf (LiteralString))"/>
<details key="subexpressions" value="if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty() endif"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StringExpression is an Expression that specifies a String value that is derived by concatenating a sequence of operands with String values or a sequence of subExpressions, some of which might be template parameters.&#xA;operand->forAll (oclIsKindOf (LiteralString))&#xA;if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty() endif&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningExpression" ordered="false"
eType="#//StringExpression" eOpposite="#//StringExpression/subExpression">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StringExpression of which this StringExpression is a subExpression.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" upperBound="-1"
eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StringExpressions that constitute this StringExpression.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuralFeature" abstract="true" eSuperTypes="#//Feature #//TypedElement #//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StructuralFeature is a typed feature of a Classifier that specifies the structure of instances of the Classifier.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If isReadOnly is true, the StructuralFeature may not be written to after initialization.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuralFeatureAction" abstract="true"
eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity object_type visibility not_static one_featuring_classifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="object.is(1,1)"/>
<details key="object_type" value="object.type.oclAsType(Classifier).allFeatures()->includes(structuralFeature) or&#xD;&#xA;&#x9;object.type.conformsTo(structuralFeature.oclAsType(Property).opposite.type)"/>
<details key="visibility" value="structuralFeature.visibility = VisibilityKind::public or&#xA;_'context'.allFeatures()->includes(structuralFeature) or&#xA;structuralFeature.visibility=VisibilityKind::protected and&#xA;_'context'.conformsTo(structuralFeature.oclAsType(Property).opposite.type.oclAsType(Classifier))&#xA;"/>
<details key="not_static" value="not structuralFeature.isStatic"/>
<details key="one_featuring_classifier" value="structuralFeature.featuringClassifier->size() = 1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="StructuralFeatureAction is an abstract class for all Actions that operate on StructuralFeatures.&#xA;object.is(1,1)&#xA;object.type.oclAsType(Classifier).allFeatures()->includes(structuralFeature) or&#xA;&#x9;object.type.conformsTo(structuralFeature.oclAsType(Property).opposite.type)&#xA;structuralFeature.visibility = VisibilityKind::public or&#xA;_'context'.allFeatures()->includes(structuralFeature) or&#xA;structuralFeature.visibility=VisibilityKind::protected and&#xA;_'context'.conformsTo(structuralFeature.oclAsType(Property).opposite.type.oclAsType(Classifier))&#xA;&#xA;not structuralFeature.isStatic&#xA;structuralFeature.featuringClassifier->size() = 1&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuralFeatureAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin from which the object whose StructuralFeature is to be read or written is obtained.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
lowerBound="1" eType="#//StructuralFeature">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuralFeatureAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The StructuralFeature to be read or written.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="allActions" ordered="false" upperBound="-1"
eType="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (node->select(oclIsKindOf(Action)).oclAsType(Action).allActions()->including(self)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns this StructuredActivityNode and all Actions contained in it.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Action/allActions"/>
</contents>
<contents xsi:type="ecore:EOperation" name="allOwnedNodes" ordered="false" upperBound="-1"
eType="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.Action::allOwnedNodes()->union(node)->union(node->select(oclIsKindOf(Action)).oclAsType(Action).allOwnedNodes())->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Returns all the ActivityNodes contained directly or indirectly within this StructuredActivityNode, in addition to the Pins of the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Action/allOwnedNodes"/>
</contents>
<contents xsi:type="ecore:EOperation" name="containingActivity" ordered="false"
eType="#//Activity">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.Action::containingActivity())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity that directly or indirectly contains this StructuredActivityNode (considered as an Action).&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ActivityGroup/containingActivity #//ActivityNode/ActivityNode_containingActivity"/>
</contents>
<contents xsi:type="ecore:EReference" name="activity" ordered="false" eType="#//Activity"
eOpposite="#//Activity/structuredNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Activity immediately containing the StructuredActivityNode, if it is not contained in another StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ActivityGroup/inActivity #//ActivityNode/activity"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="output_pin_edges edges input_pin_edges"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="output_pin_edges" value="output.outgoing.target->excludesAll(allOwnedNodes()-input)"/>
<details key="edges" value="edge=self.sourceNodes().outgoing->intersection(self.allOwnedNodes().incoming)->&#xD;&#xA;&#x9;union(self.targetNodes().incoming->intersection(self.allOwnedNodes().outgoing))->asSet()"/>
<details key="input_pin_edges" value="input.incoming.source->excludesAll(allOwnedNodes()-output)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StructuredActivityNode is an Action that is also an ActivityGroup and whose behavior is specified by the ActivityNodes and ActivityEdges it so contains. Unlike other kinds of ActivityGroup, a StructuredActivityNode owns the ActivityNodes and ActivityEdges it contains, and so a node or edge can only be directly contained in one StructuredActivityNode, though StructuredActivityNodes may be nested.&#xA;output.outgoing.target->excludesAll(allOwnedNodes()-input)&#xA;edge=self.sourceNodes().outgoing->intersection(self.allOwnedNodes().incoming)->&#xA;&#x9;union(self.targetNodes().incoming->intersection(self.allOwnedNodes().outgoing))->asSet()&#xA;input.incoming.source->excludesAll(allOwnedNodes()-output)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eOperations name="sourceNodes" ordered="false" upperBound="-1" eType="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (node->union(input.oclAsType(ActivityNode)->asSet())->&#xD;&#xA; union(node->select(oclIsKindOf(Action)).oclAsType(Action).output)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as sources of edges owned by the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="targetNodes" ordered="false" upperBound="-1" eType="#//ActivityNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (node->union(output.oclAsType(ActivityNode)->asSet())->&#xD;&#xA; union(node->select(oclIsKindOf(Action)).oclAsType(Action).input)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as targets of edges owned by the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityEdges immediately contained in the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/containedEdge #//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, then any object used by an Action within the StructuredActivityNode cannot be accessed by any Action outside the node until the StructuredActivityNode as a whole completes. Any concurrent Actions that would result in accessing such objects are required to have their execution deferred until the completion of the StructuredActivityNode.&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ActivityNodes immediately contained in the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//ActivityGroup/containedNode #//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuredNodeInput" ordered="false"
upperBound="-1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredActivityNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPins owned by the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuredNodeOutput" ordered="false"
upperBound="-1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredActivityNode"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins owned by the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Variables defined in the scope of the StructuredActivityNode.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"
eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="StructuredClassifiers may contain an internal structure of connected elements each of which plays a role in the overall Behavior modeled by the StructuredClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eOperations name="allRoles" ordered="false" upperBound="-1" eType="#//ConnectableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (allFeatures()->select(oclIsKindOf(ConnectableElement))->collect(oclAsType(ConnectableElement))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="All features of type ConnectableElement, equivalent to all direct and inherited roles.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="part" ordered="false" upperBound="-1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedAttribute->select(isComposite))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for StructuredClassifier::/part&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Properties owned by the StructuredClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember #//StructuredClassifier/role"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
upperBound="-1" eType="#//Connector" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The connectors owned by the StructuredClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredClassifier"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Properties specifying instances that the StructuredClassifier owns by composition. This collection is derived, selecting those owned Properties where isComposite is true.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="structuredClassifier"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The roles that instances may play in this StructuredClassifier.&#xA;&lt;p>From package UML::StructuredClassifiers.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Substitution" eSuperTypes="#//Realization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A substitution is a relationship between two classifiers signifying that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="substitution"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The contract with which the substituting classifier complies.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/supplier"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"
ordered="false" lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/substitution">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.&#xA;&lt;p>From package UML::Classification.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Dependency/client #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="parameter_substitution_formal one_parameter_substitution"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="parameter_substitution_formal" value="parameterSubstitution->forAll(b | signature.parameter->includes(b.formal))"/>
<details key="one_parameter_substitution" value="signature.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TemplateBinding is a DirectedRelationship between a TemplateableElement and a template. A TemplateBinding specifies the TemplateParameterSubstitutions of actual parameters for the formal parameters of the template.&#xA;parameterSubstitution->forAll(b | signature.parameter->includes(b.formal))&#xA;signature.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" ordered="false"
lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/templateBinding">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateableElement that is bound by this TemplateBinding.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
ordered="false" upperBound="-1" eType="#//TemplateParameterSubstitution" containment="true"
eOpposite="#//TemplateParameterSubstitution/templateBinding">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateParameterSubstitutions owned by this TemplateBinding.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
lowerBound="1" eType="#//TemplateSignature">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateBinding"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateSignature for the template that is the target of this TemplateBinding.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="must_be_compatible"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="must_be_compatible" value="default &lt;> null implies default.isCompatibleWith(parameteredElement)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TemplateParameter exposes a ParameterableElement as a formal parameter of a template.&#xA;default &lt;> null implies default.isCompatibleWith(parameteredElement)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="default" ordered="false"
eType="#//ParameterableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateParameter"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement that is the default for this formal TemplateParameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" ordered="false"
eType="#//ParameterableElement" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateParameter"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement that is owned by this TemplateParameter for the purpose of providing a default.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameter/default"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
ordered="false" eType="#//ParameterableElement" containment="true" eOpposite="#//ParameterableElement/owningTemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement that is owned by this TemplateParameter for the purpose of exposing it as the parameteredElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameter/parameteredElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ParameterableElement/templateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement exposed by this TemplateParameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateSignature that owns this TemplateParameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameterSubstitution" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="must_be_compatible"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="must_be_compatible" value="actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TemplateParameterSubstitution relates the actual parameter to a formal TemplateParameter as part of a template binding.&#xA;actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="actual" ordered="false"
lowerBound="1" eType="#//ParameterableElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateParameterSubstitution"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement that is the actual parameter for this TemplateParameterSubstitution.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
lowerBound="1" eType="#//TemplateParameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateParameterSubstitution"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal TemplateParameter that is associated with this TemplateParameterSubstitution.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"
eType="#//ParameterableElement" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningTemplateParameterSubstitution"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ParameterableElement that is owned by this TemplateParameterSubstitution as its actual parameter.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameterSubstitution/actual"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
lowerBound="1" eType="#//TemplateBinding" eOpposite="#//TemplateBinding/parameterSubstitution">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateBinding that owns this TemplateParameterSubstitution.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="own_elements unique_parameters"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="own_elements" value="template.ownedElement->includesAll(parameter.parameteredElement->asSet() - parameter.ownedParameteredElement->asSet())"/>
<details key="unique_parameters" value="parameter->forAll( p1, p2 | (p1 &lt;> p2 and p1.parameteredElement.oclIsKindOf(NamedElement) and p2.parameteredElement.oclIsKindOf(NamedElement) ) implies&#xD;&#xA; p1.parameteredElement.oclAsType(NamedElement).name &lt;> p2.parameteredElement.oclAsType(NamedElement).name)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Template Signature bundles the set of formal TemplateParameters for a template.&#xA;template.ownedElement->includesAll(parameter.parameteredElement->asSet() - parameter.ownedParameteredElement->asSet())&#xA;parameter->forAll( p1, p2 | (p1 &lt;> p2 and p1.parameteredElement.oclIsKindOf(NamedElement) and p2.parameteredElement.oclIsKindOf(NamedElement) ) implies&#xA; p1.parameteredElement.oclAsType(NamedElement).name &lt;> p2.parameteredElement.oclAsType(NamedElement).name)&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//TemplateParameter" containment="true" eOpposite="#//TemplateParameter/signature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal parameters that are owned by this TemplateSignature.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateSignature/parameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
upperBound="-1" eType="#//TemplateParameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateSignature"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of all formal TemplateParameters for this TemplateSignature.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="template" ordered="false"
lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/ownedTemplateSignature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TemplateableElement that owns this TemplateSignature.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateableElement" abstract="true"
eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TemplateableElement is an Element that can optionally be defined as a template and bound to other templates.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="isTemplate" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (ownedTemplateSignature &lt;> null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplate() returns whether this TemplateableElement is actually a template.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.allOwnedElements()->select(oclIsKindOf(ParameterableElement)).oclAsType(ParameterableElement)->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query parameterableElements() returns the set of ParameterableElements that may be used as the parameteredElements for a TemplateParameter of this TemplateableElement. By default, this set includes all the ownedElements. Subclasses may override this operation if they choose to restrict the set of ParameterableElements.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedTemplateSignature"
ordered="false" eType="#//TemplateSignature" containment="true" eOpposite="#//TemplateSignature/template">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional TemplateSignature specifying the formal TemplateParameters for this TemplateableElement. If a TemplateableElement has a TemplateSignature, then it is a template.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
upperBound="-1" eType="#//TemplateBinding" containment="true" eOpposite="#//TemplateBinding/boundElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional TemplateBindings from this TemplateableElement to one or more templates.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestIdentityAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity no_type result_is_boolean"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="first.is(1,1) and second.is(1,1)&#xA;"/>
<details key="no_type" value="first.type= null and second.type = null&#xA;"/>
<details key="result_is_boolean" value="result.type=Boolean"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TestIdentityAction is an Action that tests if two values are identical objects.&#xA;first.is(1,1) and second.is(1,1)&#xA;&#xA;first.type= null and second.type = null&#xA;&#xA;result.type=Boolean&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="testIdentityAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin on which the first input object is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="testIdentityAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin whose Boolean value indicates whether the two input objects are identical.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="second" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="testIdentityAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the second input object is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeConstraint" eSuperTypes="#//IntervalConstraint">
<eAnnotations source="duplicates">
<eAnnotations source="specification">
<details key="eType" value="UML::TimeInterval"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeConstraint"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="TheTimeInterval constraining the duration.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="has_one_constrainedElement"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="has_one_constrainedElement" value="constrainedElement->size() = 1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeConstraint is a Constraint that refers to a TimeInterval.&#xA;constrainedElement->size() = 1&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
eType="#//BooleanObject" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of firstEvent is related to the constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within the constrainedElement.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeEvent" eSuperTypes="#//Event">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="when_non_negative"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="when_non_negative" value="when.integerValue() >= 0"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeEvent is an Event that occurs at a specific point in time.&#xA;when.integerValue() >= 0&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the TimeEvent is specified as an absolute or relative time.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"
eType="#//TimeExpression" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeEvent"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the time of the TimeEvent.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_expr_requires_observation"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_expr_requires_observation" value="expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(TimeObservation)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeExpression is a ValueSpecification that represents a time value.&#xA;expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(TimeObservation)))&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeExpression"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification that evaluates to the value of the TimeExpression.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
upperBound="-1" eType="#//Observation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeExpression"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the Observations that are involved in the computation of the TimeExpression value.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeInterval" eSuperTypes="#//Interval">
<eAnnotations source="duplicates">
<eAnnotations source="max">
<details key="eType" value="UML::TimeExpression"/>
</eAnnotations>
<eAnnotations source="min">
<details key="eType" value="UML::TimeExpression"/>
</eAnnotations>
<contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeInterval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the TimeExpression denoting the maximum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/max"/>
</contents>
<contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
eType="#//ValueSpecification">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeInterval"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to the TimeExpression denoting the minimum value of the range.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/min"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeInterval defines the range between two TimeExpressions.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeObservation" eSuperTypes="#//Observation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeObservation is a reference to a time instant during an execution. It points out the NamedElement in the model to observe and whether the observation is when this NamedElement is entered or when it is exited.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
lowerBound="1" eType="#//NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="timeObservation"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The TimeObservation is determined by the entering or exiting of the event Element during execution.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value of firstEvent is related to the event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the event Element. If firstEvent is false, then the corresponding observation event is the time instant the execution exits the event Element.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Namespace #//RedefinableElement">
<eAnnotations source="duplicates">
<eAnnotations source="redefinitionContext">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
<contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;&#xA;true)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies that a redefining Transition is consistent with a redefined Transition provided that the redefining Transition has the following relation to the redefined Transition: A redefining Transition redefines all properties of the corresponding redefined Transition except the source State and the Trigger.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
<eParameters name="redefiningElement" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</contents>
<contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transition"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Classifier in which context this element may be redefined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="state_is_external join_segment_guards state_is_internal outgoing_pseudostates join_segment_state fork_segment_state state_is_local initial_transition fork_segment_guards"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="state_is_external" value="(kind = TransitionKind::external) implies&#xD;&#xA;&#x9;not (source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint)"/>
<details key="join_segment_guards" value="(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (guard = null and trigger->isEmpty())"/>
<details key="state_is_internal" value="(kind = TransitionKind::internal) implies&#xD;&#xA;&#x9;&#x9;(source.oclIsKindOf (State) and source = target)"/>
<details key="outgoing_pseudostates" value="source.oclIsKindOf(Pseudostate) and (source.oclAsType(Pseudostate).kind &lt;> PseudostateKind::initial) implies trigger->isEmpty()"/>
<details key="join_segment_state" value="(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (source.oclIsKindOf(State))"/>
<details key="fork_segment_state" value="(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (target.oclIsKindOf(State))"/>
<details key="state_is_local" value="(kind = TransitionKind::local) implies&#xD;&#xA;&#x9;&#x9;((source.oclIsKindOf (State) and source.oclAsType(State).isComposite) or&#xD;&#xA;&#x9;&#x9;(source.oclIsKindOf (Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint))"/>
<details key="initial_transition" value="(source.oclIsKindOf(Pseudostate) and container.stateMachine->notEmpty()) implies&#xA;&#x9;trigger->isEmpty()&#xA;"/>
<details key="fork_segment_guards" value="(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (guard = null and trigger->isEmpty())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Transition represents an arc between exactly one source Vertex and exactly one Target vertex (the source and targets may be the same Vertex). It may form part of a compound transition, which takes the StateMachine from one steady State configuration to another, representing the full response of the StateMachine to an occurrence of an Event that triggered it.&#xA;(kind = TransitionKind::external) implies&#xA;&#x9;not (source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint)&#xA;(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (guard = null and trigger->isEmpty())&#xA;(kind = TransitionKind::internal) implies&#xA;&#x9;&#x9;(source.oclIsKindOf (State) and source = target)&#xA;source.oclIsKindOf(Pseudostate) and (source.oclAsType(Pseudostate).kind &lt;> PseudostateKind::initial) implies trigger->isEmpty()&#xA;(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (source.oclIsKindOf(State))&#xA;(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (target.oclIsKindOf(State))&#xA;(kind = TransitionKind::local) implies&#xA;&#x9;&#x9;((source.oclIsKindOf (State) and source.oclAsType(State).isComposite) or&#xA;&#x9;&#x9;(source.oclIsKindOf (Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint))&#xA;(source.oclIsKindOf(Pseudostate) and container.stateMachine->notEmpty()) implies&#xA;&#x9;trigger->isEmpty()&#xA;&#xA;(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (guard = null and trigger->isEmpty())&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (container.containingStateMachine())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query containingStateMachine() returns the StateMachine that contains the Transition either directly or transitively.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (let sm : StateMachine = containingStateMachine() in&#xA;if sm._'context' = null or sm.general->notEmpty() then&#xA; sm&#xA;else&#xA; sm._'context'&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The redefinition context of a Transition is the nearest containing StateMachine.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
lowerBound="1" eType="#//Region" eOpposite="#//Region/transition">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the Region that owns this Transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="effect" ordered="false"
eType="#//Behavior" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transition"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies an optional behavior to be performed when the Transition fires.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
eType="#//Constraint">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transition"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A guard is a Constraint that provides a fine-grained control over the firing of the Transition. The guard is evaluated when an Event occurrence is dispatched by the StateMachine. If the guard is true at that time, the Transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
eType="#//TransitionKind" defaultValueLiteral="external">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates the precise type of the Transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"
eType="#//Transition">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transition"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Transition that is redefined by this Transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
lowerBound="1" eType="#//Vertex" volatile="true" transient="true" derived="true"
eOpposite="#//Vertex/outgoing.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the originating Vertex (State or Pseudostate) of the Transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//Vertex" volatile="true" transient="true" derived="true"
eOpposite="#//Vertex/incoming.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the target Vertex that is reached when the Transition is taken.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
upperBound="-1" eType="#//Trigger" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transition"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Triggers that may fire the transition.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Trigger" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="trigger_with_ports"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="trigger_with_ports" value="port->notEmpty() implies event.oclIsKindOf(MessageEvent)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Trigger specifies a specific point at which an Event occurrence may trigger an effect in a Behavior. A Trigger may be qualified by the Port on which the Event occurred.&#xA;port->notEmpty() implies event.oclIsKindOf(MessageEvent)&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
lowerBound="1" eType="#//Event">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="trigger"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Event that detected by the Trigger.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
eType="#//Port">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="trigger"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A optional Port of through which the given effect is detected.&#xA;&lt;p>From package UML::CommonBehavior.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Type constrains the values represented by a TypedElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query conformsTo() gives true for a Type that conforms to another. By default, two Types do not conform to each other. This query is intended to be redefined for specific conformance situations.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eParameters name="other" ordered="false" lowerBound="1" eType="#//Type"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/ownedType.1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the owning Package of this Type, if any.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TypedElement is a NamedElement that may have a Type specified for it.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedElement"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The type of the TypedElement.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnmarshallAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="structural_feature number_of_result type_ordering_and_multiplicity multiplicity_of_object object_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="structural_feature" value="unmarshallType.allAttributes()->size() >= 1"/>
<details key="number_of_result" value="unmarshallType.allAttributes()->size() = result->size()"/>
<details key="type_ordering_and_multiplicity" value="let attribute:OrderedSet(Property) = unmarshallType.allAttributes() in&#xD;&#xA;Sequence{1..result->size()}->forAll(i | &#xD;&#xA;&#x9;attribute->at(i).type.conformsTo(result->at(i).type) and&#xD;&#xA;&#x9;attribute->at(i).isOrdered=result->at(i).isOrdered and&#xD;&#xA;&#x9;attribute->at(i).compatibleWith(result->at(i)))"/>
<details key="multiplicity_of_object" value="object.is(1,1)"/>
<details key="object_type" value="object.type.conformsTo(unmarshallType)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An UnmarshallAction is an Action that retrieves the values of the StructuralFeatures of an object and places them on OutputPins. &#xA;unmarshallType.allAttributes()->size() >= 1&#xA;unmarshallType.allAttributes()->size() = result->size()&#xA;let attribute:OrderedSet(Property) = unmarshallType.allAttributes() in&#xA;Sequence{1..result->size()}->forAll(i | &#xA;&#x9;attribute->at(i).type.conformsTo(result->at(i).type) and&#xA;&#x9;attribute->at(i).isOrdered=result->at(i).isOrdered and&#xA;&#x9;attribute->at(i).compatibleWith(result->at(i)))&#xA;object.is(1,1)&#xA;object.type.conformsTo(unmarshallType)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
lowerBound="1" eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="unmarshallAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that gives the object to be unmarshalled.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
upperBound="-1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="unmarshallAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPins on which are placed the values of the StructuralFeatures of the input object.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="unmarshallType" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="unmarshallAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The type of the object to be unmarshalled.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Usage" eSuperTypes="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Usage is a Dependency in which the client Element requires the supplier Element (or set of Elements) for its full implementation or operation.&#xA;&lt;p>From package UML::CommonStructure.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="binary_associations no_association_to_use_case cannot_include_self must_have_name"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="binary_associations" value="Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies a.memberEnd->size() = 2)"/>
<details key="no_association_to_use_case" value="Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies &#xD;&#xA; (&#xD;&#xA; let usecases: Set(UseCase) = a.memberEnd.type->select(oclIsKindOf(UseCase))->collect(oclAsType(UseCase))->asSet() in&#xD;&#xA; usecases->size() > 1 implies usecases->collect(subject)->size() > 1&#xD;&#xA; )&#xD;&#xA;)"/>
<details key="cannot_include_self" value="not allIncludedUseCases()->includes(self)"/>
<details key="must_have_name" value="name -> notEmpty ()"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A UseCase specifies a set of actions performed by its subjects, which yields an observable result that is of value for one or more Actors or other stakeholders of each subject.&#xA;Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies a.memberEnd->size() = 2)&#xA;Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies &#xA; (&#xA; let usecases: Set(UseCase) = a.memberEnd.type->select(oclIsKindOf(UseCase))->collect(oclAsType(UseCase))->asSet() in&#xA; usecases->size() > 1 implies usecases->collect(subject)->size() > 1&#xA; )&#xA;)&#xA;not allIncludedUseCases()->includes(self)&#xA;name -> notEmpty ()&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eOperations name="allIncludedUseCases" ordered="false" upperBound="-1" eType="#//UseCase">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.include.addition->union(self.include.addition->collect(uc | uc.allIncludedUseCases()))->asSet())"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allIncludedUseCases() returns the transitive closure of all UseCases (directly or indirectly) included by this UseCase.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extend" ordered="false"
upperBound="-1" eType="#//Extend" containment="true" eOpposite="#//Extend/extension">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Extend relationships owned by this UseCase.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extensionPoint" ordered="false"
upperBound="-1" eType="#//ExtensionPoint" containment="true" eOpposite="#//ExtensionPoint/useCase">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ExtensionPoints owned by this UseCase.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="include" ordered="false"
upperBound="-1" eType="#//Include" containment="true" eOpposite="#//Include/includingCase">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Include relationships owned by this UseCase.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false"
upperBound="-1" eType="#//Classifier" eOpposite="#//Classifier/useCase">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The subjects to which this UseCase applies. Each subject or its parts realize all the UseCases that apply to it.&#xA;&lt;p>From package UML::UseCases.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="no_incoming_edges compatible_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="no_incoming_edges" value="incoming->isEmpty()"/>
<details key="compatible_type" value="value.type.conformsTo(type)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValuePin is an InputPin that provides a value by evaluating a ValueSpecification.&#xA;incoming->isEmpty()&#xA;value.type.conformsTo(type)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valuePin"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ValueSpecification that is evaluated to obtain the value that the ValuePin will provide.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
eSuperTypes="#//PackageableElement #//TypedElement">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies &#xD;&#xA;self.type.conformsTo(p.oclAsType(TypedElement).type)))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isCompatibleWith() determines if this ValueSpecification is compatible with the specified ParameterableElement. This ValueSpecification is compatible with ParameterableElement p if the kind of this ValueSpecification is the same as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this ValueSpecification must be conformant with the type of p.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
<eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
</contents>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecification is the specification of a (possibly empty) set of values. A ValueSpecification is a ParameterableElement that may be exposed as a formal TemplateParameter and provided as the actual parameter in the binding of a template.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
<eOperations name="booleanValue" ordered="false" eType="#//BooleanObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query booleanValue() gives a single Boolean value when one can be computed.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="integerValue" ordered="false" eType="#//IntegerObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query integerValue() gives a single Integer value when one can be computed.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isComputable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all ValueSpecifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute at least the value of all LiteralSpecifications.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isNull" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (false)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isNull() returns true when it can be computed that the value is null.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="realValue" ordered="false" eType="#//RealObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query realValue() gives a single Real value when one can be computed.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="stringValue" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query stringValue() gives a single String value when one can be computed.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="unlimitedValue" ordered="false" eType="#//UnlimitedNaturalObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (null)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.&#xA;&lt;p>From package UML::Values.&lt;/p>"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueSpecificationAction" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity compatible_type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity" value="result.is(1,1)"/>
<details key="compatible_type" value="value.type.conformsTo(result.type)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ValueSpecificationAction is an Action that evaluates a ValueSpecification and provides a result.&#xA;result.is(1,1)&#xA;value.type.conformsTo(result.type)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
lowerBound="1" eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueSpecificationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which the result value is placed.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueSpecificationAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ValueSpecification to be evaluated.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Variable is a ConnectableElement that may store values during the execution of an Activity. Reading and writing the values of a Variable provides an alternative means for passing data than the use of ObjectFlows. A Variable may be owned directly by an Activity, in which case it is accessible from anywhere within that activity, or it may be owned by a StructuredActivityNode, in which case it is only accessible within that node.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eOperations name="isAccessibleBy" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if scope&lt;>null then scope.allOwnedNodes()->includes(a)&#xD;&#xA;else a.containingActivity()=activityScope&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Variable is accessible by Actions within its scope (the Activity or StructuredActivityNode that owns it).&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eParameters name="a" ordered="false" lowerBound="1" eType="#//Action"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="activityScope" ordered="false"
eType="#//Activity" eOpposite="#//Activity/variable">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Activity that owns the Variable.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/variable">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A StructuredActivityNode that owns the Variable.&#xA;&lt;p>From package UML::Activities.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="scope_of_variable"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="scope_of_variable" value="variable.isAccessibleBy(self)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="VariableAction is an abstract class for Actions that operate on a specified Variable.&#xA;variable.isAccessibleBy(self)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
lowerBound="1" eType="#//Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="variableAction"/>
<details key="upper" value="-1"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Variable to be read or written.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Vertex is an abstraction of a node in a StateMachine graph. It can be the source or destination of any number of Transitions.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if container &lt;> null&#xA;then&#xA;-- the container is a region&#xA; container.containingStateMachine()&#xA;else &#xA; if (self.oclIsKindOf(Pseudostate)) and ((self.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint) or (self.oclAsType(Pseudostate).kind = PseudostateKind::exitPoint)) then&#xA; self.oclAsType(Pseudostate).stateMachine&#xA; else &#xA; if (self.oclIsKindOf(ConnectionPointReference)) then&#xA; self.oclAsType(ConnectionPointReference).state.containingStateMachine() -- no other valid cases possible&#xA; else &#xA; null&#xA; endif&#xA; endif&#xA;endif&#xA;&#xA;)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The operation containingStateMachine() returns the StateMachine in which this Vertex is defined.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="incoming" ordered="false" upperBound="-1" eType="#//Transition">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (Transition.allInstances()->select(target=self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Vertex::/incoming.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eOperations name="isContainedInRegion" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if (container = r) then&#xD;&#xA;&#x9;true&#xD;&#xA;else&#xD;&#xA;&#x9;if (r.state->isEmpty()) then&#xD;&#xA;&#x9;&#x9;false&#xD;&#xA;&#x9;else&#xD;&#xA;&#x9;&#x9;container.state.isContainedInRegion(r)&#xD;&#xA;&#x9;endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This utility query returns true if the Vertex is contained in the Region r (input argument).&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eParameters name="r" ordered="false" lowerBound="1" eType="#//Region"/>
</eOperations>
<eOperations name="isContainedInState" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (if not s.isComposite() or container->isEmpty() then&#xD;&#xA;&#x9;false&#xD;&#xA;else&#xD;&#xA;&#x9;if container.state = s then &#xD;&#xA;&#x9;&#x9;true&#xD;&#xA;&#x9;else&#xD;&#xA;&#x9;&#x9;container.state.isContainedInState(s)&#xD;&#xA;&#x9;endif&#xD;&#xA;endif)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This utility operation returns true if the Vertex is contained in the State s (input argument).&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eParameters name="s" ordered="false" lowerBound="1" eType="#//State"/>
</eOperations>
<eOperations name="outgoing" ordered="false" upperBound="-1" eType="#//Transition">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="body" value="result = (Transition.allInstances()->select(source=self))"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Derivation for Vertex::/outgoing&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
eType="#//Region" eOpposite="#//Region/subvertex">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Region that contains this Vertex.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
upperBound="-1" eType="#//Transition" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Transition/target">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Transitions entering this Vertex.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
upperBound="-1" eType="#//Transition" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Transition/source">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Transitions departing from this Vertex.&#xA;&lt;p>From package UML::StateMachines.&lt;/p>"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="allow_access"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="allow_access" value="endData.end->exists(end |&#xD;&#xA; end.type=_'context' or&#xD;&#xA; end.visibility=VisibilityKind::public or &#xD;&#xA; end.visibility=VisibilityKind::protected and&#xD;&#xA; endData.end->exists(other | &#xD;&#xA; other&lt;>end and _'context'.conformsTo(other.type.oclAsType(Classifier))))&#xD;&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="WriteLinkAction is an abstract class for LinkActions that create and destroy links.&#xA;endData.end->exists(end |&#xA; end.type=_'context' or&#xA; end.visibility=VisibilityKind::public or &#xA; end.visibility=VisibilityKind::protected and&#xA; endData.end->exists(other | &#xA; other&lt;>end and _'context'.conformsTo(other.type.oclAsType(Classifier))))&#xA;&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteStructuralFeatureAction" abstract="true"
eSuperTypes="#//StructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="multiplicity_of_result type_of_value multiplicity_of_value type_of_result"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="multiplicity_of_result" value="result &lt;> null implies result.is(1,1)"/>
<details key="type_of_value" value="value &lt;> null implies value.type.conformsTo(structuralFeature.type)"/>
<details key="multiplicity_of_value" value="value&lt;>null implies value.is(1,1)"/>
<details key="type_of_result" value="result &lt;> null implies result.type = object.type"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="WriteStructuralFeatureAction is an abstract class for StructuralFeatureActions that change StructuralFeature values.&#xA;result &lt;> null implies result.is(1,1)&#xA;value &lt;> null implies value.type.conformsTo(structuralFeature.type)&#xA;value&lt;>null implies value.is(1,1)&#xA;result &lt;> null implies result.type = object.type&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
eType="#//OutputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="writeStructuralFeatureAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The OutputPin on which is put the input object as modified by the WriteStructuralFeatureAction.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/output"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="writeStructuralFeatureAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that provides the value to be added or removed from the StructuralFeature.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteVariableAction" abstract="true"
eSuperTypes="#//VariableAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="constraints" value="value_type multiplicity"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
<details key="value_type" value="value &lt;> null implies value.type.conformsTo(variable.type)"/>
<details key="multiplicity" value="value&lt;>null implies value.is(1,1)"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="WriteVariableAction is an abstract class for VariableActions that change Variable values.&#xA;value &lt;> null implies value.type.conformsTo(variable.type)&#xA;value&lt;>null implies value.is(1,1)&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
eType="#//InputPin" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="writeVariableAction"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The InputPin that gives the value to be added or removed from the Variable.&#xA;&lt;p>From package UML::Actions.&lt;/p>"/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Action/input"/>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>