blob: b5771f7f13a05392961ed8bedb53a2dd285df60b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:Standard="http://www.eclipse.org/uml2/schemas/Standard/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA http://www.eclipse.org/uml2/schemas/Standard/1 pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w">
<uml:Model xmi:id="_0" name="uml">
<packageImport xmi:id="_packageImport.0">
<importedPackage xmi:type="uml:Model" href="Ecore.metamodel.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="Integer" name="Integer" visibility="private">
<ownedComment xmi:id="Integer-_ownedComment.0" annotatedElement="Integer">
<body>An integer is a primitive type representing integer values.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="Boolean" name="Boolean" visibility="private">
<ownedComment xmi:id="Boolean-_ownedComment.0" annotatedElement="Boolean">
<body>A Boolean type is used for logical expression, consisting of the predefined values true and false.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="String" name="String" visibility="private">
<ownedComment xmi:id="String-_ownedComment.0" annotatedElement="String">
<body>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.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="UnlimitedNatural" name="UnlimitedNatural" visibility="private">
<ownedComment xmi:id="UnlimitedNatural-_ownedComment.0" annotatedElement="UnlimitedNatural">
<body>An unlimited natural is a primitive type representing unlimited natural values.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Comment" name="Comment">
<ownedComment xmi:id="Comment-_ownedComment.0" annotatedElement="Comment">
<body>A comment is a textual annotation that can be attached to a set of elements.</body>
</ownedComment>
<generalization xmi:id="Comment-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="Comment-body" name="body" type="String">
<ownedComment xmi:id="Comment-body-_ownedComment.0" annotatedElement="Comment-body">
<body>Specifies a string that is the comment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Comment-body-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Comment-annotatedElement" name="annotatedElement" type="Element" association="A_annotatedElement_comment">
<ownedComment xmi:id="Comment-annotatedElement-_ownedComment.0" annotatedElement="Comment-annotatedElement">
<body>References the Element(s) being commented.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Comment-annotatedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-annotatedElement-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DirectedRelationship" name="DirectedRelationship" isAbstract="true">
<ownedComment xmi:id="DirectedRelationship-_ownedComment.0" annotatedElement="DirectedRelationship">
<body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
</ownedComment>
<generalization xmi:id="DirectedRelationship-_generalization.0" general="Relationship"/>
<ownedAttribute xmi:id="DirectedRelationship-source" name="source" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_source_directedRelationship">
<ownedComment xmi:id="DirectedRelationship-source-_ownedComment.0" annotatedElement="DirectedRelationship-source">
<body>Specifies the sources of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-source-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DirectedRelationship-source-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="DirectedRelationship-target" name="target" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_target_directedRelationship">
<ownedComment xmi:id="DirectedRelationship-target-_ownedComment.0" annotatedElement="DirectedRelationship-target">
<body>Specifies the targets of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-target-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DirectedRelationship-target-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralSpecification" name="LiteralSpecification" isAbstract="true">
<ownedComment xmi:id="LiteralSpecification-_ownedComment.0" annotatedElement="LiteralSpecification">
<body>A literal specification identifies a literal constant being modeled.</body>
</ownedComment>
<generalization xmi:id="LiteralSpecification-_generalization.0" general="ValueSpecification"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralInteger" name="LiteralInteger">
<ownedComment xmi:id="LiteralInteger-_ownedComment.0" annotatedElement="LiteralInteger">
<body>A literal integer is a specification of an integer value.</body>
</ownedComment>
<generalization xmi:id="LiteralInteger-_generalization.0" general="LiteralSpecification"/>
<ownedAttribute xmi:id="LiteralInteger-value" name="value" type="Integer">
<ownedComment xmi:id="LiteralInteger-value-_ownedComment.0" annotatedElement="LiteralInteger-value">
<body>The specified Integer value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="LiteralInteger-value-_defaultValue" type="Integer"/>
</ownedAttribute>
<ownedOperation xmi:id="LiteralInteger-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="LiteralInteger-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralInteger-isComputable" name="isComputable" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralInteger-isComputable-spec">
<ownedComment xmi:id="LiteralInteger-isComputable-_ownedComment.0" annotatedElement="LiteralInteger-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralInteger-isComputable-spec" name="spec" constrainedElement="LiteralInteger-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralInteger-isComputable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralInteger-integerValue" name="integerValue" isQuery="true" redefinedOperation="ValueSpecification-integerValue" bodyCondition="LiteralInteger-integerValue-spec">
<ownedComment xmi:id="LiteralInteger-integerValue-_ownedComment.0" annotatedElement="LiteralInteger-integerValue">
<body>The query integerValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="LiteralInteger-integerValue-spec" name="spec" constrainedElement="LiteralInteger-integerValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-integerValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralInteger-integerValue-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralString" name="LiteralString">
<ownedComment xmi:id="LiteralString-_ownedComment.0" annotatedElement="LiteralString">
<body>A literal string is a specification of a string value.</body>
</ownedComment>
<generalization xmi:id="LiteralString-_generalization.0" general="LiteralSpecification"/>
<ownedAttribute xmi:id="LiteralString-value" name="value" type="String">
<ownedComment xmi:id="LiteralString-value-_ownedComment.0" annotatedElement="LiteralString-value">
<body>The specified String value.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LiteralString-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LiteralString-value-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="LiteralString-integerValue" name="integerValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="LiteralString-integerValue-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralString-unlimitedValue" name="unlimitedValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="LiteralString-unlimitedValue-_ownedParameter.0" type="UnlimitedNatural" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralString-isComputable" name="isComputable" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralString-isComputable-spec">
<ownedComment xmi:id="LiteralString-isComputable-_ownedComment.0" annotatedElement="LiteralString-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralString-isComputable-spec" name="spec" constrainedElement="LiteralString-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralString-isComputable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralString-stringValue" name="stringValue" isQuery="true" redefinedOperation="ValueSpecification-stringValue" bodyCondition="LiteralString-stringValue-spec">
<ownedComment xmi:id="LiteralString-stringValue-_ownedComment.0" annotatedElement="LiteralString-stringValue">
<body>The query stringValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="LiteralString-stringValue-spec" name="spec" constrainedElement="LiteralString-stringValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-stringValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralString-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralBoolean" name="LiteralBoolean">
<ownedComment xmi:id="LiteralBoolean-_ownedComment.0" annotatedElement="LiteralBoolean">
<body>A literal Boolean is a specification of a Boolean value.</body>
</ownedComment>
<generalization xmi:id="LiteralBoolean-_generalization.0" general="LiteralSpecification"/>
<ownedAttribute xmi:id="LiteralBoolean-value" name="value" type="Boolean">
<ownedComment xmi:id="LiteralBoolean-value-_ownedComment.0" annotatedElement="LiteralBoolean-value">
<body>The specified Boolean value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LiteralBoolean-value-_defaultValue" type="Boolean"/>
</ownedAttribute>
<ownedOperation xmi:id="LiteralBoolean-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="LiteralBoolean-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralBoolean-isComputable" name="isComputable" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralBoolean-isComputable-spec">
<ownedComment xmi:id="LiteralBoolean-isComputable-_ownedComment.0" annotatedElement="LiteralBoolean-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralBoolean-isComputable-spec" name="spec" constrainedElement="LiteralBoolean-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralBoolean-isComputable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralBoolean-booleanValue" name="booleanValue" isQuery="true" redefinedOperation="ValueSpecification-booleanValue" bodyCondition="LiteralBoolean-booleanValue-spec">
<ownedComment xmi:id="LiteralBoolean-booleanValue-_ownedComment.0" annotatedElement="LiteralBoolean-booleanValue">
<body>The query booleanValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="LiteralBoolean-booleanValue-spec" name="spec" constrainedElement="LiteralBoolean-booleanValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-booleanValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralBoolean-booleanValue-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralNull" name="LiteralNull">
<ownedComment xmi:id="LiteralNull-_ownedComment.0" annotatedElement="LiteralNull">
<body>A literal null specifies the lack of a value.</body>
</ownedComment>
<generalization xmi:id="LiteralNull-_generalization.0" general="LiteralSpecification"/>
<ownedOperation xmi:id="LiteralNull-isComputable" name="isComputable" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralNull-isComputable-spec">
<ownedComment xmi:id="LiteralNull-isComputable-_ownedComment.0" annotatedElement="LiteralNull-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralNull-isComputable-spec" name="spec" constrainedElement="LiteralNull-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralNull-isComputable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralNull-isNull" name="isNull" isQuery="true" redefinedOperation="ValueSpecification-isNull" bodyCondition="LiteralNull-isNull-spec">
<ownedComment xmi:id="LiteralNull-isNull-_ownedComment.0" annotatedElement="LiteralNull-isNull">
<body>The query isNull() returns true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralNull-isNull-spec" name="spec" constrainedElement="LiteralNull-isNull">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isNull-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralNull-isNull-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Constraint" name="Constraint">
<ownedComment xmi:id="Constraint-_ownedComment.0" annotatedElement="Constraint">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Constraint-not_apply_to_self" name="not_apply_to_self" constrainedElement="Constraint">
<ownedComment xmi:id="Constraint-not_apply_to_self-_ownedComment.0" annotatedElement="Constraint-not_apply_to_self">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-not_apply_to_self-_specification">
<language>OCL</language>
<body>not constrainedElement->includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Constraint-value_specification_boolean" name="value_specification_boolean" constrainedElement="Constraint">
<ownedComment xmi:id="Constraint-value_specification_boolean-_ownedComment.0" annotatedElement="Constraint-value_specification_boolean">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-value_specification_boolean-_specification">
<language>OCL</language>
<body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Constraint-boolean_value" name="boolean_value" constrainedElement="Constraint">
<ownedComment xmi:id="Constraint-boolean_value-_ownedComment.0" annotatedElement="Constraint-boolean_value">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-boolean_value-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Constraint-no_side_effects" name="no_side_effects" constrainedElement="Constraint">
<ownedComment xmi:id="Constraint-no_side_effects-_ownedComment.0" annotatedElement="Constraint-no_side_effects">
<body>Evaluating the value specification for a constraint must not have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-no_side_effects-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Constraint-not_applied_to_self" name="not_applied_to_self" constrainedElement="Constraint">
<ownedComment xmi:id="Constraint-not_applied_to_self-_ownedComment.0" annotatedElement="Constraint-not_applied_to_self">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-not_applied_to_self-_specification">
<language>OCL</language>
<body>not constrainedElement->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="Constraint-_generalization.0" general="PackageableElement"/>
<ownedAttribute xmi:id="Constraint-constrainedElement" name="constrainedElement" type="Element" isOrdered="true" association="A_constrainedElement_constraint">
<ownedComment xmi:id="Constraint-constrainedElement-_ownedComment.0" annotatedElement="Constraint-constrainedElement">
<body>The ordered set of Elements referenced by this Constraint.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Constraint-constrainedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-constrainedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Constraint-specification" name="specification" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningConstraint">
<ownedComment xmi:id="Constraint-specification-_ownedComment.0" annotatedElement="Constraint-specification">
<body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Constraint-specification-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-specification-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Constraint-context" name="context" type="Namespace" subsettedProperty="NamedElement-namespace" association="A_ownedRule_context">
<ownedComment xmi:id="Constraint-context-_ownedComment.0" annotatedElement="Constraint-context">
<body>Specifies the namespace that owns the NamedElement.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Constraint-context-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-context-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ElementImport" name="ElementImport">
<ownedComment xmi:id="ElementImport-_ownedComment.0" annotatedElement="ElementImport">
<body>An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier.</body>
</ownedComment>
<ownedRule xmi:id="ElementImport-visibility_public_or_private" name="visibility_public_or_private" constrainedElement="ElementImport">
<ownedComment xmi:id="ElementImport-visibility_public_or_private-_ownedComment.0" annotatedElement="ElementImport-visibility_public_or_private">
<body>The visibility of an ElementImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-visibility_public_or_private-_specification">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ElementImport-imported_element_is_public" name="imported_element_is_public" constrainedElement="ElementImport">
<ownedComment xmi:id="ElementImport-imported_element_is_public-_ownedComment.0" annotatedElement="ElementImport-imported_element_is_public">
<body>An importedElement has either public visibility or no visibility at all.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-imported_element_is_public-_specification">
<language>OCL</language>
<body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
</specification>
</ownedRule>
<generalization xmi:id="ElementImport-_generalization.0" general="DirectedRelationship"/>
<ownedAttribute xmi:id="ElementImport-visibility" name="visibility" type="VisibilityKind">
<ownedComment xmi:id="ElementImport-visibility-_ownedComment.0" annotatedElement="ElementImport-visibility">
<body>Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="ElementImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
</ownedAttribute>
<ownedAttribute xmi:id="ElementImport-alias" name="alias" type="String">
<ownedComment xmi:id="ElementImport-alias-_ownedComment.0" annotatedElement="ElementImport-alias">
<body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ElementImport-alias-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ElementImport-alias-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ElementImport-importedElement" name="importedElement" type="PackageableElement" subsettedProperty="DirectedRelationship-target" association="A_importedElement_elementImport">
<ownedComment xmi:id="ElementImport-importedElement-_ownedComment.0" annotatedElement="ElementImport-importedElement">
<body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ElementImport-importedElement-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ElementImport-importedElement-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ElementImport-importingNamespace" name="importingNamespace" type="Namespace" subsettedProperty="DirectedRelationship-source Element-owner" association="A_elementImport_importingNamespace">
<ownedComment xmi:id="ElementImport-importingNamespace-_ownedComment.0" annotatedElement="ElementImport-importingNamespace">
<body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ElementImport-importingNamespace-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ElementImport-importingNamespace-_lowerValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="ElementImport-getName" name="getName" isQuery="true" bodyCondition="ElementImport-getName-spec">
<ownedComment xmi:id="ElementImport-getName-_ownedComment.0" annotatedElement="ElementImport-getName">
<body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
</ownedComment>
<ownedRule xmi:id="ElementImport-getName-spec" name="spec" constrainedElement="ElementImport-getName">
<specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-getName-spec-_specification">
<language>OCL</language>
<body>result = if self.alias->notEmpty() then&#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="ElementImport-getName-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TypedElement" name="TypedElement" isAbstract="true">
<ownedComment xmi:id="TypedElement-_ownedComment.0" annotatedElement="TypedElement">
<body>A typed element is a kind of named element that represents an element with a type.</body>
</ownedComment>
<ownedComment xmi:id="TypedElement-_ownedComment.1" annotatedElement="TypedElement">
<body>A typed element has a type.</body>
</ownedComment>
<generalization xmi:id="TypedElement-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="TypedElement-type" name="type" type="Type" association="A_type_typedElement">
<ownedComment xmi:id="TypedElement-type-_ownedComment.0" annotatedElement="TypedElement-type">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<ownedComment xmi:id="TypedElement-type-_ownedComment.1" annotatedElement="TypedElement-type">
<body>The type of the TypedElement.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TypedElement-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TypedElement-type-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Feature" name="Feature" isAbstract="true">
<ownedComment xmi:id="Feature-_ownedComment.0" annotatedElement="Feature">
<body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
</ownedComment>
<generalization xmi:id="Feature-_generalization.0" general="RedefinableElement"/>
<ownedAttribute xmi:id="Feature-isStatic" name="isStatic" type="Boolean">
<ownedComment xmi:id="Feature-isStatic-_ownedComment.0" annotatedElement="Feature-isStatic">
<body>Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true).</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Feature-isStatic-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Feature-featuringClassifier" name="featuringClassifier" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_feature_featuringClassifier">
<ownedComment xmi:id="Feature-featuringClassifier-_ownedComment.0" annotatedElement="Feature-featuringClassifier">
<body>The Classifiers that have this Feature as a feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Feature-featuringClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Feature-featuringClassifier-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="RedefinableElement" name="RedefinableElement" isAbstract="true">
<ownedComment xmi:id="RedefinableElement-_ownedComment.0" annotatedElement="RedefinableElement">
<body>A redefinable element 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.</body>
</ownedComment>
<ownedRule xmi:id="RedefinableElement-redefinition_context_valid" name="redefinition_context_valid" constrainedElement="RedefinableElement">
<ownedComment xmi:id="RedefinableElement-redefinition_context_valid-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_context_valid">
<body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_context_valid-_specification">
<language>OCL</language>
<body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="RedefinableElement-redefinition_consistent" name="redefinition_consistent" constrainedElement="RedefinableElement">
<ownedComment xmi:id="RedefinableElement-redefinition_consistent-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_consistent">
<body>A redefining element must be consistent with each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_consistent-_specification">
<language>OCL</language>
<body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
</specification>
</ownedRule>
<generalization xmi:id="RedefinableElement-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="RedefinableElement-isLeaf" name="isLeaf" type="Boolean">
<ownedComment xmi:id="RedefinableElement-isLeaf-_ownedComment.0" annotatedElement="RedefinableElement-isLeaf">
<body>Indicates whether it is possible to further specialize a RedefinableElement. If the value is true, then it is not possible to further specialize the RedefinableElement.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RedefinableElement-isLeaf-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="RedefinableElement-redefinedElement" name="redefinedElement" type="RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinedElement_redefinableElement">
<ownedComment xmi:id="RedefinableElement-redefinedElement-_ownedComment.0" annotatedElement="RedefinableElement-redefinedElement">
<body>The redefinable element that is being redefined by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="RedefinableElement-redefinitionContext" name="redefinitionContext" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinitionContext_redefinableElement">
<ownedComment xmi:id="RedefinableElement-redefinitionContext-_ownedComment.0" annotatedElement="RedefinableElement-redefinitionContext">
<body>References the contexts that this element may be redefined from.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinitionContext-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinitionContext-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="RedefinableElement-isConsistentWith" name="isConsistentWith" isQuery="true" precondition="RedefinableElement-isConsistentWith-_ownedRule.0" bodyCondition="RedefinableElement-isConsistentWith-spec">
<ownedComment xmi:id="RedefinableElement-isConsistentWith-_ownedComment.0" annotatedElement="RedefinableElement-isConsistentWith">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="RedefinableElement-isConsistentWith-_ownedRule.0" constrainedElement="RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-_ownedRule.0-_specification">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="RedefinableElement-isConsistentWith-spec" name="spec" constrainedElement="RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="RedefinableElement-isConsistentWith-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="RedefinableElement-isConsistentWith-redefinee" name="redefinee" type="RedefinableElement"/>
</ownedOperation>
<ownedOperation xmi:id="RedefinableElement-isRedefinitionContextValid" name="isRedefinitionContextValid" isQuery="true" bodyCondition="RedefinableElement-isRedefinitionContextValid-spec">
<ownedComment xmi:id="RedefinableElement-isRedefinitionContextValid-_ownedComment.0" annotatedElement="RedefinableElement-isRedefinitionContextValid">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="RedefinableElement-isRedefinitionContextValid-spec" name="spec" constrainedElement="RedefinableElement-isRedefinitionContextValid">
<specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isRedefinitionContextValid-spec-_specification">
<language>OCL</language>
<body>result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="RedefinableElement-isRedefinitionContextValid-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="RedefinableElement-isRedefinitionContextValid-redefined" name="redefined" type="RedefinableElement" effect="read"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StructuralFeature" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:id="StructuralFeature-_ownedComment.0" annotatedElement="StructuralFeature">
<body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
</ownedComment>
<ownedComment xmi:id="StructuralFeature-_ownedComment.1" annotatedElement="StructuralFeature">
<body>By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the collection of values associated with an instantiation of the structural feature.</body>
</ownedComment>
<generalization xmi:id="StructuralFeature-_generalization.0" general="Feature"/>
<generalization xmi:id="StructuralFeature-_generalization.1" general="TypedElement"/>
<generalization xmi:id="StructuralFeature-_generalization.2" general="MultiplicityElement"/>
<ownedAttribute xmi:id="StructuralFeature-isReadOnly" name="isReadOnly" type="Boolean">
<ownedComment xmi:id="StructuralFeature-isReadOnly-_ownedComment.0" annotatedElement="StructuralFeature-isReadOnly">
<body>States whether the feature's value may be modified by a client.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="StructuralFeature-isReadOnly-_defaultValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Slot" name="Slot">
<ownedComment xmi:id="Slot-_ownedComment.0" annotatedElement="Slot">
<body>A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature.</body>
</ownedComment>
<generalization xmi:id="Slot-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="Slot-owningInstance" name="owningInstance" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_slot_owningInstance">
<ownedComment xmi:id="Slot-owningInstance-_ownedComment.0" annotatedElement="Slot-owningInstance">
<body>The instance specification that owns this slot.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Slot-owningInstance-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Slot-owningInstance-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Slot-definingFeature" name="definingFeature" type="StructuralFeature" association="A_definingFeature_slot">
<ownedComment xmi:id="Slot-definingFeature-_ownedComment.0" annotatedElement="Slot-definingFeature">
<body>The structural feature that specifies the values that may be held by the slot.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Slot-definingFeature-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Slot-definingFeature-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Slot-value" name="value" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_owningSlot">
<ownedComment xmi:id="Slot-value-_ownedComment.0" annotatedElement="Slot-value">
<body>The value or values corresponding to the defining feature for the owning instance specification.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Slot-value-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Slot-value-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="PackageImport" name="PackageImport">
<ownedComment xmi:id="PackageImport-_ownedComment.0" annotatedElement="PackageImport">
<body>A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces.</body>
</ownedComment>
<ownedRule xmi:id="PackageImport-public_or_private" name="public_or_private" constrainedElement="PackageImport">
<ownedComment xmi:id="PackageImport-public_or_private-_ownedComment.0" annotatedElement="PackageImport-public_or_private">
<body>The visibility of a PackageImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="PackageImport-public_or_private-_specification">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<generalization xmi:id="PackageImport-_generalization.0" general="DirectedRelationship"/>
<ownedAttribute xmi:id="PackageImport-visibility" name="visibility" type="VisibilityKind">
<ownedComment xmi:id="PackageImport-visibility-_ownedComment.0" annotatedElement="PackageImport-visibility">
<body>Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="PackageImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
</ownedAttribute>
<ownedAttribute xmi:id="PackageImport-importingNamespace" name="importingNamespace" type="Namespace" subsettedProperty="DirectedRelationship-source Element-owner" association="A_packageImport_importingNamespace">
<ownedComment xmi:id="PackageImport-importingNamespace-_ownedComment.0" annotatedElement="PackageImport-importingNamespace">
<body>Specifies the Namespace that imports the members from a Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PackageImport-importingNamespace-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="PackageImport-importingNamespace-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="PackageImport-importedPackage" name="importedPackage" type="Package" subsettedProperty="DirectedRelationship-target" association="A_importedPackage_packageImport">
<ownedComment xmi:id="PackageImport-importedPackage-_ownedComment.0" annotatedElement="PackageImport-importedPackage">
<body>Specifies the Package whose members are imported into a Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PackageImport-importedPackage-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="PackageImport-importedPackage-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DataType" name="DataType">
<ownedComment xmi:id="DataType-_ownedComment.0" annotatedElement="DataType">
<body>A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types.</body>
</ownedComment>
<generalization xmi:id="DataType-_generalization.0" general="Classifier"/>
<ownedAttribute xmi:id="DataType-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_datatype">
<ownedComment xmi:id="DataType-ownedAttribute-_ownedComment.0" annotatedElement="DataType-ownedAttribute">
<body>The Attributes owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="DataType-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedOperation_datatype">
<ownedComment xmi:id="DataType-ownedOperation-_ownedComment.0" annotatedElement="DataType-ownedOperation">
<body>The Operations owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="DataType-createOwnedOperation" name="createOwnedOperation">
<ownedComment xmi:id="DataType-createOwnedOperation-_ownedComment.0" annotatedElement="DataType-createOwnedOperation">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type.</body>
</ownedComment>
<ownedParameter xmi:id="DataType-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
<ownedParameter xmi:id="DataType-createOwnedOperation-name" name="name" type="String" effect="read">
<ownedComment xmi:id="DataType-createOwnedOperation-name-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-name">
<body>The name for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedOperation-parameterNames" name="parameterNames" type="String" effect="read">
<ownedComment xmi:id="DataType-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-parameterNames">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-parameterNames-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-parameterNames-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
<ownedComment xmi:id="DataType-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-parameterTypes">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-parameterTypes-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
<ownedComment xmi:id="DataType-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-returnType">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-returnType-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-returnType-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="DataType-createOwnedAttribute" name="createOwnedAttribute">
<ownedComment xmi:id="DataType-createOwnedAttribute-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type.</body>
</ownedComment>
<ownedParameter xmi:id="DataType-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
<ownedParameter xmi:id="DataType-createOwnedAttribute-name" name="name" type="String" effect="read">
<ownedComment xmi:id="DataType-createOwnedAttribute-name-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-name">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedAttribute-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedAttribute-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedAttribute-type" name="type" type="Type" effect="read">
<ownedComment xmi:id="DataType-createOwnedAttribute-type-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-type">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedAttribute-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedAttribute-type-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedAttribute-lower" name="lower" type="Integer" effect="read">
<ownedComment xmi:id="DataType-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-lower">
<body>The lower bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="DataType-createOwnedAttribute-upper" name="upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="DataType-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-upper">
<body>The upper bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="DataType-inherit" name="inherit" isQuery="true" redefinedOperation="Classifier-inherit" bodyCondition="DataType-inherit-spec">
<ownedComment xmi:id="DataType-inherit-_ownedComment.0" annotatedElement="DataType-inherit">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:id="DataType-inherit-spec" name="spec" constrainedElement="DataType-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="DataType-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="DataType-inherit-_ownedParameter.0" type="NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-inherit-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-inherit-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="DataType-inherit-inhs" name="inhs" type="NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Enumeration" name="Enumeration">
<ownedComment xmi:id="Enumeration-_ownedComment.0" annotatedElement="Enumeration">
<body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
</ownedComment>
<generalization xmi:id="Enumeration-_generalization.0" general="DataType"/>
<ownedAttribute xmi:id="Enumeration-ownedLiteral" name="ownedLiteral" type="EnumerationLiteral" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedLiteral_enumeration">
<ownedComment xmi:id="Enumeration-ownedLiteral-_ownedComment.0" annotatedElement="Enumeration-ownedLiteral">
<body>The ordered set of literals for this Enumeration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Enumeration-ownedLiteral-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Enumeration-ownedLiteral-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="EnumerationLiteral" name="EnumerationLiteral">
<ownedComment xmi:id="EnumerationLiteral-_ownedComment.0" annotatedElement="EnumerationLiteral">
<body>An enumeration literal is a user-defined data value for an enumeration.</body>
</ownedComment>
<generalization xmi:id="EnumerationLiteral-_generalization.0" general="InstanceSpecification"/>
<ownedAttribute xmi:id="EnumerationLiteral-enumeration" name="enumeration" type="Enumeration" subsettedProperty="NamedElement-namespace" association="A_ownedLiteral_enumeration">
<ownedComment xmi:id="EnumerationLiteral-enumeration-_ownedComment.0" annotatedElement="EnumerationLiteral-enumeration">
<body>The Enumeration that this EnumerationLiteral is a member of.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EnumerationLiteral-enumeration-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="EnumerationLiteral-enumeration-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="PrimitiveType" name="PrimitiveType">
<ownedComment xmi:id="PrimitiveType-_ownedComment.0" annotatedElement="PrimitiveType">
<body>A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically.</body>
</ownedComment>
<generalization xmi:id="PrimitiveType-_generalization.0" general="DataType"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Association" name="Association">
<ownedComment xmi:id="Association-_ownedComment.0" annotatedElement="Association">
<body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link.</body>
</ownedComment>
<ownedRule xmi:id="Association-specialized_end_number" name="specialized_end_number" constrainedElement="Association">
<ownedComment xmi:id="Association-specialized_end_number-_ownedComment.0" annotatedElement="Association-specialized_end_number">
<body>An association specializing another association has the same number of ends as the other association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_number-_specification">
<language>OCL</language>
<body>self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Association-specialized_end_types" name="specialized_end_types" constrainedElement="Association">
<ownedComment xmi:id="Association-specialized_end_types-_ownedComment.0" annotatedElement="Association-specialized_end_types">
<body>When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_types-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Association-binary_associations" name="binary_associations" constrainedElement="Association">
<ownedComment xmi:id="Association-binary_associations-_ownedComment.0" annotatedElement="Association-binary_associations">
<body>Only binary associations can be aggregations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Association-binary_associations-_specification">
<language>OCL</language>
<body>self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Association-association_ends" name="association_ends" constrainedElement="Association">
<ownedComment xmi:id="Association-association_ends-_ownedComment.0" annotatedElement="Association-association_ends">
<body>Association ends of associations with more than two ends must be owned by the association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Association-association_ends-_specification">
<language>OCL</language>
<body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
</specification>
</ownedRule>
<generalization xmi:id="Association-_generalization.0" general="Relationship"/>
<generalization xmi:id="Association-_generalization.1" general="Classifier"/>
<ownedAttribute xmi:id="Association-isDerived" name="isDerived" type="Boolean">
<ownedComment xmi:id="Association-isDerived-_ownedComment.0" annotatedElement="Association-isDerived">
<body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Association-isDerived-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Association-ownedEnd" name="ownedEnd" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Association-memberEnd Classifier-feature Namespace-ownedMember" association="A_ownedEnd_owningAssociation">
<ownedComment xmi:id="Association-ownedEnd-_ownedComment.0" annotatedElement="Association-ownedEnd">
<body>The ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-ownedEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-ownedEnd-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Association-endType" name="endType" type="Type" isOrdered="true" isReadOnly="true" isDerived="true" subsettedProperty="Relationship-relatedElement" association="A_endType_association">
<ownedComment xmi:id="Association-endType-_ownedComment.0" annotatedElement="Association-endType">
<body>References the classifiers that are used as types of the ends of the association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-endType-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Association-memberEnd" name="memberEnd" type="Property" isOrdered="true" subsettedProperty="Namespace-member" association="A_memberEnd_association">
<ownedComment xmi:id="Association-memberEnd-_ownedComment.0" annotatedElement="Association-memberEnd">
<body>Each end represents participation of instances of the classifier connected to the end in links of the association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-memberEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-memberEnd-_lowerValue" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="Association-navigableOwnedEnd" name="navigableOwnedEnd" type="Property" subsettedProperty="Association-ownedEnd" association="A_navigableOwnedEnd_association">
<ownedComment xmi:id="Association-navigableOwnedEnd-_ownedComment.0" annotatedElement="Association-navigableOwnedEnd">
<body>The navigable ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-navigableOwnedEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-navigableOwnedEnd-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Association-isBinary" name="isBinary">
<ownedComment xmi:id="Association-isBinary-_ownedComment.0" annotatedElement="Association-isBinary">
<body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
</ownedComment>
<ownedParameter xmi:id="Association-isBinary-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Association-endType.1" name="endType" isQuery="true" bodyCondition="Association-endType.1-spec">
<ownedComment xmi:id="Association-endType.1-_ownedComment.0" annotatedElement="Association-endType.1">
<body>endType is derived from the types of the member ends.</body>
</ownedComment>
<ownedRule xmi:id="Association-endType.1-spec" name="spec" constrainedElement="Association-endType.1 Association-endType">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Association-endType.1-spec-_specification">
<language>OCL</language>
<body>result = self.memberEnd->collect(e | e.type)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Association-endType.1-_ownedParameter.0" type="Type" isOrdered="true" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-endType.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Relationship" name="Relationship" isAbstract="true">
<ownedComment xmi:id="Relationship-_ownedComment.0" annotatedElement="Relationship">
<body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
</ownedComment>
<generalization xmi:id="Relationship-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="Relationship-relatedElement" name="relatedElement" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_relatedElement_relationship">
<ownedComment xmi:id="Relationship-relatedElement-_ownedComment.0" annotatedElement="Relationship-relatedElement">
<body>Specifies the elements related by the Relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Relationship-relatedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Relationship-relatedElement-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="PackageMerge" name="PackageMerge">
<ownedComment xmi:id="PackageMerge-_ownedComment.0" annotatedElement="PackageMerge">
<body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
</ownedComment>
<generalization xmi:id="PackageMerge-_generalization.0" general="DirectedRelationship"/>
<ownedAttribute xmi:id="PackageMerge-receivingPackage" name="receivingPackage" type="Package" subsettedProperty="DirectedRelationship-source Element-owner" association="A_receivingPackage_packageMerge">
<ownedComment xmi:id="PackageMerge-receivingPackage-_ownedComment.0" annotatedElement="PackageMerge-receivingPackage">
<body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PackageMerge-receivingPackage-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="PackageMerge-receivingPackage-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="PackageMerge-mergedPackage" name="mergedPackage" type="Package" subsettedProperty="DirectedRelationship-target" association="A_mergedPackage_packageMerge">
<ownedComment xmi:id="PackageMerge-mergedPackage-_ownedComment.0" annotatedElement="PackageMerge-mergedPackage">
<body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PackageMerge-mergedPackage-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="PackageMerge-mergedPackage-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InstanceValue" name="InstanceValue">
<ownedComment xmi:id="InstanceValue-_ownedComment.0" annotatedElement="InstanceValue">
<body>An instance value is a value specification that identifies an instance.</body>
</ownedComment>
<generalization xmi:id="InstanceValue-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="InstanceValue-instance" name="instance" type="InstanceSpecification" association="A_instance_instanceValue">
<ownedComment xmi:id="InstanceValue-instance-_ownedComment.0" annotatedElement="InstanceValue-instance">
<body>The instance that is the specified value.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceValue-instance-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceValue-instance-_lowerValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="InstanceValue-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="InstanceValue-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LiteralUnlimitedNatural" name="LiteralUnlimitedNatural">
<ownedComment xmi:id="LiteralUnlimitedNatural-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural">
<body>A literal unlimited natural is a specification of an unlimited natural number.</body>
</ownedComment>
<generalization xmi:id="LiteralUnlimitedNatural-_generalization.0" general="LiteralSpecification"/>
<ownedAttribute xmi:id="LiteralUnlimitedNatural-value" name="value" type="UnlimitedNatural">
<ownedComment xmi:id="LiteralUnlimitedNatural-value-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-value">
<body>The specified UnlimitedNatural value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LiteralUnlimitedNatural-value-_defaultValue" type="UnlimitedNatural"/>
</ownedAttribute>
<ownedOperation xmi:id="LiteralUnlimitedNatural-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="LiteralUnlimitedNatural-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralUnlimitedNatural-isComputable" name="isComputable" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralUnlimitedNatural-isComputable-spec">
<ownedComment xmi:id="LiteralUnlimitedNatural-isComputable-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="LiteralUnlimitedNatural-isComputable-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralUnlimitedNatural-isComputable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="LiteralUnlimitedNatural-unlimitedValue" name="unlimitedValue" isQuery="true" redefinedOperation="ValueSpecification-unlimitedValue" bodyCondition="LiteralUnlimitedNatural-unlimitedValue-spec">
<ownedComment xmi:id="LiteralUnlimitedNatural-unlimitedValue-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-unlimitedValue">
<body>The query unlimitedValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-unlimitedValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LiteralUnlimitedNatural-unlimitedValue-_ownedParameter.0" type="UnlimitedNatural" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Type" name="Type" isAbstract="true">
<ownedComment xmi:id="Type-_ownedComment.0" annotatedElement="Type">
<body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
</ownedComment>
<ownedComment xmi:id="Type-_ownedComment.1" annotatedElement="Type">
<body>A type constrains the values represented by a typed element.</body>
</ownedComment>
<generalization xmi:id="Type-_generalization.0" general="PackageableElement"/>
<ownedAttribute xmi:id="Type-package" name="package" type="Package" subsettedProperty="NamedElement-namespace" association="A_ownedType_package">
<ownedComment xmi:id="Type-package-_ownedComment.0" annotatedElement="Type-package">
<body>Specifies the owning package of this classifier, if any.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Type-package-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Type-package-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Type-createAssociation" name="createAssociation">
<ownedComment xmi:id="Type-createAssociation-_ownedComment.0" annotatedElement="Type-createAssociation">
<body>Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="Type-createAssociation-_ownedParameter.0" type="Association" direction="return"/>
<ownedParameter xmi:id="Type-createAssociation-end1IsNavigable" name="end1IsNavigable" type="Boolean" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1IsNavigable-_ownedComment.0" annotatedElement="Type-createAssociation-end1IsNavigable">
<body>The navigability for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end1Aggregation" name="end1Aggregation" type="AggregationKind" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1Aggregation-_ownedComment.0" annotatedElement="Type-createAssociation-end1Aggregation">
<body>The aggregation for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end1Name" name="end1Name" type="String" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1Name-_ownedComment.0" annotatedElement="Type-createAssociation-end1Name">
<body>The name for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end1Lower" name="end1Lower" type="Integer" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1Lower-_ownedComment.0" annotatedElement="Type-createAssociation-end1Lower">
<body>The lower bound for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end1Upper" name="end1Upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1Upper-_ownedComment.0" annotatedElement="Type-createAssociation-end1Upper">
<body>The upper bound for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end1Type" name="end1Type" type="Type" effect="read">
<ownedComment xmi:id="Type-createAssociation-end1Type-_ownedComment.0" annotatedElement="Type-createAssociation-end1Type">
<body>The type for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end2IsNavigable" name="end2IsNavigable" type="Boolean" effect="read">
<ownedComment xmi:id="Type-createAssociation-end2IsNavigable-_ownedComment.0" annotatedElement="Type-createAssociation-end2IsNavigable">
<body>The navigability for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end2Aggregation" name="end2Aggregation" type="AggregationKind" effect="read">
<ownedComment xmi:id="Type-createAssociation-end2Aggregation-_ownedComment.0" annotatedElement="Type-createAssociation-end2Aggregation">
<body>The aggregation for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end2Name" name="end2Name" type="String" effect="read">
<ownedComment xmi:id="Type-createAssociation-end2Name-_ownedComment.0" annotatedElement="Type-createAssociation-end2Name">
<body>The name for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end2Lower" name="end2Lower" type="Integer" effect="read">
<ownedComment xmi:id="Type-createAssociation-end2Lower-_ownedComment.0" annotatedElement="Type-createAssociation-end2Lower">
<body>The lower bound for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Type-createAssociation-end2Upper" name="end2Upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Type-createAssociation-end2Upper-_ownedComment.0" annotatedElement="Type-createAssociation-end2Upper">
<body>The upper bound for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Type-getAssociations" name="getAssociations">
<ownedComment xmi:id="Type-getAssociations-_ownedComment.0" annotatedElement="Type-getAssociations">
<body>Retrieves the associations in which this type is involved.</body>
</ownedComment>
<ownedParameter xmi:id="Type-getAssociations-_ownedParameter.0" type="Association" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Type-getAssociations-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Type-getAssociations-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Type-conformsTo" name="conformsTo" isQuery="true" bodyCondition="Type-conformsTo-spec">
<ownedComment xmi:id="Type-conformsTo-_ownedComment.0" annotatedElement="Type-conformsTo">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Type-conformsTo-spec" name="spec" constrainedElement="Type-conformsTo">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Type-conformsTo-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Type-conformsTo-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Type-conformsTo-other" name="other" type="Type"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Expression" name="Expression">
<ownedComment xmi:id="Expression-_ownedComment.0" annotatedElement="Expression">
<body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<ownedComment xmi:id="Expression-_ownedComment.1" annotatedElement="Expression">
<body>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 which are value specifications.</body>
</ownedComment>
<generalization xmi:id="Expression-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="Expression-symbol" name="symbol" type="String">
<ownedComment xmi:id="Expression-symbol-_ownedComment.0" annotatedElement="Expression-symbol">
<body>The symbol associated with the node in the expression tree.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-symbol-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-symbol-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Expression-operand" name="operand" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_operand_expression">
<ownedComment xmi:id="Expression-operand-_ownedComment.0" annotatedElement="Expression-operand">
<body>Specifies a sequence of operands.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-operand-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-operand-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="AggregationKind" name="AggregationKind" visibility="private">
<ownedComment xmi:id="AggregationKind-_ownedComment.0" annotatedElement="AggregationKind">
<body>AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property.</body>
</ownedComment>
<ownedLiteral xmi:id="AggregationKind-none" name="none">
<ownedComment xmi:id="AggregationKind-none-_ownedComment.0" annotatedElement="AggregationKind-none">
<body>Indicates that the property has no aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="AggregationKind-shared" name="shared">
<ownedComment xmi:id="AggregationKind-shared-_ownedComment.0" annotatedElement="AggregationKind-shared">
<body>Indicates that the property has a shared aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="AggregationKind-composite" name="composite">
<ownedComment xmi:id="AggregationKind-composite-_ownedComment.0" annotatedElement="AggregationKind-composite">
<body>Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts).</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="ParameterDirectionKind" name="ParameterDirectionKind" visibility="private">
<ownedComment xmi:id="ParameterDirectionKind-_ownedComment.0" annotatedElement="ParameterDirectionKind">
<body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
</ownedComment>
<ownedLiteral xmi:id="ParameterDirectionKind-in" name="in">
<ownedComment xmi:id="ParameterDirectionKind-in-_ownedComment.0" annotatedElement="ParameterDirectionKind-in">
<body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="ParameterDirectionKind-inout" name="inout">
<ownedComment xmi:id="ParameterDirectionKind-inout-_ownedComment.0" annotatedElement="ParameterDirectionKind-inout">
<body>Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="ParameterDirectionKind-out" name="out">
<ownedComment xmi:id="ParameterDirectionKind-out-_ownedComment.0" annotatedElement="ParameterDirectionKind-out">
<body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="ParameterDirectionKind-return" name="return">
<ownedComment xmi:id="ParameterDirectionKind-return-_ownedComment.0" annotatedElement="ParameterDirectionKind-return">
<body>Indicates that parameter values are passed as return values from a behavioral element back to the caller.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="VisibilityKind" name="VisibilityKind" visibility="private">
<ownedComment xmi:id="VisibilityKind-_ownedComment.0" annotatedElement="VisibilityKind">
<body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
</ownedComment>
<ownedOperation xmi:id="VisibilityKind-bestVisibility" name="bestVisibility" isQuery="true" precondition="VisibilityKind-bestVisibility-_ownedRule.0" bodyCondition="VisibilityKind-bestVisibility-spec">
<ownedComment xmi:id="VisibilityKind-bestVisibility-_ownedComment.0" annotatedElement="VisibilityKind-bestVisibility">
<body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
</ownedComment>
<ownedRule xmi:id="VisibilityKind-bestVisibility-_ownedRule.0" constrainedElement="VisibilityKind-bestVisibility">
<specification xmi:type="uml:OpaqueExpression" xmi:id="VisibilityKind-bestVisibility-_ownedRule.0-_specification">
<language>OCL</language>
<body>pre: not vis->includes(#protected) and not vis->includes(#package)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="VisibilityKind-bestVisibility-spec" name="spec" constrainedElement="VisibilityKind-bestVisibility">
<specification xmi:type="uml:OpaqueExpression" xmi:id="VisibilityKind-bestVisibility-spec-_specification">
<language>OCL</language>
<body>result = if vis->includes(#public) then #public else #private endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="VisibilityKind-bestVisibility-_ownedParameter.0" type="VisibilityKind" direction="return"/>
<ownedParameter xmi:id="VisibilityKind-bestVisibility-vis" name="vis" type="VisibilityKind">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="VisibilityKind-bestVisibility-vis-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="VisibilityKind-bestVisibility-vis-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedLiteral xmi:id="VisibilityKind-public" name="public">
<ownedComment xmi:id="VisibilityKind-public-_ownedComment.0" annotatedElement="VisibilityKind-public">
<body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="VisibilityKind-private" name="private">
<ownedComment xmi:id="VisibilityKind-private-_ownedComment.0" annotatedElement="VisibilityKind-private">
<body>A private element is only visible inside the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="VisibilityKind-protected" name="protected">
<ownedComment xmi:id="VisibilityKind-protected-_ownedComment.0" annotatedElement="VisibilityKind-protected">
<body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="VisibilityKind-package" name="package">
<ownedComment xmi:id="VisibilityKind-package-_ownedComment.0" annotatedElement="VisibilityKind-package">
<body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having 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, an element marked as having package visibility is not visible.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedElement_owner" name="A_ownedElement_owner" visibility="private" memberEnd="Element-ownedElement Element-owner"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_source_directedRelationship" name="A_source_directedRelationship" visibility="private" memberEnd="DirectedRelationship-source A_source_directedRelationship-_ownedEnd.0">
<ownedEnd xmi:id="A_source_directedRelationship-_ownedEnd.0" type="DirectedRelationship" association="A_source_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_source_directedRelationship-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_source_directedRelationship-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_directedRelationship" name="A_target_directedRelationship" visibility="private" memberEnd="DirectedRelationship-target A_target_directedRelationship-_ownedEnd.0">
<ownedEnd xmi:id="A_target_directedRelationship-_ownedEnd.0" type="DirectedRelationship" association="A_target_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_directedRelationship-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_directedRelationship-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_constrainedElement_constraint" name="A_constrainedElement_constraint" visibility="private" memberEnd="Constraint-constrainedElement A_constrainedElement_constraint-_ownedEnd.0">
<ownedEnd xmi:id="A_constrainedElement_constraint-_ownedEnd.0" type="Constraint" association="A_constrainedElement_constraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_constrainedElement_constraint-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_constrainedElement_constraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_type_typedElement" name="A_type_typedElement" visibility="private" memberEnd="TypedElement-type A_type_typedElement-_ownedEnd.0">
<ownedEnd xmi:id="A_type_typedElement-_ownedEnd.0" type="TypedElement" association="A_type_typedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_typedElement-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_typedElement-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_generalization_specific" name="A_generalization_specific" visibility="private" memberEnd="Classifier-generalization Generalization-specific"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_general_generalization" name="A_general_generalization" visibility="private" memberEnd="Generalization-general A_general_generalization-_ownedEnd.0">
<ownedEnd xmi:id="A_general_generalization-_ownedEnd.0" type="Generalization" association="A_general_generalization">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_generalization-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_generalization-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_feature_featuringClassifier" name="A_feature_featuringClassifier" visibility="private" memberEnd="Classifier-feature Feature-featuringClassifier"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_ownerFormalParam" name="A_ownedParameter_ownerFormalParam" visibility="private" memberEnd="BehavioralFeature-ownedParameter A_ownedParameter_ownerFormalParam-ownerFormalParam">
<ownedEnd xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam" name="ownerFormalParam" type="BehavioralFeature" subsettedProperty="NamedElement-namespace" association="A_ownedParameter_ownerFormalParam">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifier_instanceSpecification" name="A_classifier_instanceSpecification" visibility="private" memberEnd="InstanceSpecification-classifier A_classifier_instanceSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_classifier_instanceSpecification-_ownedEnd.0" type="InstanceSpecification" association="A_classifier_instanceSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_instanceSpecification-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_instanceSpecification-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_slot_owningInstance" name="A_slot_owningInstance" visibility="private" memberEnd="InstanceSpecification-slot Slot-owningInstance"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_definingFeature_slot" name="A_definingFeature_slot" visibility="private" memberEnd="Slot-definingFeature A_definingFeature_slot-_ownedEnd.0">
<ownedEnd xmi:id="A_definingFeature_slot-_ownedEnd.0" type="Slot" association="A_definingFeature_slot">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingFeature_slot-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingFeature_slot-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_annotatedElement_comment" name="A_annotatedElement_comment" visibility="private" memberEnd="Comment-annotatedElement A_annotatedElement_comment-_ownedEnd.0">
<ownedEnd xmi:id="A_annotatedElement_comment-_ownedEnd.0" type="Comment" association="A_annotatedElement_comment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_annotatedElement_comment-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_annotatedElement_comment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedComment_owningElement" name="A_ownedComment_owningElement" visibility="private" memberEnd="Element-ownedComment A_ownedComment_owningElement-owningElement">
<ownedEnd xmi:id="A_ownedComment_owningElement-owningElement" name="owningElement" type="Element" subsettedProperty="Element-owner" association="A_ownedComment_owningElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedComment_owningElement-owningElement-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedComment_owningElement-owningElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_importedElement_elementImport" name="A_importedElement_elementImport" visibility="private" memberEnd="ElementImport-importedElement A_importedElement_elementImport-_ownedEnd.0">
<ownedEnd xmi:id="A_importedElement_elementImport-_ownedEnd.0" type="ElementImport" association="A_importedElement_elementImport">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedElement_elementImport-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedElement_elementImport-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_inheritedMember_classifier" name="A_inheritedMember_classifier" visibility="private" memberEnd="Classifier-inheritedMember A_inheritedMember_classifier-_ownedEnd.0">
<ownedEnd xmi:id="A_inheritedMember_classifier-_ownedEnd.0" type="Classifier" association="A_inheritedMember_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inheritedMember_classifier-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inheritedMember_classifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_class" name="A_nestedClassifier_class" visibility="private" memberEnd="Class-nestedClassifier A_nestedClassifier_class-class">
<ownedEnd xmi:id="A_nestedClassifier_class-class" name="class" type="Class" subsettedProperty="NamedElement-namespace RedefinableElement-redefinitionContext" association="A_nestedClassifier_class">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_nestedClassifier_class-class-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_class-class-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_class" name="A_ownedAttribute_class" visibility="private" memberEnd="Class-ownedAttribute Property-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_class" name="A_ownedOperation_class" visibility="private" memberEnd="Class-ownedOperation Operation-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_precondition_preContext" name="A_precondition_preContext" visibility="private" memberEnd="Operation-precondition A_precondition_preContext-preContext">
<ownedEnd xmi:id="A_precondition_preContext-preContext" name="preContext" type="Operation" subsettedProperty="Constraint-context" association="A_precondition_preContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_precondition_preContext-preContext-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_preContext-preContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_postContext" name="A_postcondition_postContext" visibility="private" memberEnd="Operation-postcondition A_postcondition_postContext-postContext">
<ownedEnd xmi:id="A_postcondition_postContext-postContext" name="postContext" type="Operation" subsettedProperty="Constraint-context" association="A_postcondition_postContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_postcondition_postContext-postContext-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_postContext-postContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedOperation_operation" name="A_redefinedOperation_operation" visibility="private" memberEnd="Operation-redefinedOperation A_redefinedOperation_operation-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedOperation_operation-_ownedEnd.0" type="Operation" association="A_redefinedOperation_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedOperation_operation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedOperation_operation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedProperty_property" name="A_redefinedProperty_property" visibility="private" memberEnd="Property-redefinedProperty A_redefinedProperty_property-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedProperty_property-_ownedEnd.0" type="Property" association="A_redefinedProperty_property">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedProperty_property-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedProperty_property-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedEnd_owningAssociation" name="A_ownedEnd_owningAssociation" visibility="private" memberEnd="Association-ownedEnd Property-owningAssociation"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_datatype" name="A_ownedAttribute_datatype" visibility="private" memberEnd="DataType-ownedAttribute Property-datatype"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_datatype" name="A_ownedOperation_datatype" visibility="private" memberEnd="DataType-ownedOperation Operation-datatype"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedLiteral_enumeration" name="A_ownedLiteral_enumeration" visibility="private" memberEnd="Enumeration-ownedLiteral EnumerationLiteral-enumeration"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_elementImport_importingNamespace" name="A_elementImport_importingNamespace" visibility="private" memberEnd="Namespace-elementImport ElementImport-importingNamespace"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_packageImport_importingNamespace" name="A_packageImport_importingNamespace" visibility="private" memberEnd="Namespace-packageImport PackageImport-importingNamespace"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_importedPackage_packageImport" name="A_importedPackage_packageImport" visibility="private" memberEnd="PackageImport-importedPackage A_importedPackage_packageImport-_ownedEnd.0">
<ownedEnd xmi:id="A_importedPackage_packageImport-_ownedEnd.0" type="PackageImport" association="A_importedPackage_packageImport">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedPackage_packageImport-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedPackage_packageImport-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedClassifier_classifier" name="A_redefinedClassifier_classifier" visibility="private" memberEnd="Classifier-redefinedClassifier A_redefinedClassifier_classifier-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedClassifier_classifier-_ownedEnd.0" type="Classifier" association="A_redefinedClassifier_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedClassifier_classifier-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedClassifier_classifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningConstraint" name="A_specification_owningConstraint" visibility="private" memberEnd="Constraint-specification A_specification_owningConstraint-owningConstraint">
<ownedEnd xmi:id="A_specification_owningConstraint-owningConstraint" name="owningConstraint" type="Constraint" subsettedProperty="Element-owner" association="A_specification_owningConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_specification_owningConstraint-owningConstraint-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningConstraint-owningConstraint-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningParameter" name="A_defaultValue_owningParameter" visibility="private" memberEnd="Parameter-defaultValue A_defaultValue_owningParameter-owningParameter">
<ownedEnd xmi:id="A_defaultValue_owningParameter-owningParameter" name="owningParameter" type="Parameter" subsettedProperty="Element-owner" association="A_defaultValue_owningParameter">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_defaultValue_owningParameter-owningParameter-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningParameter-owningParameter-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningProperty" name="A_defaultValue_owningProperty" visibility="private" memberEnd="Property-defaultValue A_defaultValue_owningProperty-owningProperty">
<ownedEnd xmi:id="A_defaultValue_owningProperty-owningProperty" name="owningProperty" type="Property" subsettedProperty="Element-owner" association="A_defaultValue_owningProperty">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_defaultValue_owningProperty-owningProperty-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningProperty-owningProperty-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedRule_context" name="A_ownedRule_context" visibility="private" memberEnd="Namespace-ownedRule Constraint-context"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_member_namespace" name="A_member_namespace" visibility="private" memberEnd="Namespace-member A_member_namespace-_ownedEnd.0">
<ownedEnd xmi:id="A_member_namespace-_ownedEnd.0" type="Namespace" association="A_member_namespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_member_namespace-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_member_namespace-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_relatedElement_relationship" name="A_relatedElement_relationship" visibility="private" memberEnd="Relationship-relatedElement A_relatedElement_relationship-_ownedEnd.0">
<ownedEnd xmi:id="A_relatedElement_relationship-_ownedEnd.0" type="Relationship" association="A_relatedElement_relationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_relatedElement_relationship-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_relatedElement_relationship-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_endType_association" name="A_endType_association" visibility="private" memberEnd="Association-endType A_endType_association-_ownedEnd.0">
<ownedEnd xmi:id="A_endType_association-_ownedEnd.0" type="Association" association="A_endType_association">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endType_association-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endType_association-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_upperValue_owningUpper" name="A_upperValue_owningUpper" visibility="private" memberEnd="MultiplicityElement-upperValue A_upperValue_owningUpper-owningUpper">
<ownedEnd xmi:id="A_upperValue_owningUpper-owningUpper" name="owningUpper" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_upperValue_owningUpper">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_upperValue_owningUpper-owningUpper-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_upperValue_owningUpper-owningUpper-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_lowerValue_owningLower" name="A_lowerValue_owningLower" visibility="private" memberEnd="MultiplicityElement-lowerValue A_lowerValue_owningLower-owningLower">
<ownedEnd xmi:id="A_lowerValue_owningLower-owningLower" name="owningLower" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_lowerValue_owningLower">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_lowerValue_owningLower-owningLower-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_lowerValue_owningLower-owningLower-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_receivingPackage_packageMerge" name="A_receivingPackage_packageMerge" visibility="private" memberEnd="PackageMerge-receivingPackage Package-packageMerge"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_mergedPackage_packageMerge" name="A_mergedPackage_packageMerge" visibility="private" memberEnd="PackageMerge-mergedPackage A_mergedPackage_packageMerge-_ownedEnd.0">
<ownedEnd xmi:id="A_mergedPackage_packageMerge-_ownedEnd.0" type="PackageMerge" association="A_mergedPackage_packageMerge">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_mergedPackage_packageMerge-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mergedPackage_packageMerge-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_instance_instanceValue" name="A_instance_instanceValue" visibility="private" memberEnd="InstanceValue-instance A_instance_instanceValue-_ownedEnd.0">
<ownedEnd xmi:id="A_instance_instanceValue-_ownedEnd.0" type="InstanceValue" association="A_instance_instanceValue">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_instance_instanceValue-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_instance_instanceValue-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_owningSlot" name="A_value_owningSlot" visibility="private" memberEnd="Slot-value A_value_owningSlot-owningSlot">
<ownedEnd xmi:id="A_value_owningSlot-owningSlot" name="owningSlot" type="Slot" subsettedProperty="Element-owner" association="A_value_owningSlot">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_owningSlot-owningSlot-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_owningSlot-owningSlot-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningInstanceSpec" name="A_specification_owningInstanceSpec" visibility="private" memberEnd="InstanceSpecification-specification A_specification_owningInstanceSpec-owningInstanceSpec">
<ownedEnd xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec" name="owningInstanceSpec" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_specification_owningInstanceSpec">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_packagedElement_owningPackage" name="A_packagedElement_owningPackage" visibility="private" memberEnd="Package-packagedElement A_packagedElement_owningPackage-owningPackage">
<ownedEnd xmi:id="A_packagedElement_owningPackage-owningPackage" name="owningPackage" type="Package" subsettedProperty="NamedElement-namespace" association="A_packagedElement_owningPackage">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_packagedElement_owningPackage-owningPackage-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_packagedElement_owningPackage-owningPackage-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_importedMember_namespace" name="A_importedMember_namespace" visibility="private" memberEnd="Namespace-importedMember A_importedMember_namespace-_ownedEnd.0">
<ownedEnd xmi:id="A_importedMember_namespace-_ownedEnd.0" type="Namespace" association="A_importedMember_namespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedMember_namespace-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedMember_namespace-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_opposite_property" name="A_opposite_property" visibility="private" memberEnd="Property-opposite A_opposite_property-_ownedEnd.0">
<ownedEnd xmi:id="A_opposite_property-_ownedEnd.0" type="Property" association="A_opposite_property">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_opposite_property-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_opposite_property-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_subsettedProperty_property" name="A_subsettedProperty_property" visibility="private" memberEnd="Property-subsettedProperty A_subsettedProperty_property-_ownedEnd.0">
<ownedEnd xmi:id="A_subsettedProperty_property-_ownedEnd.0" type="Property" association="A_subsettedProperty_property">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_subsettedProperty_property-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_subsettedProperty_property-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_memberEnd_association" name="A_memberEnd_association" visibility="private" memberEnd="Association-memberEnd Property-association"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedType_package" name="A_ownedType_package" visibility="private" memberEnd="Package-ownedType Type-package"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_nestedPackage_nestingPackage" name="A_nestedPackage_nestingPackage" visibility="private" memberEnd="Package-nestedPackage Package-nestingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedElement_redefinableElement" name="A_redefinedElement_redefinableElement" visibility="private" memberEnd="RedefinableElement-redefinedElement A_redefinedElement_redefinableElement-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedElement_redefinableElement-_ownedEnd.0" type="RedefinableElement" association="A_redefinedElement_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedElement_redefinableElement-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedElement_redefinableElement-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_redefinableElement" name="A_redefinitionContext_redefinableElement" visibility="private" memberEnd="RedefinableElement-redefinitionContext A_redefinitionContext_redefinableElement-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinitionContext_redefinableElement-_ownedEnd.0" type="RedefinableElement" association="A_redefinitionContext_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_redefinableElement-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_redefinableElement-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_general_classifier" name="A_general_classifier" visibility="private" memberEnd="Classifier-general A_general_classifier-_ownedEnd.0">
<ownedEnd xmi:id="A_general_classifier-_ownedEnd.0" type="Classifier" association="A_general_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_classifier-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_classifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_superClass_class" name="A_superClass_class" visibility="private" memberEnd="Class-superClass A_superClass_class-_ownedEnd.0">
<ownedEnd xmi:id="A_superClass_class-_ownedEnd.0" type="Class" association="A_superClass_class">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_superClass_class-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_superClass_class-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_bodyCondition_bodyContext" name="A_bodyCondition_bodyContext" visibility="private" memberEnd="Operation-bodyCondition A_bodyCondition_bodyContext-bodyContext">
<ownedEnd xmi:id="A_bodyCondition_bodyContext-bodyContext" name="bodyContext" type="Operation" subsettedProperty="Constraint-context" association="A_bodyCondition_bodyContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_bodyCondition_bodyContext-bodyContext-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyCondition_bodyContext-bodyContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_type_operation" name="A_type_operation" visibility="private" memberEnd="Operation-type A_type_operation-_ownedEnd.0">
<ownedEnd xmi:id="A_type_operation-_ownedEnd.0" type="Operation" association="A_type_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_operation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_operation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_operation" name="A_ownedParameter_operation" visibility="private" memberEnd="Operation-ownedParameter Parameter-operation"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_operand_expression" name="A_operand_expression" visibility="private" memberEnd="Expression-operand A_operand_expression-expression">
<ownedEnd xmi:id="A_operand_expression-expression" name="expression" type="Expression" subsettedProperty="Element-owner" association="A_operand_expression">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operand_expression-expression-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operand_expression-expression-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_operation" name="A_raisedException_operation" visibility="private" memberEnd="Operation-raisedException A_raisedException_operation-_ownedEnd.0">
<ownedEnd xmi:id="A_raisedException_operation-_ownedEnd.0" type="Operation" association="A_raisedException_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_operation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_operation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_navigableOwnedEnd_association" name="A_navigableOwnedEnd_association" visibility="private" memberEnd="Association-navigableOwnedEnd A_navigableOwnedEnd_association-_ownedEnd.0">
<ownedEnd xmi:id="A_navigableOwnedEnd_association-_ownedEnd.0" type="Association" association="A_navigableOwnedEnd_association">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_navigableOwnedEnd_association-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_navigableOwnedEnd_association-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="OpaqueExpression" name="OpaqueExpression">
<ownedComment xmi:id="OpaqueExpression-_ownedComment.0" annotatedElement="OpaqueExpression">
<body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<ownedComment xmi:id="OpaqueExpression-_ownedComment.1" annotatedElement="OpaqueExpression">
<body>Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result.</body>
</ownedComment>
<ownedRule xmi:id="OpaqueExpression-language_body_size" name="language_body_size" constrainedElement="OpaqueExpression">
<ownedComment xmi:id="OpaqueExpression-language_body_size-_ownedComment.0" annotatedElement="OpaqueExpression-language_body_size">
<body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-language_body_size-_specification">
<language>OCL</language>
<body>language->notEmpty() implies (body->size() = language->size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="OpaqueExpression-only_return_result_parameters" name="only_return_result_parameters" constrainedElement="OpaqueExpression">
<ownedComment xmi:id="OpaqueExpression-only_return_result_parameters-_ownedComment.0" annotatedElement="OpaqueExpression-only_return_result_parameters">
<body>The behavior may only have return result parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-only_return_result_parameters-_specification">
<language>OCL</language>
<body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="OpaqueExpression-one_return_result_parameter" name="one_return_result_parameter" constrainedElement="OpaqueExpression">
<ownedComment xmi:id="OpaqueExpression-one_return_result_parameter-_ownedComment.0" annotatedElement="OpaqueExpression-one_return_result_parameter">
<body>The behavior must have exactly one return result parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-one_return_result_parameter-_specification">
<language>OCL</language>
<body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1</body>
</specification>
</ownedRule>
<generalization xmi:id="OpaqueExpression-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="OpaqueExpression-body" name="body" type="String" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="OpaqueExpression-body-_ownedComment.0" annotatedElement="OpaqueExpression-body">
<body>The text of the expression, possibly in multiple languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-body-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueExpression-language" name="language" type="String" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="OpaqueExpression-language-_ownedComment.0" annotatedElement="OpaqueExpression-language">
<body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-language-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-language-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueExpression-result" name="result" type="Parameter" isReadOnly="true" isDerived="true" association="A_result_opaqueExpression">
<ownedComment xmi:id="OpaqueExpression-result-_ownedComment.0" annotatedElement="OpaqueExpression-result">
<body>Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-result-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueExpression-behavior" name="behavior" type="Behavior" association="A_behavior_opaqueExpression">
<ownedComment xmi:id="OpaqueExpression-behavior-_ownedComment.0" annotatedElement="OpaqueExpression-behavior">
<body>Specifies the behavior of the opaque expression.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-behavior-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-behavior-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="OpaqueExpression-getResult" name="getResult" visibility="protected" isQuery="true">
<ownedParameter xmi:id="OpaqueExpression-getResult-_ownedParameter.0" type="Parameter" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-getResult-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-getResult-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="OpaqueExpression-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="OpaqueExpression-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="OpaqueExpression-value" name="value" isQuery="true" precondition="OpaqueExpression-value-_ownedRule.0" bodyCondition="OpaqueExpression-value-spec">
<ownedComment xmi:id="OpaqueExpression-value-_ownedComment.0" annotatedElement="OpaqueExpression-value">
<body>The query value() gives an integer value for an expression intended to produce one.</body>
</ownedComment>
<ownedRule xmi:id="OpaqueExpression-value-_ownedRule.0" constrainedElement="OpaqueExpression-value">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-_ownedRule.0-_specification">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="OpaqueExpression-value-spec" name="spec" constrainedElement="OpaqueExpression-value">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="OpaqueExpression-value-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="OpaqueExpression-isIntegral" name="isIntegral" isQuery="true" bodyCondition="OpaqueExpression-isIntegral-spec">
<ownedComment xmi:id="OpaqueExpression-isIntegral-_ownedComment.0" annotatedElement="OpaqueExpression-isIntegral">
<body>The query isIntegral() tells whether an expression is intended to produce an integer.</body>
</ownedComment>
<ownedRule xmi:id="OpaqueExpression-isIntegral-spec" name="spec" constrainedElement="OpaqueExpression-isIntegral">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isIntegral-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="OpaqueExpression-isIntegral-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="OpaqueExpression-isPositive" name="isPositive" isQuery="true" precondition="OpaqueExpression-isPositive-_ownedRule.0" bodyCondition="OpaqueExpression-isPositive-spec">
<ownedComment xmi:id="OpaqueExpression-isPositive-_ownedComment.0" annotatedElement="OpaqueExpression-isPositive">
<body>The query isPositive() tells whether an integer expression has a positive value.</body>
</ownedComment>
<ownedRule xmi:id="OpaqueExpression-isPositive-_ownedRule.0" constrainedElement="OpaqueExpression-isPositive">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-_ownedRule.0-_specification">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="OpaqueExpression-isPositive-spec" name="spec" constrainedElement="OpaqueExpression-isPositive">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="OpaqueExpression-isPositive-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="OpaqueExpression-isNonNegative" name="isNonNegative" isQuery="true" precondition="OpaqueExpression-isNonNegative-_ownedRule.0" bodyCondition="OpaqueExpression-isNonNegative-spec">
<ownedComment xmi:id="OpaqueExpression-isNonNegative-_ownedComment.0" annotatedElement="OpaqueExpression-isNonNegative">
<body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
</ownedComment>
<ownedRule xmi:id="OpaqueExpression-isNonNegative-_ownedRule.0" constrainedElement="OpaqueExpression-isNonNegative">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-_ownedRule.0-_specification">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="OpaqueExpression-isNonNegative-spec" name="spec" constrainedElement="OpaqueExpression-isNonNegative">
<specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="OpaqueExpression-isNonNegative-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="OpaqueBehavior" name="OpaqueBehavior">
<ownedComment xmi:id="OpaqueBehavior-_ownedComment.0" annotatedElement="OpaqueBehavior">
<body>An behavior with implementation-specific semantics.</body>
</ownedComment>
<generalization xmi:id="OpaqueBehavior-_generalization.0" general="Behavior"/>
<ownedAttribute xmi:id="OpaqueBehavior-body" name="body" type="String" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="OpaqueBehavior-body-_ownedComment.0" annotatedElement="OpaqueBehavior-body">
<body>Specifies the behavior in one or more languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-body-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueBehavior-language" name="language" type="String" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="OpaqueBehavior-language-_ownedComment.0" annotatedElement="OpaqueBehavior-language">
<body>Languages the body strings use in the same order as the body strings.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-language-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-language-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="FunctionBehavior" name="FunctionBehavior">
<ownedComment xmi:id="FunctionBehavior-_ownedComment.0" annotatedElement="FunctionBehavior">
<body>A function behavior is an opaque behavior that does not access or modify any objects or other external data.</body>
</ownedComment>
<ownedRule xmi:id="FunctionBehavior-one_output_parameter" name="one_output_parameter" constrainedElement="FunctionBehavior">
<ownedComment xmi:id="FunctionBehavior-one_output_parameter-_ownedComment.0" annotatedElement="FunctionBehavior-one_output_parameter">
<body>A function behavior has at least one output parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-one_output_parameter-_specification">
<language>OCL</language>
<body>self.ownedParameters->&#xD;&#xA; select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FunctionBehavior-types_of_parameters" name="types_of_parameters" constrainedElement="FunctionBehavior">
<ownedComment xmi:id="FunctionBehavior-types_of_parameters-_ownedComment.0" annotatedElement="FunctionBehavior-types_of_parameters">
<body>The types of parameters are all data types, which may not nest anything but other datatypes.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-types_of_parameters-_specification">
<language>OCL</language>
<body>def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA; d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsTypeOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA; p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))</body>
</specification>
</ownedRule>
<generalization xmi:id="FunctionBehavior-_generalization.0" general="OpaqueBehavior"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_behavioredClassifier_ownedBehavior" name="A_behavioredClassifier_ownedBehavior" visibility="private" memberEnd="A_behavioredClassifier_ownedBehavior-_ownedEnd.0 BehavioredClassifier-ownedBehavior">
<ownedEnd xmi:id="A_behavioredClassifier_ownedBehavior-_ownedEnd.0" type="BehavioredClassifier" association="A_behavioredClassifier_ownedBehavior">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavioredClassifier_ownedBehavior-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavioredClassifier_ownedBehavior-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifierBehavior_behavioredClassifier" name="A_classifierBehavior_behavioredClassifier" visibility="private" memberEnd="BehavioredClassifier-classifierBehavior A_classifierBehavior_behavioredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_classifierBehavior_behavioredClassifier-_ownedEnd.0" type="BehavioredClassifier" association="A_classifierBehavior_behavioredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifierBehavior_behavioredClassifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifierBehavior_behavioredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedBehavior_behavior" name="A_redefinedBehavior_behavior" visibility="private" memberEnd="Behavior-redefinedBehavior A_redefinedBehavior_behavior-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedBehavior_behavior-_ownedEnd.0" type="Behavior" association="A_redefinedBehavior_behavior">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedBehavior_behavior-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedBehavior_behavior-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_method_specification" name="A_method_specification" visibility="private" memberEnd="BehavioralFeature-method Behavior-specification"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_behavior_ownedParameter" name="A_behavior_ownedParameter" visibility="private" memberEnd="A_behavior_ownedParameter-_ownedEnd.0 Behavior-ownedParameter">
<ownedEnd xmi:id="A_behavior_ownedParameter-_ownedEnd.0" type="Behavior" association="A_behavior_ownedParameter">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_ownedParameter-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_ownedParameter-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_opaqueExpression" name="A_result_opaqueExpression" visibility="private" memberEnd="OpaqueExpression-result A_result_opaqueExpression-_ownedEnd.0">
<ownedEnd xmi:id="A_result_opaqueExpression-_ownedEnd.0" type="OpaqueExpression" association="A_result_opaqueExpression">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_opaqueExpression-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_opaqueExpression-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_behavior_opaqueExpression" name="A_behavior_opaqueExpression" visibility="private" memberEnd="OpaqueExpression-behavior A_behavior_opaqueExpression-_ownedEnd.0">
<ownedEnd xmi:id="A_behavior_opaqueExpression-_ownedEnd.0" type="OpaqueExpression" association="A_behavior_opaqueExpression">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_opaqueExpression-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_opaqueExpression-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_context_behavior" name="A_context_behavior" visibility="private" memberEnd="Behavior-context A_context_behavior-_ownedEnd.0">
<ownedEnd xmi:id="A_context_behavior-_ownedEnd.0" type="Behavior" association="A_context_behavior">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_behavior-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_behavior-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_precondition_behavior" name="A_precondition_behavior" visibility="private" memberEnd="Behavior-precondition A_precondition_behavior-_ownedEnd.0">
<ownedEnd xmi:id="A_precondition_behavior-_ownedEnd.0" type="Behavior" subsettedProperty="Constraint-context" association="A_precondition_behavior">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_precondition_behavior-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_behavior-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_behavior" name="A_postcondition_behavior" visibility="private" memberEnd="Behavior-postcondition A_postcondition_behavior-_ownedEnd.0">
<ownedEnd xmi:id="A_postcondition_behavior-_ownedEnd.0" type="Behavior" subsettedProperty="Constraint-context" association="A_postcondition_behavior">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_postcondition_behavior-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_behavior-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="OpaqueAction" name="OpaqueAction">
<ownedComment xmi:id="OpaqueAction-_ownedComment.0" annotatedElement="OpaqueAction">
<body>An action with implementation-specific semantics.</body>
</ownedComment>
<generalization xmi:id="OpaqueAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="OpaqueAction-body" name="body" type="String" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="OpaqueAction-body-_ownedComment.0" annotatedElement="OpaqueAction-body">
<body>Specifies the action in one or more languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-body-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueAction-language" name="language" type="String" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="OpaqueAction-language-_ownedComment.0" annotatedElement="OpaqueAction-language">
<body>Languages the body strings use, in the same order as the body strings</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-language-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-language-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueAction-inputValue" name="inputValue" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_inputValue_opaqueAction">
<ownedComment xmi:id="OpaqueAction-inputValue-_ownedComment.0" annotatedElement="OpaqueAction-inputValue">
<body>Provides input to the action.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-inputValue-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-inputValue-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OpaqueAction-outputValue" name="outputValue" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_outputValue_opaqueAction">
<ownedComment xmi:id="OpaqueAction-outputValue-_ownedComment.0" annotatedElement="OpaqueAction-outputValue">
<body>Takes output from the action.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-outputValue-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-outputValue-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CallAction" name="CallAction" isAbstract="true">
<ownedComment xmi:id="CallAction-_ownedComment.0" annotatedElement="CallAction">
<body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
</ownedComment>
<ownedRule xmi:id="CallAction-synchronous_call" name="synchronous_call" constrainedElement="CallAction">
<ownedComment xmi:id="CallAction-synchronous_call-_ownedComment.0" annotatedElement="CallAction-synchronous_call">
<body>Only synchronous call actions can have result pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-synchronous_call-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallAction-number_and_order" name="number_and_order" constrainedElement="CallAction">
<ownedComment xmi:id="CallAction-number_and_order-_ownedComment.0" annotatedElement="CallAction-number_and_order">
<body>The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-number_and_order-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallAction">
<ownedComment xmi:id="CallAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallAction-type_ordering_multiplicity">
<body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-type_ordering_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="CallAction-_generalization.0" general="InvocationAction"/>
<ownedAttribute xmi:id="CallAction-isSynchronous" name="isSynchronous" type="Boolean">
<ownedComment xmi:id="CallAction-isSynchronous-_ownedComment.0" annotatedElement="CallAction-isSynchronous">
<body>If true, the call is synchronous and the caller waits for completion of the invoked behavior.&#xD;
If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.&#xD;
</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="CallAction-isSynchronous-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="CallAction-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-output" association="A_result_callAction">
<ownedComment xmi:id="CallAction-result-_ownedComment.0" annotatedElement="CallAction-result">
<body>A list of output pins where the results of performing the invocation are placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallAction-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallAction-result-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="SendSignalAction" name="SendSignalAction">
<ownedComment xmi:id="SendSignalAction-_ownedComment.0" annotatedElement="SendSignalAction">
<body>A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action.</body>
</ownedComment>
<ownedRule xmi:id="SendSignalAction-number_order" name="number_order" constrainedElement="SendSignalAction">
<ownedComment xmi:id="SendSignalAction-number_order-_ownedComment.0" annotatedElement="SendSignalAction-number_order">
<body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-number_order-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="SendSignalAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="SendSignalAction">
<ownedComment xmi:id="SendSignalAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="SendSignalAction-type_ordering_multiplicity">
<body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-type_ordering_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="SendSignalAction-_generalization.0" general="InvocationAction"/>
<ownedAttribute xmi:id="SendSignalAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_sendSignalAction">
<ownedComment xmi:id="SendSignalAction-target-_ownedComment.0" annotatedElement="SendSignalAction-target">
<body>The target object to which the signal is sent.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendSignalAction-target-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendSignalAction-target-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="SendSignalAction-signal" name="signal" type="Signal" association="A_signal_sendSignalAction">
<ownedComment xmi:id="SendSignalAction-signal-_ownedComment.0" annotatedElement="SendSignalAction-signal">
<body>The type of signal transmitted to the target object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendSignalAction-signal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendSignalAction-signal-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CallOperationAction" name="CallOperationAction">
<ownedComment xmi:id="CallOperationAction-_ownedComment.0" annotatedElement="CallOperationAction">
<body>A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete.</body>
</ownedComment>
<ownedRule xmi:id="CallOperationAction-argument_pin_equal_parameter" name="argument_pin_equal_parameter" constrainedElement="CallOperationAction">
<ownedComment xmi:id="CallOperationAction-argument_pin_equal_parameter-_ownedComment.0" annotatedElement="CallOperationAction-argument_pin_equal_parameter">
<body>The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-argument_pin_equal_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallOperationAction-result_pin_equal_parameter" name="result_pin_equal_parameter" constrainedElement="CallOperationAction">
<ownedComment xmi:id="CallOperationAction-result_pin_equal_parameter-_ownedComment.0" annotatedElement="CallOperationAction-result_pin_equal_parameter">
<body>The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-result_pin_equal_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallOperationAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallOperationAction">
<ownedComment xmi:id="CallOperationAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallOperationAction-type_ordering_multiplicity">
<body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-type_ordering_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallOperationAction-type_target_pin" name="type_target_pin" constrainedElement="CallOperationAction">
<ownedComment xmi:id="CallOperationAction-type_target_pin-_ownedComment.0" annotatedElement="CallOperationAction-type_target_pin">
<body>The type of the target pin must be the same as the type that owns the operation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-type_target_pin-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="CallOperationAction-_generalization.0" general="CallAction"/>
<ownedAttribute xmi:id="CallOperationAction-operation" name="operation" type="Operation" association="A_operation_callOperationAction">
<ownedComment xmi:id="CallOperationAction-operation-_ownedComment.0" annotatedElement="CallOperationAction-operation">
<body>The operation to be invoked by the action execution.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallOperationAction-operation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallOperationAction-operation-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="CallOperationAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_callOperationAction">
<ownedComment xmi:id="CallOperationAction-target-_ownedComment.0" annotatedElement="CallOperationAction-target">
<body>The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallOperationAction-target-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallOperationAction-target-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CallBehaviorAction" name="CallBehaviorAction">
<ownedComment xmi:id="CallBehaviorAction-_ownedComment.0" annotatedElement="CallBehaviorAction">
<body>A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity.</body>
</ownedComment>
<ownedRule xmi:id="CallBehaviorAction-argument_pin_equal_parameter" name="argument_pin_equal_parameter" constrainedElement="CallBehaviorAction">
<ownedComment xmi:id="CallBehaviorAction-argument_pin_equal_parameter-_ownedComment.0" annotatedElement="CallBehaviorAction-argument_pin_equal_parameter">
<body>The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-argument_pin_equal_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallBehaviorAction-result_pin_equal_parameter" name="result_pin_equal_parameter" constrainedElement="CallBehaviorAction">
<ownedComment xmi:id="CallBehaviorAction-result_pin_equal_parameter-_ownedComment.0" annotatedElement="CallBehaviorAction-result_pin_equal_parameter">
<body>The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-result_pin_equal_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CallBehaviorAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallBehaviorAction">
<ownedComment xmi:id="CallBehaviorAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallBehaviorAction-type_ordering_multiplicity">
<body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-type_ordering_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="CallBehaviorAction-_generalization.0" general="CallAction"/>
<ownedAttribute xmi:id="CallBehaviorAction-behavior" name="behavior" type="Behavior" association="A_behavior_callBehaviorAction">
<ownedComment xmi:id="CallBehaviorAction-behavior-_ownedComment.0" annotatedElement="CallBehaviorAction-behavior">
<body>The invoked behavior. It must be capable of accepting and returning control.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallBehaviorAction-behavior-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallBehaviorAction-behavior-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="MultiplicityElement" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:id="MultiplicityElement-_ownedComment.0" annotatedElement="MultiplicityElement">
<body>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 multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-upper_gt_0" name="upper_gt_0" constrainedElement="MultiplicityElement">
<ownedComment xmi:id="MultiplicityElement-upper_gt_0-_ownedComment.0" annotatedElement="MultiplicityElement-upper_gt_0">
<body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper_gt_0-_specification">
<language>OCL</language>
<body>upperBound()->notEmpty() implies upperBound() > 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="MultiplicityElement">
<ownedComment xmi:id="MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="MultiplicityElement-lower_ge_0">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower_ge_0-_specification">
<language>OCL</language>
<body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="MultiplicityElement">
<ownedComment xmi:id="MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="MultiplicityElement-upper_ge_lower">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper_ge_lower-_specification">
<language>OCL</language>
<body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-value_specification_no_side_effects" name="value_specification_no_side_effects" constrainedElement="MultiplicityElement">
<ownedComment xmi:id="MultiplicityElement-value_specification_no_side_effects-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_no_side_effects">
<body>If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_no_side_effects-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-value_specification_constant" name="value_specification_constant" constrainedElement="MultiplicityElement">
<ownedComment xmi:id="MultiplicityElement-value_specification_constant-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_constant">
<body>If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_constant-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="MultiplicityElement-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="MultiplicityElement-isOrdered" name="isOrdered" type="Boolean">
<ownedComment xmi:id="MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="MultiplicityElement-isOrdered">
<body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isOrdered-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="MultiplicityElement-isUnique" name="isUnique" type="Boolean">
<ownedComment xmi:id="MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="MultiplicityElement-isUnique">
<body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isUnique-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="MultiplicityElement-upper" name="upper" type="UnlimitedNatural" isDerived="true">
<ownedComment xmi:id="MultiplicityElement-upper-_ownedComment.0" annotatedElement="MultiplicityElement-upper">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-upper-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="MultiplicityElement-lower" name="lower" type="Integer" isDerived="true">
<ownedComment xmi:id="MultiplicityElement-lower-_ownedComment.0" annotatedElement="MultiplicityElement-lower">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-lower-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="MultiplicityElement-upperValue" name="upperValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_upperValue_owningUpper">
<ownedComment xmi:id="MultiplicityElement-upperValue-_ownedComment.0" annotatedElement="MultiplicityElement-upperValue">
<body>The specification of the upper bound for this multiplicity.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-upperValue-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upperValue-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="MultiplicityElement-lowerValue" name="lowerValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_lowerValue_owningLower">
<ownedComment xmi:id="MultiplicityElement-lowerValue-_ownedComment.0" annotatedElement="MultiplicityElement-lowerValue">
<body>The specification of the lower bound for this multiplicity.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-lowerValue-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lowerValue-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="MultiplicityElement-setLower" name="setLower" visibility="protected">
<ownedParameter xmi:id="MultiplicityElement-setLower-newLower" name="newLower" visibility="protected" type="Integer" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-setUpper" name="setUpper" visibility="protected">
<ownedParameter xmi:id="MultiplicityElement-setUpper-newUpper" name="newUpper" visibility="protected" type="UnlimitedNatural" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-lower.1" name="lower" isQuery="true" bodyCondition="MultiplicityElement-lower.1-spec">
<ownedComment xmi:id="MultiplicityElement-lower.1-_ownedComment.0" annotatedElement="MultiplicityElement-lower.1">
<body>The derived lower attribute must equal the lowerBound.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-lower.1-spec" name="spec" constrainedElement="MultiplicityElement-lower.1 MultiplicityElement-lower">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower.1-spec-_specification">
<language>OCL</language>
<body>result = lowerBound()</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-lower.1-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-upper.1" name="upper" isQuery="true" bodyCondition="MultiplicityElement-upper.1-spec">
<ownedComment xmi:id="MultiplicityElement-upper.1-_ownedComment.0" annotatedElement="MultiplicityElement-upper.1">
<body>The derived upper attribute must equal the upperBound.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-upper.1-spec" name="spec" constrainedElement="MultiplicityElement-upper.1 MultiplicityElement-upper">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper.1-spec-_specification">
<language>OCL</language>
<body>result = upperBound()</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-upper.1-_ownedParameter.0" type="UnlimitedNatural" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-isMultivalued" name="isMultivalued" isQuery="true" precondition="MultiplicityElement-isMultivalued-_ownedRule.0" bodyCondition="MultiplicityElement-isMultivalued-spec">
<ownedComment xmi:id="MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="MultiplicityElement-isMultivalued">
<body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-isMultivalued-_ownedRule.0" constrainedElement="MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-_ownedRule.0-_specification">
<language>OCL</language>
<body>upperBound()->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-spec-_specification">
<language>OCL</language>
<body>result = upperBound() > 1</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-isMultivalued-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-includesCardinality" name="includesCardinality" isQuery="true" precondition="MultiplicityElement-includesCardinality-_ownedRule.0" bodyCondition="MultiplicityElement-includesCardinality-spec">
<ownedComment xmi:id="MultiplicityElement-includesCardinality-_ownedComment.0" annotatedElement="MultiplicityElement-includesCardinality">
<body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-includesCardinality-_ownedRule.0" constrainedElement="MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesCardinality-_ownedRule.0-_specification">
<language>OCL</language>
<body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-includesCardinality-spec" name="spec" constrainedElement="MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesCardinality-spec-_specification">
<language>OCL</language>
<body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-includesCardinality-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="MultiplicityElement-includesCardinality-C" name="C" type="Integer"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-includesMultiplicity" name="includesMultiplicity" isQuery="true" precondition="MultiplicityElement-includesMultiplicity-_ownedRule.0" bodyCondition="MultiplicityElement-includesMultiplicity-spec">
<ownedComment xmi:id="MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="MultiplicityElement-includesMultiplicity">
<body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-includesMultiplicity-_ownedRule.0" constrainedElement="MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-_ownedRule.0-_specification">
<language>OCL</language>
<body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-spec-_specification">
<language>OCL</language>
<body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-includesMultiplicity-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="MultiplicityElement-includesMultiplicity-M" name="M" type="MultiplicityElement"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-lowerBound" name="lowerBound" isQuery="true" bodyCondition="MultiplicityElement-lowerBound-spec">
<ownedComment xmi:id="MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="MultiplicityElement-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="MultiplicityElement-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-lowerBound-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-upperBound" name="upperBound" isQuery="true" bodyCondition="MultiplicityElement-upperBound-spec">
<ownedComment xmi:id="MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="MultiplicityElement-upperBound">
<body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-upperBound-spec" name="spec" constrainedElement="MultiplicityElement-upperBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upperBound-spec-_specification">
<language>OCL</language>
<body>result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-upperBound-_ownedParameter.0" type="UnlimitedNatural" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-compatibleWith" name="compatibleWith" isQuery="true" bodyCondition="MultiplicityElement-compatibleWith-spec">
<ownedComment xmi:id="MultiplicityElement-compatibleWith-_ownedComment.0" annotatedElement="MultiplicityElement-compatibleWith">
<body>The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-compatibleWith-spec" name="spec" constrainedElement="MultiplicityElement-compatibleWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-compatibleWith-spec-_specification">
<language>OCL</language>
<body>result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-compatibleWith-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="MultiplicityElement-compatibleWith-other" name="other" type="MultiplicityElement"/>
</ownedOperation>
<ownedOperation xmi:id="MultiplicityElement-is" name="is" isQuery="true" bodyCondition="MultiplicityElement-is-spec">
<ownedComment xmi:id="MultiplicityElement-is-_ownedComment.0" annotatedElement="MultiplicityElement-is">
<body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
</ownedComment>
<ownedRule xmi:id="MultiplicityElement-is-spec" name="spec" constrainedElement="MultiplicityElement-is">
<specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-is-spec-_specification">
<language>OCL</language>
<body>result = (lowerbound = self.lowerbound and upperbound = self.upperbound)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="MultiplicityElement-is-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="MultiplicityElement-is-lowerbound" name="lowerbound" type="Integer"/>
<ownedParameter xmi:id="MultiplicityElement-is-upperbound" name="upperbound" type="Integer"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_behavior_callBehaviorAction" name="A_behavior_callBehaviorAction" visibility="private" memberEnd="CallBehaviorAction-behavior A_behavior_callBehaviorAction-_ownedEnd.0">
<ownedEnd xmi:id="A_behavior_callBehaviorAction-_ownedEnd.0" type="CallBehaviorAction" association="A_behavior_callBehaviorAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_callBehaviorAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_callBehaviorAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_operation_callOperationAction" name="A_operation_callOperationAction" visibility="private" memberEnd="CallOperationAction-operation A_operation_callOperationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_operation_callOperationAction-_ownedEnd.0" type="CallOperationAction" association="A_operation_callOperationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callOperationAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callOperationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_callOperationAction" name="A_target_callOperationAction" visibility="private" memberEnd="CallOperationAction-target A_target_callOperationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_target_callOperationAction-_ownedEnd.0" type="CallOperationAction" association="A_target_callOperationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_callOperationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_callOperationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_sendSignalAction" name="A_target_sendSignalAction" visibility="private" memberEnd="SendSignalAction-target A_target_sendSignalAction-_ownedEnd.0">
<ownedEnd xmi:id="A_target_sendSignalAction-_ownedEnd.0" type="SendSignalAction" association="A_target_sendSignalAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_sendSignalAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_sendSignalAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signal_sendSignalAction" name="A_signal_sendSignalAction" visibility="private" memberEnd="SendSignalAction-signal A_signal_sendSignalAction-_ownedEnd.0">
<ownedEnd xmi:id="A_signal_sendSignalAction-_ownedEnd.0" type="SendSignalAction" association="A_signal_sendSignalAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_sendSignalAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_sendSignalAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_callAction" name="A_result_callAction" visibility="private" memberEnd="CallAction-result A_result_callAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_callAction-_ownedEnd.0" type="CallAction" association="A_result_callAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_callAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_callAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_argument_invocationAction" name="A_argument_invocationAction" visibility="private" memberEnd="InvocationAction-argument A_argument_invocationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_argument_invocationAction-_ownedEnd.0" type="InvocationAction" association="A_argument_invocationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_argument_invocationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_invocationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_action_output" name="A_action_output" visibility="private" memberEnd="A_action_output-_ownedEnd.0 Action-output">
<ownedEnd xmi:id="A_action_output-_ownedEnd.0" type="Action" association="A_action_output">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_output-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_output-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_action_input" name="A_action_input" visibility="private" memberEnd="A_action_input-_ownedEnd.0 Action-input">
<ownedEnd xmi:id="A_action_input-_ownedEnd.0" type="Action" association="A_action_input">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_input-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_input-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_valuePin" name="A_value_valuePin" visibility="private" memberEnd="ValuePin-value A_value_valuePin-_ownedEnd.0">
<ownedEnd xmi:id="A_value_valuePin-_ownedEnd.0" type="ValuePin" association="A_value_valuePin">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_valuePin-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_valuePin-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_context_action" name="A_context_action" visibility="private" memberEnd="Action-context A_context_action-_ownedEnd.0" isDerived="true">
<ownedEnd xmi:id="A_context_action-_ownedEnd.0" type="Action" association="A_context_action">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_action-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_action-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_inputValue_opaqueAction" name="A_inputValue_opaqueAction" visibility="private" memberEnd="OpaqueAction-inputValue A_inputValue_opaqueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_inputValue_opaqueAction-_ownedEnd.0" type="OpaqueAction" association="A_inputValue_opaqueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inputValue_opaqueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inputValue_opaqueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_outputValue_opaqueAction" name="A_outputValue_opaqueAction" visibility="private" memberEnd="OpaqueAction-outputValue A_outputValue_opaqueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_outputValue_opaqueAction-_ownedEnd.0" type="OpaqueAction" association="A_outputValue_opaqueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_outputValue_opaqueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_outputValue_opaqueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_subgroup_superGroup" name="A_subgroup_superGroup" visibility="private" memberEnd="ActivityGroup-subgroup ActivityGroup-superGroup"/>
<packagedElement xmi:type="uml:Class" xmi:id="SequenceNode" name="SequenceNode">
<ownedComment xmi:id="SequenceNode-_ownedComment.0" annotatedElement="SequenceNode">
<body>A sequence node is a structured activity node that executes its actions in order.</body>
</ownedComment>
<generalization xmi:id="SequenceNode-_generalization.0" general="StructuredActivityNode"/>
<ownedAttribute xmi:id="SequenceNode-executableNode" name="executableNode" type="ExecutableNode" isOrdered="true" aggregation="composite" redefinedProperty="StructuredActivityNode-node" association="A_executableNode_sequenceNode">
<ownedComment xmi:id="SequenceNode-executableNode-_ownedComment.0" annotatedElement="SequenceNode-executableNode">
<body>An ordered set of executable nodes.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SequenceNode-executableNode-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SequenceNode-executableNode-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InputPin" name="InputPin">
<ownedComment xmi:id="InputPin-_ownedComment.0" annotatedElement="InputPin">
<body>An input pin is a pin that holds input values to be consumed by an action.</body>
</ownedComment>
<ownedRule xmi:id="InputPin-outgoing_edges_structured_only" name="outgoing_edges_structured_only" constrainedElement="InputPin">
<ownedComment xmi:id="InputPin-outgoing_edges_structured_only-_ownedComment.0" annotatedElement="InputPin-outgoing_edges_structured_only">
<body>Input pins may have outgoing edges only when they are on actions that are structured nodes, and these edges must target a node contained by the structured node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InputPin-outgoing_edges_structured_only-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InputPin-_generalization.0" general="Pin"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="OutputPin" name="OutputPin">
<ownedComment xmi:id="OutputPin-_ownedComment.0" annotatedElement="OutputPin">
<body>An output pin is a pin that holds output values produced by an action.</body>
</ownedComment>
<ownedRule xmi:id="OutputPin-incoming_edges_structured_only" name="incoming_edges_structured_only" constrainedElement="OutputPin">
<ownedComment xmi:id="OutputPin-incoming_edges_structured_only-_ownedComment.0" annotatedElement="OutputPin-incoming_edges_structured_only">
<body>Output pins may have incoming edges only when they are on actions that are structured nodes, and these edges may not target a node contained by the structured node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="OutputPin-incoming_edges_structured_only-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="OutputPin-_generalization.0" general="Pin"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_scope_variable" name="A_scope_variable" visibility="private" memberEnd="Variable-scope StructuredActivityNode-variable"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_node_inStructuredNode" name="A_node_inStructuredNode" visibility="private" memberEnd="StructuredActivityNode-node ActivityNode-inStructuredNode"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_clause_test" name="A_clause_test" visibility="private" memberEnd="A_clause_test-_ownedEnd.0 Clause-test">
<ownedEnd xmi:id="A_clause_test-_ownedEnd.0" type="Clause" association="A_clause_test">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_clause_test-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_clause_test-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_clause_body" name="A_clause_body" visibility="private" memberEnd="A_clause_body-_ownedEnd.0 Clause-body">
<ownedEnd xmi:id="A_clause_body-_ownedEnd.0" type="Clause" association="A_clause_body">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_clause_body-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_clause_body-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_predecessorClause_successorClause" name="A_predecessorClause_successorClause" visibility="private" memberEnd="Clause-predecessorClause Clause-successorClause"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_loopNode_bodyPart" name="A_loopNode_bodyPart" visibility="private" memberEnd="A_loopNode_bodyPart-_ownedEnd.0 LoopNode-bodyPart">
<ownedEnd xmi:id="A_loopNode_bodyPart-_ownedEnd.0" type="LoopNode" association="A_loopNode_bodyPart">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_loopNode_bodyPart-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_loopNode_bodyPart-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_loopNode_setupPart" name="A_loopNode_setupPart" visibility="private" memberEnd="A_loopNode_setupPart-_ownedEnd.0 LoopNode-setupPart">
<ownedEnd xmi:id="A_loopNode_setupPart-_ownedEnd.0" type="LoopNode" association="A_loopNode_setupPart">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_loopNode_setupPart-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_loopNode_setupPart-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_clause_conditionalNode" name="A_clause_conditionalNode" visibility="private" memberEnd="ConditionalNode-clause A_clause_conditionalNode-_ownedEnd.0">
<ownedEnd xmi:id="A_clause_conditionalNode-_ownedEnd.0" type="ConditionalNode" association="A_clause_conditionalNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_clause_conditionalNode-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_clause_conditionalNode-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_decider_clause" name="A_decider_clause" visibility="private" memberEnd="Clause-decider A_decider_clause-_ownedEnd.0">
<ownedEnd xmi:id="A_decider_clause-_ownedEnd.0" type="Clause" association="A_decider_clause">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_decider_clause-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decider_clause-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_decider_loopNode" name="A_decider_loopNode" visibility="private" memberEnd="LoopNode-decider A_decider_loopNode-_ownedEnd.0">
<ownedEnd xmi:id="A_decider_loopNode-_ownedEnd.0" type="LoopNode" association="A_decider_loopNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_decider_loopNode-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decider_loopNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_test_loopNode" name="A_test_loopNode" visibility="private" memberEnd="LoopNode-test A_test_loopNode-_ownedEnd.0">
<ownedEnd xmi:id="A_test_loopNode-_ownedEnd.0" type="LoopNode" association="A_test_loopNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_test_loopNode-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_test_loopNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_activity_structuredNode" name="A_activity_structuredNode" visibility="private" memberEnd="StructuredActivityNode-activity Activity-structuredNode"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_variable_activityScope" name="A_variable_activityScope" visibility="private" memberEnd="Activity-variable Variable-activityScope"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_executableNode_sequenceNode" name="A_executableNode_sequenceNode" visibility="private" memberEnd="SequenceNode-executableNode A_executableNode_sequenceNode-_ownedEnd.0">
<ownedEnd xmi:id="A_executableNode_sequenceNode-_ownedEnd.0" type="SequenceNode" association="A_executableNode_sequenceNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_executableNode_sequenceNode-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_executableNode_sequenceNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_node_activity" name="A_node_activity" visibility="private" memberEnd="Activity-node ActivityNode-activity"/>
<packagedElement xmi:type="uml:Class" xmi:id="Usage" name="Usage">
<ownedComment xmi:id="Usage-_ownedComment.0" annotatedElement="Usage">
<body>A usage is a relationship in which one element requires another element (or set of elements) for its full implementation or operation. A usage is a dependency in which the client requires the presence of the supplier.</body>
</ownedComment>
<generalization xmi:id="Usage-_generalization.0" general="Dependency"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Abstraction" name="Abstraction">
<ownedComment xmi:id="Abstraction-_ownedComment.0" annotatedElement="Abstraction">
<body>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.</body>
</ownedComment>
<generalization xmi:id="Abstraction-_generalization.0" general="Dependency"/>
<ownedAttribute xmi:id="Abstraction-mapping" name="mapping" type="OpaqueExpression" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_mapping_abstraction">
<ownedComment xmi:id="Abstraction-mapping-_ownedComment.0" annotatedElement="Abstraction-mapping">
<body>An composition of an Expression that states the abstraction relationship between the supplier and the client. 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.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Abstraction-mapping-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction-mapping-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Dependency" name="Dependency">
<ownedComment xmi:id="Dependency-_ownedComment.0" annotatedElement="Dependency">
<body>A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s).</body>
</ownedComment>
<generalization xmi:id="Dependency-_generalization.0" general="DirectedRelationship"/>
<generalization xmi:id="Dependency-_generalization.1" general="PackageableElement"/>
<ownedAttribute xmi:id="Dependency-supplier" name="supplier" type="NamedElement" subsettedProperty="DirectedRelationship-target" association="A_supplierDependency_supplier">
<ownedComment xmi:id="Dependency-supplier-_ownedComment.0" annotatedElement="Dependency-supplier">
<body>The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-supplier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Dependency-supplier-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Dependency-client" name="client" type="NamedElement" subsettedProperty="DirectedRelationship-source" association="A_clientDependency_client">
<ownedComment xmi:id="Dependency-client-_ownedComment.0" annotatedElement="Dependency-client">
<body>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.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-client-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Dependency-client-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Realization" name="Realization">
<ownedComment xmi:id="Realization-_ownedComment.0" annotatedElement="Realization">
<body>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.</body>
</ownedComment>
<generalization xmi:id="Realization-_generalization.0" general="Abstraction"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Substitution" name="Substitution">
<ownedComment xmi:id="Substitution-_ownedComment.0" annotatedElement="Substitution">
<body>A substitution is a relationship between two classifiers signifies 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.</body>
</ownedComment>
<generalization xmi:id="Substitution-_generalization.0" general="Realization"/>
<ownedAttribute xmi:id="Substitution-contract" name="contract" type="Classifier" subsettedProperty="Dependency-supplier" association="A_contract_substitution">
<ownedComment xmi:id="Substitution-contract-_ownedComment.0" annotatedElement="Substitution-contract">
<body>The contract with which the substituting classifier complies.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Substitution-contract-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Substitution-contract-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Substitution-substitutingClassifier" name="substitutingClassifier" type="Classifier" subsettedProperty="Dependency-client" association="A_substitution_substitutingClassifier">
<ownedComment xmi:id="Substitution-substitutingClassifier-_ownedComment.0" annotatedElement="Substitution-substitutingClassifier">
<body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Substitution-substitutingClassifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Substitution-substitutingClassifier-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Namespace" name="Namespace" isAbstract="true">
<ownedComment xmi:id="Namespace-_ownedComment.0" annotatedElement="Namespace">
<body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-members_distinguishable" name="members_distinguishable" constrainedElement="Namespace">
<ownedComment xmi:id="Namespace-members_distinguishable-_ownedComment.0" annotatedElement="Namespace-members_distinguishable">
<body>All the members of a Namespace are distinguishable within it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-members_distinguishable-_specification">
<language>OCL</language>
<body>membersAreDistinguishable()</body>
</specification>
</ownedRule>
<generalization xmi:id="Namespace-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="Namespace-elementImport" name="elementImport" type="ElementImport" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_elementImport_importingNamespace">
<ownedComment xmi:id="Namespace-elementImport-_ownedComment.0" annotatedElement="Namespace-elementImport">
<body>References the ElementImports owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-elementImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-elementImport-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Namespace-packageImport" name="packageImport" type="PackageImport" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_packageImport_importingNamespace">
<ownedComment xmi:id="Namespace-packageImport-_ownedComment.0" annotatedElement="Namespace-packageImport">
<body>References the PackageImports owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-packageImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-packageImport-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Namespace-ownedRule" name="ownedRule" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedRule_context">
<ownedComment xmi:id="Namespace-ownedRule-_ownedComment.0" annotatedElement="Namespace-ownedRule">
<body>Specifies a set of Constraints owned by this Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedRule-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedRule-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Namespace-member" name="member" type="NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_member_namespace">
<ownedComment xmi:id="Namespace-member-_ownedComment.0" annotatedElement="Namespace-member">
<body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-member-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-member-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Namespace-importedMember" name="importedMember" type="PackageableElement" isReadOnly="true" isDerived="true" subsettedProperty="Namespace-member" association="A_importedMember_namespace">
<ownedComment xmi:id="Namespace-importedMember-_ownedComment.0" annotatedElement="Namespace-importedMember">
<body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Namespace-ownedMember" name="ownedMember" type="NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Namespace-member Element-ownedElement" association="A_ownedMember_namespace">
<ownedComment xmi:id="Namespace-ownedMember-_ownedComment.0" annotatedElement="Namespace-ownedMember">
<body>A collection of NamedElements owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedMember-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Namespace-createElementImport" name="createElementImport">
<ownedComment xmi:id="Namespace-createElementImport-_ownedComment.0" annotatedElement="Namespace-createElementImport">
<body>Creates an import of the specified element into this namespace with the specified visibility.</body>
</ownedComment>
<ownedParameter xmi:id="Namespace-createElementImport-_ownedParameter.0" type="ElementImport" direction="return"/>
<ownedParameter xmi:id="Namespace-createElementImport-element" name="element" type="PackageableElement" effect="read">
<ownedComment xmi:id="Namespace-createElementImport-element-_ownedComment.0" annotatedElement="Namespace-createElementImport-element">
<body>The element to import.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Namespace-createElementImport-visibility" name="visibility" type="VisibilityKind" effect="read">
<ownedComment xmi:id="Namespace-createElementImport-visibility-_ownedComment.0" annotatedElement="Namespace-createElementImport-visibility">
<body>The visibility for the new element import.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-createPackageImport" name="createPackageImport">
<ownedComment xmi:id="Namespace-createPackageImport-_ownedComment.0" annotatedElement="Namespace-createPackageImport">
<body>Creates an import of the specified package into this namespace with the specified visibility.</body>
</ownedComment>
<ownedParameter xmi:id="Namespace-createPackageImport-_ownedParameter.0" type="PackageImport" direction="return"/>
<ownedParameter xmi:id="Namespace-createPackageImport-package_" name="package_" type="Package" effect="read">
<ownedComment xmi:id="Namespace-createPackageImport-package_-_ownedComment.0" annotatedElement="Namespace-createPackageImport-package_">
<body>The package to import.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Namespace-createPackageImport-visibility" name="visibility" type="VisibilityKind" effect="read">
<ownedComment xmi:id="Namespace-createPackageImport-visibility-_ownedComment.0" annotatedElement="Namespace-createPackageImport-visibility">
<body>The visibility for the new package import.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-getImportedElements" name="getImportedElements" isQuery="true">
<ownedComment xmi:id="Namespace-getImportedElements-_ownedComment.0" annotatedElement="Namespace-getImportedElements">
<body>Retrieves the elements imported by this namespace.</body>
</ownedComment>
<ownedParameter xmi:id="Namespace-getImportedElements-_ownedParameter.0" type="PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getImportedElements-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getImportedElements-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-getImportedPackages" name="getImportedPackages" isQuery="true">
<ownedComment xmi:id="Namespace-getImportedPackages-_ownedComment.0" annotatedElement="Namespace-getImportedPackages">
<body>Retrieves the packages imported by this namespace.</body>
</ownedComment>
<ownedParameter xmi:id="Namespace-getImportedPackages-_ownedParameter.0" type="Package" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getImportedPackages-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getImportedPackages-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-importedMember.1" name="importedMember" isQuery="true" bodyCondition="Namespace-importedMember.1-spec">
<ownedComment xmi:id="Namespace-importedMember.1-_ownedComment.0" annotatedElement="Namespace-importedMember.1">
<body>The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-importedMember.1-spec" name="spec" constrainedElement="Namespace-importedMember.1 Namespace-importedMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importedMember.1-spec-_specification">
<language>OCL</language>
<body>result = self.importMembers(self.elementImport.importedElement.asSet()-&#xA;>union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Namespace-importedMember.1-_ownedParameter.0" type="PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-getNamesOfMember" name="getNamesOfMember" isQuery="true" bodyCondition="Namespace-getNamesOfMember-spec">
<ownedComment xmi:id="Namespace-getNamesOfMember-_ownedComment.0" annotatedElement="Namespace-getNamesOfMember">
<body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
</ownedComment>
<ownedComment xmi:id="Namespace-getNamesOfMember-_ownedComment.1" annotatedElement="Namespace-getNamesOfMember">
<body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. The query takes account of importing. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-getNamesOfMember-spec" name="spec" constrainedElement="Namespace-getNamesOfMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-getNamesOfMember-spec-_specification">
<language>OCL</language>
<body>result = if self.ownedMember ->includes(element)&#xA;then Set{}->include(element.name)&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then elementImports->collect(el | el.getName())&#xA; else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))&#xA; endif&#xA;endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Namespace-getNamesOfMember-_ownedParameter.0" type="String" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getNamesOfMember-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getNamesOfMember-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Namespace-getNamesOfMember-element" name="element" type="NamedElement"/>
</ownedOperation>
<ownedOperation xmi:id="Namespace-membersAreDistinguishable" name="membersAreDistinguishable" isQuery="true" bodyCondition="Namespace-membersAreDistinguishable-spec">
<ownedComment xmi:id="Namespace-membersAreDistinguishable-_ownedComment.0" annotatedElement="Namespace-membersAreDistinguishable">
<body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-membersAreDistinguishable-spec" name="spec" constrainedElement="Namespace-membersAreDistinguishable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-membersAreDistinguishable-spec-_specification">
<language>OCL</language>
<body>result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Namespace-membersAreDistinguishable-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Namespace-importMembers" name="importMembers" isQuery="true" bodyCondition="Namespace-importMembers-spec">
<ownedComment xmi:id="Namespace-importMembers-_ownedComment.0" annotatedElement="Namespace-importMembers">
<body>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 owned members, and also excludes elements which would have the same name when imported.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-importMembers-spec" name="spec" constrainedElement="Namespace-importMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importMembers-spec-_specification">
<language>OCL</language>
<body>result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem |&#xA;mem.imp.isDistinguishableFrom(mem, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Namespace-importMembers-_ownedParameter.0" type="PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Namespace-importMembers-imps" name="imps" type="PackageableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-imps-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-imps-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Namespace-excludeCollisions" name="excludeCollisions" isQuery="true" bodyCondition="Namespace-excludeCollisions-spec">
<ownedComment xmi:id="Namespace-excludeCollisions-_ownedComment.0" annotatedElement="Namespace-excludeCollisions">
<body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.</body>
</ownedComment>
<ownedRule xmi:id="Namespace-excludeCollisions-spec" name="spec" constrainedElement="Namespace-excludeCollisions">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-excludeCollisions-spec-_specification">
<language>OCL</language>
<body>result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Namespace-excludeCollisions-_ownedParameter.0" type="PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Namespace-excludeCollisions-imps" name="imps" type="PackageableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-imps-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-imps-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_mapping_abstraction" name="A_mapping_abstraction" visibility="private" memberEnd="Abstraction-mapping A_mapping_abstraction-_ownedEnd.0">
<ownedEnd xmi:id="A_mapping_abstraction-_ownedEnd.0" type="Abstraction" association="A_mapping_abstraction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_mapping_abstraction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mapping_abstraction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_contract_substitution" name="A_contract_substitution" visibility="private" memberEnd="Substitution-contract A_contract_substitution-_ownedEnd.0">
<ownedEnd xmi:id="A_contract_substitution-_ownedEnd.0" type="Substitution" association="A_contract_substitution">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_substitution-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_substitution-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_substitution_substitutingClassifier" name="A_substitution_substitutingClassifier" visibility="private" memberEnd="Classifier-substitution Substitution-substitutingClassifier"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_supplierDependency_supplier" name="A_supplierDependency_supplier" visibility="private" memberEnd="A_supplierDependency_supplier-supplierDependency Dependency-supplier">
<ownedEnd xmi:id="A_supplierDependency_supplier-supplierDependency" name="supplierDependency" type="Dependency" association="A_supplierDependency_supplier">
<ownedComment xmi:id="A_supplierDependency_supplier-supplierDependency-_ownedComment.0" annotatedElement="A_supplierDependency_supplier-supplierDependency">
<body>Indicates the dependencies that reference the supplier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_supplierDependency_supplier-supplierDependency-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_supplierDependency_supplier-supplierDependency-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_clientDependency_client" name="A_clientDependency_client" visibility="private" memberEnd="NamedElement-clientDependency Dependency-client"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedMember_namespace" name="A_ownedMember_namespace" visibility="private" memberEnd="Namespace-ownedMember NamedElement-namespace"/>
<packagedElement xmi:type="uml:Class" xmi:id="InterfaceRealization" name="InterfaceRealization">
<ownedComment xmi:id="InterfaceRealization-_ownedComment.0" annotatedElement="InterfaceRealization">
<body>An interface realization is a specialized realization relationship between a classifier and an interface. This relationship signifies that the realizing classifier conforms to the contract specified by the interface.</body>
</ownedComment>
<generalization xmi:id="InterfaceRealization-_generalization.0" general="Realization"/>
<ownedAttribute xmi:id="InterfaceRealization-contract" name="contract" type="Interface" subsettedProperty="Dependency-supplier" association="A_contract_interfaceRealization">
<ownedComment xmi:id="InterfaceRealization-contract-_ownedComment.0" annotatedElement="InterfaceRealization-contract">
<body>References the Interface specifying the conformance contract.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InterfaceRealization-contract-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InterfaceRealization-contract-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="InterfaceRealization-implementingClassifier" name="implementingClassifier" type="BehavioredClassifier" subsettedProperty="Dependency-client" association="A_interfaceRealization_implementingClassifier">
<ownedComment xmi:id="InterfaceRealization-implementingClassifier-_ownedComment.0" annotatedElement="InterfaceRealization-implementingClassifier">
<body>References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points).</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InterfaceRealization-implementingClassifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InterfaceRealization-implementingClassifier-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_interface_ownedAttribute" name="A_interface_ownedAttribute" visibility="private" memberEnd="A_interface_ownedAttribute-_ownedEnd.0 Interface-ownedAttribute">
<ownedEnd xmi:id="A_interface_ownedAttribute-_ownedEnd.0" type="Interface" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace Feature-featuringClassifier" association="A_interface_ownedAttribute">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_interface_ownedAttribute-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_interface_ownedAttribute-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_interface_ownedOperation" name="A_interface_ownedOperation" visibility="private" memberEnd="Operation-interface Interface-ownedOperation"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_contract_interfaceRealization" name="A_contract_interfaceRealization" visibility="private" memberEnd="InterfaceRealization-contract A_contract_interfaceRealization-_ownedEnd.0">
<ownedEnd xmi:id="A_contract_interfaceRealization-_ownedEnd.0" type="InterfaceRealization" association="A_contract_interfaceRealization">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_interfaceRealization-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_interfaceRealization-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_interfaceRealization_implementingClassifier" name="A_interfaceRealization_implementingClassifier" visibility="private" memberEnd="BehavioredClassifier-interfaceRealization InterfaceRealization-implementingClassifier"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_interface" name="A_nestedClassifier_interface" visibility="private" memberEnd="Interface-nestedClassifier A_nestedClassifier_interface-_ownedEnd.0">
<ownedEnd xmi:id="A_nestedClassifier_interface-_ownedEnd.0" type="Interface" subsettedProperty="NamedElement-namespace RedefinableElement-redefinitionContext" association="A_nestedClassifier_interface">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_nestedClassifier_interface-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_interface-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_interface_redefinedInterface" name="A_interface_redefinedInterface" visibility="private" memberEnd="A_interface_redefinedInterface-_ownedEnd.0 Interface-redefinedInterface">
<ownedEnd xmi:id="A_interface_redefinedInterface-_ownedEnd.0" type="Interface" association="A_interface_redefinedInterface">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_interface_redefinedInterface-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_interface_redefinedInterface-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StructuredClassifier" name="StructuredClassifier" isAbstract="true">
<ownedComment xmi:id="StructuredClassifier-_ownedComment.0" annotatedElement="StructuredClassifier">
<body>A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances.</body>
</ownedComment>
<ownedRule xmi:id="StructuredClassifier-multiplicities" name="multiplicities" constrainedElement="StructuredClassifier">
<ownedComment xmi:id="StructuredClassifier-multiplicities-_ownedComment.0" annotatedElement="StructuredClassifier-multiplicities">
<body>The multiplicities on connected elements must be consistent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredClassifier-multiplicities-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="StructuredClassifier-_generalization.0" general="Classifier"/>
<ownedAttribute xmi:id="StructuredClassifier-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="StructuredClassifier-role Namespace-ownedMember Classifier-attribute" association="A_ownedAttribute_structuredClassifier">
<ownedComment xmi:id="StructuredClassifier-ownedAttribute-_ownedComment.0" annotatedElement="StructuredClassifier-ownedAttribute">
<body>References the properties owned by the classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="StructuredClassifier-part" name="part" type="Property" isReadOnly="true" isDerived="true" association="A_part_structuredClassifier">
<ownedComment xmi:id="StructuredClassifier-part-_ownedComment.0" annotatedElement="StructuredClassifier-part">
<body>References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-part-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-part-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="StructuredClassifier-role" name="role" type="ConnectableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Namespace-member" association="A_role_structuredClassifier">
<ownedComment xmi:id="StructuredClassifier-role-_ownedComment.0" annotatedElement="StructuredClassifier-role">
<body>References the roles that instances may play in this classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-role-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-role-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="StructuredClassifier-ownedConnector" name="ownedConnector" type="Connector" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedConnector_structuredClassifier">
<ownedComment xmi:id="StructuredClassifier-ownedConnector-_ownedComment.0" annotatedElement="StructuredClassifier-ownedConnector">
<body>References the connectors owned by the classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedConnector-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedConnector-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="StructuredClassifier-createOwnedAttribute" name="createOwnedAttribute">
<ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier.</body>
</ownedComment>
<ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
<ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-name" name="name" type="String" effect="read">
<ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-name-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-name">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-createOwnedAttribute-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-createOwnedAttribute-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-type" name="type" type="Type" effect="read">
<ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-type-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-type">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-createOwnedAttribute-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-createOwnedAttribute-type-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-lower" name="lower" type="Integer" effect="read">
<ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-lower">
<body>The lower bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-upper" name="upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-upper">
<body>The upper bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_type_connector" name="A_type_connector" visibility="private" memberEnd="Connector-type A_type_connector-_ownedEnd.0">
<ownedEnd xmi:id="A_type_connector-_ownedEnd.0" type="Connector" association="A_type_connector">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_connector-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_connector-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_structuredClassifier" name="A_ownedAttribute_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-ownedAttribute A_ownedAttribute_structuredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedAttribute_structuredClassifier-_ownedEnd.0" type="StructuredClassifier" association="A_ownedAttribute_structuredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedAttribute_structuredClassifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_structuredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_part_structuredClassifier" name="A_part_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-part A_part_structuredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_part_structuredClassifier-_ownedEnd.0" type="StructuredClassifier" association="A_part_structuredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_part_structuredClassifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_part_structuredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_role_structuredClassifier" name="A_role_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-role A_role_structuredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_role_structuredClassifier-_ownedEnd.0" type="StructuredClassifier" association="A_role_structuredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_role_structuredClassifier-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_role_structuredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedConnector_structuredClassifier" name="A_ownedConnector_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-ownedConnector A_ownedConnector_structuredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedConnector_structuredClassifier-_ownedEnd.0" type="StructuredClassifier" subsettedProperty="RedefinableElement-redefinitionContext" association="A_ownedConnector_structuredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedConnector_structuredClassifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedConnector_structuredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedConnector_connector" name="A_redefinedConnector_connector" visibility="private" memberEnd="Connector-redefinedConnector A_redefinedConnector_connector-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedConnector_connector-_ownedEnd.0" type="Connector" association="A_redefinedConnector_connector">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedConnector_connector-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedConnector_connector-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_end_connector" name="A_end_connector" visibility="private" memberEnd="Connector-end A_end_connector-_ownedEnd.0">
<ownedEnd xmi:id="A_end_connector-_ownedEnd.0" type="Connector" association="A_end_connector">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_end_connector-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_connector-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_definingEnd_connectorEnd" name="A_definingEnd_connectorEnd" visibility="private" memberEnd="ConnectorEnd-definingEnd A_definingEnd_connectorEnd-_ownedEnd.0">
<ownedEnd xmi:id="A_definingEnd_connectorEnd-_ownedEnd.0" type="ConnectorEnd" association="A_definingEnd_connectorEnd">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingEnd_connectorEnd-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingEnd_connectorEnd-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_attribute_classifier" name="A_attribute_classifier" visibility="private" memberEnd="Classifier-attribute A_attribute_classifier-classifier">
<ownedEnd xmi:id="A_attribute_classifier-classifier" name="classifier" type="Classifier" subsettedProperty="RedefinableElement-redefinitionContext" association="A_attribute_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_attribute_classifier-classifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_attribute_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Variable" name="Variable">
<ownedComment xmi:id="Variable-_ownedComment.0" annotatedElement="Variable">
<body>Variables are elements for passing data between actions indirectly. A local variable stores values shared by the actions within a structured activity group but not accessible outside it. The output of an action may be written to a variable and read for the input to a subsequent action, which is effectively an indirect data flow path. Because there is no predefined relationship between actions that read and write variables, these actions must be sequenced by control flows to prevent race conditions that may occur between actions that read or write the same variable.</body>
</ownedComment>
<ownedComment xmi:id="Variable-_ownedComment.1" annotatedElement="Variable">
<body>A variable is considered a connectable element.</body>
</ownedComment>
<ownedRule xmi:id="Variable-owned" name="owned" constrainedElement="Variable">
<ownedComment xmi:id="Variable-owned-_ownedComment.0" annotatedElement="Variable-owned">
<body>A variable is owned by a StructuredNode or Activity, but not both.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Variable-owned-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Variable-_generalization.0" general="MultiplicityElement"/>
<generalization xmi:id="Variable-_generalization.1" general="ConnectableElement"/>
<ownedAttribute xmi:id="Variable-scope" name="scope" type="StructuredActivityNode" subsettedProperty="NamedElement-namespace" association="A_scope_variable">
<ownedComment xmi:id="Variable-scope-_ownedComment.0" annotatedElement="Variable-scope">
<body>A structured activity node that owns the variable.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Variable-scope-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Variable-scope-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Variable-activityScope" name="activityScope" type="Activity" subsettedProperty="NamedElement-namespace" association="A_variable_activityScope">
<ownedComment xmi:id="Variable-activityScope-_ownedComment.0" annotatedElement="Variable-activityScope">
<body>An activity that owns the variable.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Variable-activityScope-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Variable-activityScope-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Variable-isAccessibleBy" name="isAccessibleBy" isQuery="true" bodyCondition="Variable-isAccessibleBy-spec">
<ownedComment xmi:id="Variable-isAccessibleBy-_ownedComment.0" annotatedElement="Variable-isAccessibleBy">
<body>The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable.&#xD;
</body>
</ownedComment>
<ownedRule xmi:id="Variable-isAccessibleBy-spec" name="spec" constrainedElement="Variable-isAccessibleBy">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Variable-isAccessibleBy-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Variable-isAccessibleBy-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Variable-isAccessibleBy-a" name="a" type="Action"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CollaborationUse" name="CollaborationUse">
<ownedComment xmi:id="CollaborationUse-_ownedComment.0" annotatedElement="CollaborationUse">
<body>A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations.&#xD;
Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration.</body>
</ownedComment>
<ownedRule xmi:id="CollaborationUse-client_elements" name="client_elements" constrainedElement="CollaborationUse">
<ownedComment xmi:id="CollaborationUse-client_elements-_ownedComment.0" annotatedElement="CollaborationUse-client_elements">
<body>All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-client_elements-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CollaborationUse-every_role" name="every_role" constrainedElement="CollaborationUse">
<ownedComment xmi:id="CollaborationUse-every_role-_ownedComment.0" annotatedElement="CollaborationUse-every_role">
<body>Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-every_role-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CollaborationUse-connectors" name="connectors" constrainedElement="CollaborationUse">
<ownedComment xmi:id="CollaborationUse-connectors-_ownedComment.0" annotatedElement="CollaborationUse-connectors">
<body>The connectors in the classifier connect according to the connectors in the collaboration</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-connectors-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="CollaborationUse-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="CollaborationUse-type" name="type" type="Collaboration" association="A_type_collaborationUse">
<ownedComment xmi:id="CollaborationUse-type-_ownedComment.0" annotatedElement="CollaborationUse-type">
<body>The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CollaborationUse-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CollaborationUse-type-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="CollaborationUse-roleBinding" name="roleBinding" type="Dependency" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_roleBinding_collaborationUse">
<ownedComment xmi:id="CollaborationUse-roleBinding-_ownedComment.0" annotatedElement="CollaborationUse-roleBinding">
<body>A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles).&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CollaborationUse-roleBinding-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CollaborationUse-roleBinding-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Collaboration" name="Collaboration">
<ownedComment xmi:id="Collaboration-_ownedComment.0" annotatedElement="Collaboration">
<body>A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration.</body>
</ownedComment>
<generalization xmi:id="Collaboration-_generalization.0" general="StructuredClassifier"/>
<generalization xmi:id="Collaboration-_generalization.1" general="BehavioredClassifier"/>
<ownedAttribute xmi:id="Collaboration-collaborationRole" name="collaborationRole" type="ConnectableElement" subsettedProperty="StructuredClassifier-role" association="A_collaborationRole_collaboration">
<ownedComment xmi:id="Collaboration-collaborationRole-_ownedComment.0" annotatedElement="Collaboration-collaborationRole">
<body>References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Collaboration-collaborationRole-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Collaboration-collaborationRole-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_type_collaborationUse" name="A_type_collaborationUse" visibility="private" memberEnd="CollaborationUse-type A_type_collaborationUse-_ownedEnd.0">
<ownedEnd xmi:id="A_type_collaborationUse-_ownedEnd.0" type="CollaborationUse" association="A_type_collaborationUse">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_collaborationUse-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_collaborationUse-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_roleBinding_collaborationUse" name="A_roleBinding_collaborationUse" visibility="private" memberEnd="CollaborationUse-roleBinding A_roleBinding_collaborationUse-_ownedEnd.0">
<ownedEnd xmi:id="A_roleBinding_collaborationUse-_ownedEnd.0" type="CollaborationUse" association="A_roleBinding_collaborationUse">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_roleBinding_collaborationUse-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_roleBinding_collaborationUse-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifier_representation" name="A_classifier_representation" visibility="private" memberEnd="A_classifier_representation-_ownedEnd.0 Classifier-representation">
<ownedEnd xmi:id="A_classifier_representation-_ownedEnd.0" type="Classifier" association="A_classifier_representation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_representation-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_representation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_collaborationUse_classifier" name="A_collaborationUse_classifier" visibility="private" memberEnd="Classifier-collaborationUse A_collaborationUse_classifier-_ownedEnd.0">
<ownedEnd xmi:id="A_collaborationUse_classifier-_ownedEnd.0" type="Classifier" association="A_collaborationUse_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_collaborationUse_classifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_collaborationUse_classifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_collaborationRole_collaboration" name="A_collaborationRole_collaboration" visibility="private" memberEnd="Collaboration-collaborationRole A_collaborationRole_collaboration-_ownedEnd.0">
<ownedEnd xmi:id="A_collaborationRole_collaboration-_ownedEnd.0" type="Collaboration" association="A_collaborationRole_collaboration">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_collaborationRole_collaboration-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_collaborationRole_collaboration-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ControlNode" name="ControlNode" isAbstract="true">
<ownedComment xmi:id="ControlNode-_ownedComment.0" annotatedElement="ControlNode">
<body>A control node is an abstract activity node that coordinates flows in an activity.</body>
</ownedComment>
<generalization xmi:id="ControlNode-_generalization.0" general="ActivityNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ControlFlow" name="ControlFlow">
<ownedComment xmi:id="ControlFlow-_ownedComment.0" annotatedElement="ControlFlow">
<body>A control flow is an edge that starts an activity node after the previous one is finished.</body>
</ownedComment>
<ownedRule xmi:id="ControlFlow-object_nodes" name="object_nodes" constrainedElement="ControlFlow">
<ownedComment xmi:id="ControlFlow-object_nodes-_ownedComment.0" annotatedElement="ControlFlow-object_nodes">
<body>Control flows may not have object nodes at either end, except for object nodes with control type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ControlFlow-object_nodes-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ControlFlow-_generalization.0" general="ActivityEdge"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InitialNode" name="InitialNode">
<ownedComment xmi:id="InitialNode-_ownedComment.0" annotatedElement="InitialNode">
<body>An initial node is a control node at which flow starts when the activity is invoked.</body>
</ownedComment>
<ownedRule xmi:id="InitialNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="InitialNode">
<ownedComment xmi:id="InitialNode-no_incoming_edges-_ownedComment.0" annotatedElement="InitialNode-no_incoming_edges">
<body>An initial node has no incoming edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-no_incoming_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InitialNode-control_edges" name="control_edges" constrainedElement="InitialNode">
<ownedComment xmi:id="InitialNode-control_edges-_ownedComment.0" annotatedElement="InitialNode-control_edges">
<body>Only control edges can have initial nodes as source.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-control_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InitialNode-_generalization.0" general="ControlNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ActivityParameterNode" name="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-_ownedComment.0" annotatedElement="ActivityParameterNode">
<body>An activity parameter node is an object node for inputs and outputs to activities.</body>
</ownedComment>
<ownedRule xmi:id="ActivityParameterNode-has_parameters" name="has_parameters" constrainedElement="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-has_parameters-_ownedComment.0" annotatedElement="ActivityParameterNode-has_parameters">
<body>Activity parameter nodes must have parameters from the containing activity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-has_parameters-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityParameterNode-same_type" name="same_type" constrainedElement="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-same_type-_ownedComment.0" annotatedElement="ActivityParameterNode-same_type">
<body>The type of an activity parameter node is the same as the type of its parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-same_type-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityParameterNode-no_edges" name="no_edges" constrainedElement="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-no_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_edges">
<body>An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityParameterNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-no_incoming_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_incoming_edges">
<body>Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_incoming_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityParameterNode-no_outgoing_edges" name="no_outgoing_edges" constrainedElement="ActivityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-no_outgoing_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_outgoing_edges">
<body>Activity parameter object nodes with no outgoing edges and one or more incoming edges must have a parameter with out, inout, or return direction.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_outgoing_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ActivityParameterNode-_generalization.0" general="ObjectNode"/>
<ownedAttribute xmi:id="ActivityParameterNode-parameter" name="parameter" type="Parameter" association="A_parameter_activityParameterNode">
<ownedComment xmi:id="ActivityParameterNode-parameter-_ownedComment.0" annotatedElement="ActivityParameterNode-parameter">
<body>The parameter the object node will be accepting or providing values for.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityParameterNode-parameter-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityParameterNode-parameter-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ValuePin" name="ValuePin">
<ownedComment xmi:id="ValuePin-_ownedComment.0" annotatedElement="ValuePin">
<body>A value pin is an input pin that provides a value by evaluating a value specification.</body>
</ownedComment>
<ownedRule xmi:id="ValuePin-compatible_type" name="compatible_type" constrainedElement="ValuePin">
<ownedComment xmi:id="ValuePin-compatible_type-_ownedComment.0" annotatedElement="ValuePin-compatible_type">
<body>The type of value specification must be compatible with the type of the value pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-compatible_type-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ValuePin-no_incoming_edges" name="no_incoming_edges" constrainedElement="ValuePin">
<ownedComment xmi:id="ValuePin-no_incoming_edges-_ownedComment.0" annotatedElement="ValuePin-no_incoming_edges">
<body>Value pins have no incoming edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-no_incoming_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ValuePin-_generalization.0" general="InputPin"/>
<ownedAttribute xmi:id="ValuePin-value" name="value" type="ValueSpecification" aggregation="composite" association="A_value_valuePin">
<ownedComment xmi:id="ValuePin-value-_ownedComment.0" annotatedElement="ValuePin-value">
<body>Value that the pin will provide.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ValuePin-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValuePin-value-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_activity_edge" name="A_activity_edge" visibility="private" memberEnd="ActivityEdge-activity Activity-edge"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_outgoing_source" name="A_outgoing_source" visibility="private" memberEnd="ActivityNode-outgoing ActivityEdge-source"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_incoming" name="A_target_incoming" visibility="private" memberEnd="ActivityEdge-target ActivityNode-incoming"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_parameter_activityParameterNode" name="A_parameter_activityParameterNode" visibility="private" memberEnd="ActivityParameterNode-parameter A_parameter_activityParameterNode-_ownedEnd.0">
<ownedEnd xmi:id="A_parameter_activityParameterNode-_ownedEnd.0" type="ActivityParameterNode" association="A_parameter_activityParameterNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_parameter_activityParameterNode-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_parameter_activityParameterNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedNode_activityNode" name="A_redefinedNode_activityNode" visibility="private" memberEnd="ActivityNode-redefinedNode A_redefinedNode_activityNode-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedNode_activityNode-_ownedEnd.0" type="ActivityNode" association="A_redefinedNode_activityNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedNode_activityNode-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedNode_activityNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedEdge_activityEdge" name="A_redefinedEdge_activityEdge" visibility="private" memberEnd="ActivityEdge-redefinedEdge A_redefinedEdge_activityEdge-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedEdge_activityEdge-_ownedEnd.0" type="ActivityEdge" association="A_redefinedEdge_activityEdge">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedEdge_activityEdge-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedEdge_activityEdge-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Message" name="Message">
<ownedComment xmi:id="Message-_ownedComment.0" annotatedElement="Message">
<body>A message defines a particular communication between lifelines of an interaction.</body>
</ownedComment>
<ownedRule xmi:id="Message-sending_receiving_message_event" name="sending_receiving_message_event" constrainedElement="Message">
<ownedComment xmi:id="Message-sending_receiving_message_event-_ownedComment.0" annotatedElement="Message-sending_receiving_message_event">
<body>If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-sending_receiving_message_event-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-signature_refer_to" name="signature_refer_to" constrainedElement="Message">
<ownedComment xmi:id="Message-signature_refer_to-_ownedComment.0" annotatedElement="Message-signature_refer_to">
<body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_refer_to-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-signature_is_operation" name="signature_is_operation" constrainedElement="Message">
<ownedComment xmi:id="Message-signature_is_operation-_ownedComment.0" annotatedElement="Message-signature_is_operation">
<body>In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_operation-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-signature_is_signal" name="signature_is_signal" constrainedElement="Message">
<ownedComment xmi:id="Message-signature_is_signal-_ownedComment.0" annotatedElement="Message-signature_is_signal">
<body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_signal-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-arguments" name="arguments" constrainedElement="Message">
<ownedComment xmi:id="Message-arguments-_ownedComment.0" annotatedElement="Message-arguments">
<body>Arguments of a Message must only be:
i) attributes of the sending lifeline
ii) constants
iii) symbolic values (which are wildcard values representing any legal value)
iv) explicit parameters of the enclosing Interaction
v) attributes of the class owning the Interaction
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-arguments-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-cannot_cross_boundaries" name="cannot_cross_boundaries" constrainedElement="Message">
<ownedComment xmi:id="Message-cannot_cross_boundaries-_ownedComment.0" annotatedElement="Message-cannot_cross_boundaries">
<body>Messages cannot cross bounderies of CombinedFragments or their operands.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-cannot_cross_boundaries-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Message-occurrence_specifications" name="occurrence_specifications" constrainedElement="Message">
<ownedComment xmi:id="Message-occurrence_specifications-_ownedComment.0" annotatedElement="Message-occurrence_specifications">
<body>If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Message-occurrence_specifications-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Message-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="Message-messageKind" name="messageKind" type="MessageKind" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="Message-messageKind-_ownedComment.0" annotatedElement="Message-messageKind">
<body>The derived kind of the Message (complete, lost, found or unknown)</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageKind-_defaultValue" type="MessageKind" instance="MessageKind-unknown"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-messageSort" name="messageSort" type="MessageSort">
<ownedComment xmi:id="Message-messageSort-_ownedComment.0" annotatedElement="Message-messageSort">
<body>The sort of communication reflected by the Message</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageSort-_defaultValue" type="MessageSort" instance="MessageSort-synchCall"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-receiveEvent" name="receiveEvent" type="MessageEnd" association="A_receiveEvent_message">
<ownedComment xmi:id="Message-receiveEvent-_ownedComment.0" annotatedElement="Message-receiveEvent">
<body>References the Receiving of the Message</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-receiveEvent-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-receiveEvent-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-sendEvent" name="sendEvent" type="MessageEnd" association="A_sendEvent_message">
<ownedComment xmi:id="Message-sendEvent-_ownedComment.0" annotatedElement="Message-sendEvent">
<body>References the Sending of the Message.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-sendEvent-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-sendEvent-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-connector" name="connector" type="Connector" association="A_connector_message">
<ownedComment xmi:id="Message-connector-_ownedComment.0" annotatedElement="Message-connector">
<body>The Connector on which this Message is sent.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-connector-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-connector-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-interaction" name="interaction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_message_interaction">
<ownedComment xmi:id="Message-interaction-_ownedComment.0" annotatedElement="Message-interaction">
<body>The enclosing Interaction owning the Message</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-interaction-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-interaction-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-argument" name="argument" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_argument_message">
<ownedComment xmi:id="Message-argument-_ownedComment.0" annotatedElement="Message-argument">
<body>The arguments of the Message</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-argument-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-argument-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Message-signature" name="signature" type="NamedElement" isReadOnly="true" isDerived="true" association="A_signature_message">
<ownedComment xmi:id="Message-signature-_ownedComment.0" annotatedElement="Message-signature">
<body>The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-signature-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-signature-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Message-getMessageKind" name="getMessageKind" visibility="protected" isQuery="true">
<ownedParameter xmi:id="Message-getMessageKind-_ownedParameter.0" type="MessageKind" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Message-getSignature" name="getSignature" visibility="protected" isQuery="true">
<ownedParameter xmi:id="Message-getSignature-_ownedParameter.0" type="NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-getSignature-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-getSignature-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="GeneralOrdering" name="GeneralOrdering">
<ownedComment xmi:id="GeneralOrdering-_ownedComment.0" annotatedElement="GeneralOrdering">
<body>A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order.</body>
</ownedComment>
<generalization xmi:id="GeneralOrdering-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="GeneralOrdering-before" name="before" type="OccurrenceSpecification" association="A_before_toAfter">
<ownedComment xmi:id="GeneralOrdering-before-_ownedComment.0" annotatedElement="GeneralOrdering-before">
<body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="GeneralOrdering-before-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralOrdering-before-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="GeneralOrdering-after" name="after" type="OccurrenceSpecification" association="A_toBefore_after">
<ownedComment xmi:id="GeneralOrdering-after-_ownedComment.0" annotatedElement="GeneralOrdering-after">
<body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="GeneralOrdering-after-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralOrdering-after-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExecutionSpecification" name="ExecutionSpecification" isAbstract="true">
<ownedComment xmi:id="ExecutionSpecification-_ownedComment.0" annotatedElement="ExecutionSpecification">
<body>An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification.</body>
</ownedComment>
<ownedRule xmi:id="ExecutionSpecification-same_lifeline" name="same_lifeline" constrainedElement="ExecutionSpecification">
<ownedComment xmi:id="ExecutionSpecification-same_lifeline-_ownedComment.0" annotatedElement="ExecutionSpecification-same_lifeline">
<body>The startEvent and the finishEvent must be on the same Lifeline</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ExecutionSpecification-same_lifeline-_specification">
<language>OCL</language>
<body>start.lifeline = finish.lifeline</body>
</specification>
</ownedRule>
<generalization xmi:id="ExecutionSpecification-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="ExecutionSpecification-start" name="start" type="OccurrenceSpecification" association="A_executionSpecification_start">
<ownedComment xmi:id="ExecutionSpecification-start-_ownedComment.0" annotatedElement="ExecutionSpecification-start">
<body>References the OccurrenceSpecification that designates the start of the Action or Behavior</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExecutionSpecification-start-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExecutionSpecification-start-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ExecutionSpecification-finish" name="finish" type="OccurrenceSpecification" association="A_executionSpecification_finish">
<ownedComment xmi:id="ExecutionSpecification-finish-_ownedComment.0" annotatedElement="ExecutionSpecification-finish">
<body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExecutionSpecification-finish-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExecutionSpecification-finish-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="OccurrenceSpecification" name="OccurrenceSpecification">
<ownedComment xmi:id="OccurrenceSpecification-_ownedComment.0" annotatedElement="OccurrenceSpecification">
<body>An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions.</body>
</ownedComment>
<generalization xmi:id="OccurrenceSpecification-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="OccurrenceSpecification-covered" name="covered" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_events_covered">
<ownedComment xmi:id="OccurrenceSpecification-covered-_ownedComment.0" annotatedElement="OccurrenceSpecification-covered">
<body>References the Lifeline on which the OccurrenceSpecification appears.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-covered-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-covered-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="OccurrenceSpecification-toAfter" name="toAfter" type="GeneralOrdering" association="A_before_toAfter">
<ownedComment xmi:id="OccurrenceSpecification-toAfter-_ownedComment.0" annotatedElement="OccurrenceSpecification-toAfter">
<body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toAfter-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toAfter-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OccurrenceSpecification-toBefore" name="toBefore" type="GeneralOrdering" association="A_toBefore_after">
<ownedComment xmi:id="OccurrenceSpecification-toBefore-_ownedComment.0" annotatedElement="OccurrenceSpecification-toBefore">
<body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toBefore-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toBefore-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="OccurrenceSpecification-event" name="event" type="Event" association="A_event_occurrenceSpecification">
<ownedComment xmi:id="OccurrenceSpecification-event-_ownedComment.0" annotatedElement="OccurrenceSpecification-event">
<body>References a specification of the occurring event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-event-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-event-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="MessageEnd" name="MessageEnd" isAbstract="true">
<ownedComment xmi:id="MessageEnd-_ownedComment.0" annotatedElement="MessageEnd">
<body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message.</body>
</ownedComment>
<generalization xmi:id="MessageEnd-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="MessageEnd-message" name="message" type="Message" association="A_message_messageEnd">
<ownedComment xmi:id="MessageEnd-message-_ownedComment.0" annotatedElement="MessageEnd-message">
<body>References a Message.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MessageEnd-message-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="MessageEnd-message-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StateInvariant" name="StateInvariant">
<ownedComment xmi:id="StateInvariant-_ownedComment.0" annotatedElement="StateInvariant">
<body>A state invariant 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 state invariant is an interaction fragment and it is placed on a lifeline.</body>
</ownedComment>
<generalization xmi:id="StateInvariant-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="StateInvariant-invariant" name="invariant" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_invariant_stateInvariant">
<ownedComment xmi:id="StateInvariant-invariant-_ownedComment.0" annotatedElement="StateInvariant-invariant">
<body>A Constraint that should hold at runtime for this StateInvariant</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateInvariant-invariant-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateInvariant-invariant-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="StateInvariant-covered" name="covered" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_stateInvariant_covered">
<ownedComment xmi:id="StateInvariant-covered-_ownedComment.0" annotatedElement="StateInvariant-covered">
<body>References the Lifeline on which the StateInvariant appears.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateInvariant-covered-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateInvariant-covered-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ActionExecutionSpecification" name="ActionExecutionSpecification">
<ownedComment xmi:id="ActionExecutionSpecification-_ownedComment.0" annotatedElement="ActionExecutionSpecification">
<body>An action execution specification is a kind of execution specification representing the execution of an action.</body>
</ownedComment>
<ownedRule xmi:id="ActionExecutionSpecification-action_referenced" name="action_referenced" constrainedElement="ActionExecutionSpecification">
<ownedComment xmi:id="ActionExecutionSpecification-action_referenced-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action_referenced">
<body>The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActionExecutionSpecification-action_referenced-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ActionExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
<ownedAttribute xmi:id="ActionExecutionSpecification-action" name="action" type="Action" association="A_action_actionExecutionSpecification">
<ownedComment xmi:id="ActionExecutionSpecification-action-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action">
<body>Action whose execution is occurring.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActionExecutionSpecification-action-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActionExecutionSpecification-action-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="BehaviorExecutionSpecification" name="BehaviorExecutionSpecification">
<ownedComment xmi:id="BehaviorExecutionSpecification-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification">
<body>A behavior execution specification is a kind of execution specification representing the execution of a behavior.</body>
</ownedComment>
<generalization xmi:id="BehaviorExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
<ownedAttribute xmi:id="BehaviorExecutionSpecification-behavior" name="behavior" type="Behavior" association="A_behavior_behaviorExecutionSpecification">
<ownedComment xmi:id="BehaviorExecutionSpecification-behavior-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification-behavior">
<body>Behavior whose execution is occurring.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehaviorExecutionSpecification-behavior-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehaviorExecutionSpecification-behavior-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExecutionEvent" name="ExecutionEvent">
<ownedComment xmi:id="ExecutionEvent-_ownedComment.0" annotatedElement="ExecutionEvent">
<body>An execution event models the start or finish of an execution occurrence.</body>
</ownedComment>
<generalization xmi:id="ExecutionEvent-_generalization.0" general="Event"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CreationEvent" name="CreationEvent">
<ownedComment xmi:id="CreationEvent-_ownedComment.0" annotatedElement="CreationEvent">
<body>A creation event models the creation of an object.</body>
</ownedComment>
<ownedRule xmi:id="CreationEvent-no_occurrence_above" name="no_occurrence_above" constrainedElement="CreationEvent">
<ownedComment xmi:id="CreationEvent-no_occurrence_above-_ownedComment.0" annotatedElement="CreationEvent-no_occurrence_above">
<body>No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreationEvent-no_occurrence_above-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="CreationEvent-_generalization.0" general="Event"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DestructionEvent" name="DestructionEvent">
<ownedComment xmi:id="DestructionEvent-_ownedComment.0" annotatedElement="DestructionEvent">
<body>A destruction event models the destruction of an object.</body>
</ownedComment>
<ownedRule xmi:id="DestructionEvent-no_occurrence_specifications_below" name="no_occurrence_specifications_below" constrainedElement="DestructionEvent">
<ownedComment xmi:id="DestructionEvent-no_occurrence_specifications_below-_ownedComment.0" annotatedElement="DestructionEvent-no_occurrence_specifications_below">
<body>No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DestructionEvent-no_occurrence_specifications_below-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="DestructionEvent-_generalization.0" general="Event"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="SendOperationEvent" name="SendOperationEvent">
<ownedComment xmi:id="SendOperationEvent-_ownedComment.0" annotatedElement="SendOperationEvent">
<body>A send operation event models the invocation of an operation call.</body>
</ownedComment>
<generalization xmi:id="SendOperationEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="SendOperationEvent-operation" name="operation" type="Operation" association="A_operation_sendOperationEvent">
<ownedComment xmi:id="SendOperationEvent-operation-_ownedComment.0" annotatedElement="SendOperationEvent-operation">
<body>The operation associated with this event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendOperationEvent-operation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendOperationEvent-operation-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="SendSignalEvent" name="SendSignalEvent">
<ownedComment xmi:id="SendSignalEvent-_ownedComment.0" annotatedElement="SendSignalEvent">
<body>A send signal event models the sending of a signal.</body>
</ownedComment>
<generalization xmi:id="SendSignalEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="SendSignalEvent-signal" name="signal" type="Signal" association="A_signal_sendSignalEvent">
<ownedComment xmi:id="SendSignalEvent-signal-_ownedComment.0" annotatedElement="SendSignalEvent-signal">
<body>The signal associated with this event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendSignalEvent-signal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendSignalEvent-signal-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="MessageOccurrenceSpecification" name="MessageOccurrenceSpecification">
<ownedComment xmi:id="MessageOccurrenceSpecification-_ownedComment.0" annotatedElement="MessageOccurrenceSpecification">
<body>A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions.</body>
</ownedComment>
<generalization xmi:id="MessageOccurrenceSpecification-_generalization.0" general="MessageEnd"/>
<generalization xmi:id="MessageOccurrenceSpecification-_generalization.1" general="OccurrenceSpecification"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExecutionOccurrenceSpecification" name="ExecutionOccurrenceSpecification">
<ownedComment xmi:id="ExecutionOccurrenceSpecification-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification">
<body>An execution occurrence specification represents moments in time at which actions or behaviors start or finish.</body>
</ownedComment>
<generalization xmi:id="ExecutionOccurrenceSpecification-_generalization.0" general="OccurrenceSpecification"/>
<ownedAttribute xmi:id="ExecutionOccurrenceSpecification-execution" name="execution" type="ExecutionSpecification" association="A_execution_executionOccurrenceSpecification">
<ownedComment xmi:id="ExecutionOccurrenceSpecification-execution-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification-execution">
<body>References the execution specification describing the execution that is started or finished at this execution event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExecutionOccurrenceSpecification-execution-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExecutionOccurrenceSpecification-execution-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ExecutionOccurrenceSpecification-event" name="event" type="ExecutionEvent" redefinedProperty="OccurrenceSpecification-event" association="A_event_executionOccurrenceSpecification">
<ownedComment xmi:id="ExecutionOccurrenceSpecification-event-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification-event">
<body>The event referenced is restricted to an execution event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExecutionOccurrenceSpecification-event-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExecutionOccurrenceSpecification-event-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReceiveOperationEvent" name="ReceiveOperationEvent">
<ownedComment xmi:id="ReceiveOperationEvent-_ownedComment.0" annotatedElement="ReceiveOperationEvent">
<body>A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity.</body>
</ownedComment>
<generalization xmi:id="ReceiveOperationEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="ReceiveOperationEvent-operation" name="operation" type="Operation" association="A_operation_receiveOperationEvent">
<ownedComment xmi:id="ReceiveOperationEvent-operation-_ownedComment.0" annotatedElement="ReceiveOperationEvent-operation">
<body>The operation associated with this event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReceiveOperationEvent-operation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReceiveOperationEvent-operation-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReceiveSignalEvent" name="ReceiveSignalEvent">
<ownedComment xmi:id="ReceiveSignalEvent-_ownedComment.0" annotatedElement="ReceiveSignalEvent">
<body>A receive signal event specifies the event of receiving a signal by the target entity.</body>
</ownedComment>
<generalization xmi:id="ReceiveSignalEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="ReceiveSignalEvent-signal" name="signal" type="Signal" association="A_signal_receiveSignalEvent">
<ownedComment xmi:id="ReceiveSignalEvent-signal-_ownedComment.0" annotatedElement="ReceiveSignalEvent-signal">
<body>The signal associated with this event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReceiveSignalEvent-signal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReceiveSignalEvent-signal-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="MessageKind" name="MessageKind" visibility="private">
<ownedComment xmi:id="MessageKind-_ownedComment.0" annotatedElement="MessageKind">
<body>This is an enumerated type that identifies the type of message.</body>
</ownedComment>
<ownedLiteral xmi:id="MessageKind-complete" name="complete">
<ownedComment xmi:id="MessageKind-complete-_ownedComment.0" annotatedElement="MessageKind-complete">
<body>sendEvent and receiveEvent are present</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageKind-lost" name="lost">
<ownedComment xmi:id="MessageKind-lost-_ownedComment.0" annotatedElement="MessageKind-lost">
<body>sendEvent present and receiveEvent absent</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageKind-found" name="found">
<ownedComment xmi:id="MessageKind-found-_ownedComment.0" annotatedElement="MessageKind-found">
<body>sendEvent absent and receiveEvent present</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageKind-unknown" name="unknown">
<ownedComment xmi:id="MessageKind-unknown-_ownedComment.0" annotatedElement="MessageKind-unknown">
<body>sendEvent and receiveEvent absent (should not appear)</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="MessageSort" name="MessageSort" visibility="private">
<ownedComment xmi:id="MessageSort-_ownedComment.0" annotatedElement="MessageSort">
<body>This is an enumerated type that identifies the type of communication action that was used to generate the message.</body>
</ownedComment>
<ownedLiteral xmi:id="MessageSort-synchCall" name="synchCall">
<ownedComment xmi:id="MessageSort-synchCall-_ownedComment.0" annotatedElement="MessageSort-synchCall">
<body>The message was generated by a synchronous call to an operation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageSort-asynchCall" name="asynchCall">
<ownedComment xmi:id="MessageSort-asynchCall-_ownedComment.0" annotatedElement="MessageSort-asynchCall">
<body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous&#xD;
= false.&#xD;
</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageSort-asynchSignal" name="asynchSignal">
<ownedComment xmi:id="MessageSort-asynchSignal-_ownedComment.0" annotatedElement="MessageSort-asynchSignal">
<body>The message was generated by an asynchronous send action.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageSort-createMessage" name="createMessage">
<ownedComment xmi:id="MessageSort-createMessage-_ownedComment.0" annotatedElement="MessageSort-createMessage">
<body>The message designating the creation of another lifeline object.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageSort-deleteMessage" name="deleteMessage">
<ownedComment xmi:id="MessageSort-deleteMessage-_ownedComment.0" annotatedElement="MessageSort-deleteMessage">
<body>The message designating the termination of another lifeline.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="MessageSort-reply" name="reply">
<ownedComment xmi:id="MessageSort-reply-_ownedComment.0" annotatedElement="MessageSort-reply">
<body>The message is a reply message to an operation call.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_covered_coveredBy" name="A_covered_coveredBy" visibility="private" memberEnd="InteractionFragment-covered Lifeline-coveredBy">
<ownedComment xmi:id="A_covered_coveredBy-_ownedComment.0" annotatedElement="A_covered_coveredBy">
<body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_executionSpecification_start" name="A_executionSpecification_start" visibility="private" memberEnd="A_executionSpecification_start-_ownedEnd.0 ExecutionSpecification-start">
<ownedComment xmi:id="A_executionSpecification_start-_ownedComment.0" annotatedElement="A_executionSpecification_start">
<body>The event shows the time point at which the action begins execution.</body>
</ownedComment>
<ownedEnd xmi:id="A_executionSpecification_start-_ownedEnd.0" type="ExecutionSpecification" association="A_executionSpecification_start">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_executionSpecification_start-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_executionSpecification_start-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_executionSpecification_finish" name="A_executionSpecification_finish" visibility="private" memberEnd="A_executionSpecification_finish-_ownedEnd.0 ExecutionSpecification-finish">
<ownedComment xmi:id="A_executionSpecification_finish-_ownedComment.0" annotatedElement="A_executionSpecification_finish">
<body>The event shows the time point at which the action completes execution.</body>
</ownedComment>
<ownedEnd xmi:id="A_executionSpecification_finish-_ownedEnd.0" type="ExecutionSpecification" association="A_executionSpecification_finish">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_executionSpecification_finish-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_executionSpecification_finish-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_lifeline_represents" name="A_lifeline_represents" visibility="private" memberEnd="A_lifeline_represents-_ownedEnd.0 Lifeline-represents">
<ownedComment xmi:id="A_lifeline_represents-_ownedComment.0" annotatedElement="A_lifeline_represents">
<body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
</ownedComment>
<ownedEnd xmi:id="A_lifeline_represents-_ownedEnd.0" type="Lifeline" association="A_lifeline_represents">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_lifeline_represents-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_lifeline_represents-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_lifeline_interaction" name="A_lifeline_interaction" visibility="private" memberEnd="Interaction-lifeline Lifeline-interaction"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_receiveEvent_message" name="A_receiveEvent_message" visibility="private" memberEnd="Message-receiveEvent A_receiveEvent_message-_ownedEnd.0">
<ownedEnd xmi:id="A_receiveEvent_message-_ownedEnd.0" type="Message" association="A_receiveEvent_message">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_receiveEvent_message-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_receiveEvent_message-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_sendEvent_message" name="A_sendEvent_message" visibility="private" memberEnd="Message-sendEvent A_sendEvent_message-_ownedEnd.0">
<ownedEnd xmi:id="A_sendEvent_message-_ownedEnd.0" type="Message" association="A_sendEvent_message">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_sendEvent_message-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_sendEvent_message-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_events_covered" name="A_events_covered" visibility="private" memberEnd="A_events_covered-events OccurrenceSpecification-covered">
<ownedEnd xmi:id="A_events_covered-events" name="events" type="OccurrenceSpecification" isOrdered="true" association="A_events_covered">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_events_covered-events-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_events_covered-events-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_selector_lifeline" name="A_selector_lifeline" visibility="private" memberEnd="Lifeline-selector A_selector_lifeline-_ownedEnd.0">
<ownedEnd xmi:id="A_selector_lifeline-_ownedEnd.0" type="Lifeline" association="A_selector_lifeline">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_selector_lifeline-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_selector_lifeline-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_connector_message" name="A_connector_message" visibility="private" memberEnd="Message-connector A_connector_message-_ownedEnd.0">
<ownedEnd xmi:id="A_connector_message-_ownedEnd.0" type="Message" association="A_connector_message">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_connector_message-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_connector_message-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_message_interaction" name="A_message_interaction" visibility="private" memberEnd="Interaction-message Message-interaction"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_before_toAfter" name="A_before_toAfter" visibility="private" memberEnd="GeneralOrdering-before OccurrenceSpecification-toAfter"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_toBefore_after" name="A_toBefore_after" visibility="private" memberEnd="OccurrenceSpecification-toBefore GeneralOrdering-after"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_argument_message" name="A_argument_message" visibility="private" memberEnd="Message-argument A_argument_message-_ownedEnd.0">
<ownedEnd xmi:id="A_argument_message-_ownedEnd.0" type="Message" association="A_argument_message">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_argument_message-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_message-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_invariant_stateInvariant" name="A_invariant_stateInvariant" visibility="private" memberEnd="StateInvariant-invariant A_invariant_stateInvariant-_ownedEnd.0">
<ownedEnd xmi:id="A_invariant_stateInvariant-_ownedEnd.0" type="StateInvariant" association="A_invariant_stateInvariant">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_invariant_stateInvariant-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_invariant_stateInvariant-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_stateInvariant_covered" name="A_stateInvariant_covered" visibility="private" memberEnd="A_stateInvariant_covered-stateInvariant StateInvariant-covered">
<ownedEnd xmi:id="A_stateInvariant_covered-stateInvariant" name="stateInvariant" type="StateInvariant" association="A_stateInvariant_covered">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_stateInvariant_covered-stateInvariant-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_stateInvariant_covered-stateInvariant-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_generalOrdering_interactionFragment" name="A_generalOrdering_interactionFragment" visibility="private" memberEnd="InteractionFragment-generalOrdering A_generalOrdering_interactionFragment-_ownedEnd.0">
<ownedEnd xmi:id="A_generalOrdering_interactionFragment-_ownedEnd.0" type="InteractionFragment" association="A_generalOrdering_interactionFragment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_generalOrdering_interactionFragment-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_generalOrdering_interactionFragment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_enclosingInteraction_fragment" name="A_enclosingInteraction_fragment" visibility="private" memberEnd="InteractionFragment-enclosingInteraction Interaction-fragment"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_behavior_behaviorExecutionSpecification" name="A_behavior_behaviorExecutionSpecification" visibility="private" memberEnd="BehaviorExecutionSpecification-behavior A_behavior_behaviorExecutionSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_behavior_behaviorExecutionSpecification-_ownedEnd.0" type="BehaviorExecutionSpecification" association="A_behavior_behaviorExecutionSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_behaviorExecutionSpecification-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_behaviorExecutionSpecification-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_action_actionExecutionSpecification" name="A_action_actionExecutionSpecification" visibility="private" memberEnd="ActionExecutionSpecification-action A_action_actionExecutionSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_action_actionExecutionSpecification-_ownedEnd.0" type="ActionExecutionSpecification" association="A_action_actionExecutionSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_actionExecutionSpecification-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_actionExecutionSpecification-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signature_message" name="A_signature_message" visibility="private" memberEnd="Message-signature A_signature_message-_ownedEnd.0">
<ownedEnd xmi:id="A_signature_message-_ownedEnd.0" type="Message" association="A_signature_message">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signature_message-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signature_message-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_operation_sendOperationEvent" name="A_operation_sendOperationEvent" visibility="private" memberEnd="SendOperationEvent-operation A_operation_sendOperationEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_operation_sendOperationEvent-_ownedEnd.0" type="SendOperationEvent" association="A_operation_sendOperationEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_sendOperationEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_sendOperationEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signal_sendSignalEvent" name="A_signal_sendSignalEvent" visibility="private" memberEnd="SendSignalEvent-signal A_signal_sendSignalEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_signal_sendSignalEvent-_ownedEnd.0" type="SendSignalEvent" association="A_signal_sendSignalEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_sendSignalEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_sendSignalEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_message_messageEnd" name="A_message_messageEnd" visibility="private" memberEnd="MessageEnd-message A_message_messageEnd-_ownedEnd.0">
<ownedEnd xmi:id="A_message_messageEnd-_ownedEnd.0" type="MessageEnd" association="A_message_messageEnd">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_message_messageEnd-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_message_messageEnd-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_event_occurrenceSpecification" name="A_event_occurrenceSpecification" visibility="private" memberEnd="OccurrenceSpecification-event A_event_occurrenceSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_event_occurrenceSpecification-_ownedEnd.0" type="OccurrenceSpecification" association="A_event_occurrenceSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_occurrenceSpecification-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_occurrenceSpecification-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_action_interaction" name="A_action_interaction" visibility="private" memberEnd="Interaction-action A_action_interaction-_ownedEnd.0">
<ownedEnd xmi:id="A_action_interaction-_ownedEnd.0" type="Interaction" subsettedProperty="Element-owner" association="A_action_interaction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_interaction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_interaction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_execution_executionOccurrenceSpecification" name="A_execution_executionOccurrenceSpecification" visibility="private" memberEnd="ExecutionOccurrenceSpecification-execution A_execution_executionOccurrenceSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_execution_executionOccurrenceSpecification-_ownedEnd.0" type="ExecutionOccurrenceSpecification" association="A_execution_executionOccurrenceSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_execution_executionOccurrenceSpecification-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_execution_executionOccurrenceSpecification-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_event_executionOccurrenceSpecification" name="A_event_executionOccurrenceSpecification" visibility="private" memberEnd="ExecutionOccurrenceSpecification-event A_event_executionOccurrenceSpecification-_ownedEnd.0">
<ownedEnd xmi:id="A_event_executionOccurrenceSpecification-_ownedEnd.0" type="ExecutionOccurrenceSpecification" association="A_event_executionOccurrenceSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_executionOccurrenceSpecification-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_executionOccurrenceSpecification-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_operation_receiveOperationEvent" name="A_operation_receiveOperationEvent" visibility="private" memberEnd="ReceiveOperationEvent-operation A_operation_receiveOperationEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_operation_receiveOperationEvent-_ownedEnd.0" type="ReceiveOperationEvent" association="A_operation_receiveOperationEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_receiveOperationEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_receiveOperationEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signal_receiveSignalEvent" name="A_signal_receiveSignalEvent" visibility="private" memberEnd="ReceiveSignalEvent-signal A_signal_receiveSignalEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_signal_receiveSignalEvent-_ownedEnd.0" type="ReceiveSignalEvent" association="A_signal_receiveSignalEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_receiveSignalEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_receiveSignalEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Actor" name="Actor">
<ownedComment xmi:id="Actor-_ownedComment.0" annotatedElement="Actor">
<body>An actor specifies a role played by a user or any other system that interacts with the subject.</body>
</ownedComment>
<ownedRule xmi:id="Actor-associations" name="associations" constrainedElement="Actor">
<ownedComment xmi:id="Actor-associations-_ownedComment.0" annotatedElement="Actor-associations">
<body>An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-associations-_specification">
<language>OCL</language>
<body>self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Actor-must_have_name" name="must_have_name" constrainedElement="Actor">
<ownedComment xmi:id="Actor-must_have_name-_ownedComment.0" annotatedElement="Actor-must_have_name">
<body>An actor must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-must_have_name-_specification">
<language>OCL</language>
<body>name->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="Actor-_generalization.0" general="BehavioredClassifier"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Extend" name="Extend">
<ownedComment xmi:id="Extend-_ownedComment.0" annotatedElement="Extend">
<body>A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case.</body>
</ownedComment>
<ownedRule xmi:id="Extend-extension_points" name="extension_points" constrainedElement="Extend">
<ownedComment xmi:id="Extend-extension_points-_ownedComment.0" annotatedElement="Extend-extension_points">
<body>The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;
&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extend-extension_points-_specification">
<language>OCL</language>
<body>extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))</body>
</specification>
</ownedRule>
<generalization xmi:id="Extend-_generalization.0" general="DirectedRelationship"/>
<generalization xmi:id="Extend-_generalization.1" general="NamedElement"/>
<ownedAttribute xmi:id="Extend-extendedCase" name="extendedCase" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_extendedCase_extend">
<ownedComment xmi:id="Extend-extendedCase-_ownedComment.0" annotatedElement="Extend-extendedCase">
<body>References the use case that is being extended.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-extendedCase-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-extendedCase-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Extend-extension" name="extension" type="UseCase" subsettedProperty="DirectedRelationship-source" association="A_extension_extend">
<ownedComment xmi:id="Extend-extension-_ownedComment.0" annotatedElement="Extend-extension">
<body>References the use case that represents the extension and owns the extend relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-extension-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-extension-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Extend-condition" name="condition" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_condition_extend">
<ownedComment xmi:id="Extend-condition-_ownedComment.0" annotatedElement="Extend-condition">
<body>References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-condition-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-condition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Extend-extensionLocation" name="extensionLocation" type="ExtensionPoint" isOrdered="true" association="A_extensionLocation_extension">
<ownedComment xmi:id="Extend-extensionLocation-_ownedComment.0" annotatedElement="Extend-extensionLocation">
<body>An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case 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 use case has just a single behavior fragment, so that the list of extension points is trivial.)&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-extensionLocation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-extensionLocation-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Include" name="Include">
<ownedComment xmi:id="Include-_ownedComment.0" annotatedElement="Include">
<body>An include relationship defines that a use case contains the behavior defined in another use case.</body>
</ownedComment>
<generalization xmi:id="Include-_generalization.0" general="DirectedRelationship"/>
<generalization xmi:id="Include-_generalization.1" general="NamedElement"/>
<ownedAttribute xmi:id="Include-includingCase" name="includingCase" type="UseCase" subsettedProperty="DirectedRelationship-source" association="A_includingCase_include">
<ownedComment xmi:id="Include-includingCase-_ownedComment.0" annotatedElement="Include-includingCase">
<body>References the use case which will include the addition and owns the include relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Include-includingCase-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Include-includingCase-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Include-addition" name="addition" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_addition_include">
<ownedComment xmi:id="Include-addition-_ownedComment.0" annotatedElement="Include-addition">
<body>References the use case that is to be included.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Include-addition-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Include-addition-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="UseCase" name="UseCase">
<ownedComment xmi:id="UseCase-_ownedComment.0" annotatedElement="UseCase">
<body>A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system.</body>
</ownedComment>
<ownedRule xmi:id="UseCase-must_have_name" name="must_have_name" constrainedElement="UseCase">
<ownedComment xmi:id="UseCase-must_have_name-_ownedComment.0" annotatedElement="UseCase-must_have_name">
<body>A UseCase must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-must_have_name-_specification">
<language>OCL</language>
<body>self.name -> notEmpty ()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UseCase-binary_associations" name="binary_associations" constrainedElement="UseCase">
<ownedComment xmi:id="UseCase-binary_associations-_ownedComment.0" annotatedElement="UseCase-binary_associations">
<body>UseCases can only be involved in binary Associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-binary_associations-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UseCase-no_association_to_use_case" name="no_association_to_use_case" constrainedElement="UseCase">
<ownedComment xmi:id="UseCase-no_association_to_use_case-_ownedComment.0" annotatedElement="UseCase-no_association_to_use_case">
<body>UseCases can not have Associations to UseCases specifying the same subject.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-no_association_to_use_case-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UseCase-cannot_include_self" name="cannot_include_self" constrainedElement="UseCase">
<ownedComment xmi:id="UseCase-cannot_include_self-_ownedComment.0" annotatedElement="UseCase-cannot_include_self">
<body>A use case cannot include use cases that directly or indirectly include it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-cannot_include_self-_specification">
<language>OCL</language>
<body>not self.allIncludedUseCases()->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="UseCase-_generalization.0" general="BehavioredClassifier"/>
<ownedAttribute xmi:id="UseCase-include" name="include" type="Include" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_includingCase_include">
<ownedComment xmi:id="UseCase-include-_ownedComment.0" annotatedElement="UseCase-include">
<body>References the Include relationships owned by this use case.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-include-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-include-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="UseCase-extend" name="extend" type="Extend" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_extension_extend">
<ownedComment xmi:id="UseCase-extend-_ownedComment.0" annotatedElement="UseCase-extend">
<body>References the Extend relationships owned by this use case.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extend-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extend-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="UseCase-extensionPoint" name="extensionPoint" type="ExtensionPoint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_extensionPoint_useCase">
<ownedComment xmi:id="UseCase-extensionPoint-_ownedComment.0" annotatedElement="UseCase-extensionPoint">
<body>References the ExtensionPoints owned by the use case.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extensionPoint-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extensionPoint-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="UseCase-subject" name="subject" type="Classifier" association="A_subject_useCase">
<ownedComment xmi:id="UseCase-subject-_ownedComment.0" annotatedElement="UseCase-subject">
<body>References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-subject-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-subject-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="UseCase-allIncludedUseCases" name="allIncludedUseCases" isQuery="true" bodyCondition="UseCase-allIncludedUseCases-spec">
<ownedComment xmi:id="UseCase-allIncludedUseCases-_ownedComment.0" annotatedElement="UseCase-allIncludedUseCases">
<body>The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.</body>
</ownedComment>
<ownedRule xmi:id="UseCase-allIncludedUseCases-spec" name="spec" constrainedElement="UseCase-allIncludedUseCases">
<specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-allIncludedUseCases-spec-_specification">
<language>OCL</language>
<body>result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="UseCase-allIncludedUseCases-_ownedParameter.0" type="UseCase" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-allIncludedUseCases-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-allIncludedUseCases-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExtensionPoint" name="ExtensionPoint">
<ownedComment xmi:id="ExtensionPoint-_ownedComment.0" annotatedElement="ExtensionPoint">
<body>An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship.</body>
</ownedComment>
<ownedRule xmi:id="ExtensionPoint-must_have_name" name="must_have_name" constrainedElement="ExtensionPoint">
<ownedComment xmi:id="ExtensionPoint-must_have_name-_ownedComment.0" annotatedElement="ExtensionPoint-must_have_name">
<body>An ExtensionPoint must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionPoint-must_have_name-_specification">
<language>OCL</language>
<body>self.name->notEmpty ()</body>
</specification>
</ownedRule>
<generalization xmi:id="ExtensionPoint-_generalization.0" general="RedefinableElement"/>
<ownedAttribute xmi:id="ExtensionPoint-useCase" name="useCase" type="UseCase" association="A_extensionPoint_useCase">
<ownedComment xmi:id="ExtensionPoint-useCase-_ownedComment.0" annotatedElement="ExtensionPoint-useCase">
<body>References the use case that owns this extension point.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExtensionPoint-useCase-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionPoint-useCase-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_includingCase_include" name="A_includingCase_include" visibility="private" memberEnd="Include-includingCase UseCase-include"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_addition_include" name="A_addition_include" visibility="private" memberEnd="Include-addition A_addition_include-_ownedEnd.0">
<ownedEnd xmi:id="A_addition_include-_ownedEnd.0" type="Include" association="A_addition_include">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_addition_include-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_addition_include-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_extendedCase_extend" name="A_extendedCase_extend" visibility="private" memberEnd="Extend-extendedCase A_extendedCase_extend-_ownedEnd.0">
<ownedEnd xmi:id="A_extendedCase_extend-_ownedEnd.0" type="Extend" association="A_extendedCase_extend">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedCase_extend-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedCase_extend-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_extension_extend" name="A_extension_extend" visibility="private" memberEnd="Extend-extension UseCase-extend"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_extensionPoint_useCase" name="A_extensionPoint_useCase" visibility="private" memberEnd="UseCase-extensionPoint ExtensionPoint-useCase"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_condition_extend" name="A_condition_extend" visibility="private" memberEnd="Extend-condition A_condition_extend-_ownedEnd.0">
<ownedEnd xmi:id="A_condition_extend-_ownedEnd.0" type="Extend" association="A_condition_extend">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_condition_extend-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_condition_extend-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_extensionLocation_extension" name="A_extensionLocation_extension" visibility="private" memberEnd="Extend-extensionLocation A_extensionLocation_extension-extension">
<ownedEnd xmi:id="A_extensionLocation_extension-extension" name="extension" type="Extend" association="A_extensionLocation_extension">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extensionLocation_extension-extension-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extensionLocation_extension-extension-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedUseCase_classifier" name="A_ownedUseCase_classifier" visibility="private" memberEnd="Classifier-ownedUseCase A_ownedUseCase_classifier-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedUseCase_classifier-_ownedEnd.0" type="Classifier" association="A_ownedUseCase_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedUseCase_classifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedUseCase_classifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_subject_useCase" name="A_subject_useCase" visibility="private" memberEnd="UseCase-subject Classifier-useCase"/>
<packagedElement xmi:type="uml:Class" xmi:id="CallEvent" name="CallEvent">
<ownedComment xmi:id="CallEvent-_ownedComment.0" annotatedElement="CallEvent">
<body>A call event models the receipt by an object of a message invoking a call of an operation.</body>
</ownedComment>
<generalization xmi:id="CallEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="CallEvent-operation" name="operation" type="Operation" association="A_operation_callEvent">
<ownedComment xmi:id="CallEvent-operation-_ownedComment.0" annotatedElement="CallEvent-operation">
<body>Designates the operation whose invocation raised the call event.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallEvent-operation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallEvent-operation-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ChangeEvent" name="ChangeEvent">
<ownedComment xmi:id="ChangeEvent-_ownedComment.0" annotatedElement="ChangeEvent">
<body>A change event models a change in the system configuration that makes a condition true.</body>
</ownedComment>
<generalization xmi:id="ChangeEvent-_generalization.0" general="Event"/>
<ownedAttribute xmi:id="ChangeEvent-changeExpression" name="changeExpression" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_changeExpression_changeEvent">
<ownedComment xmi:id="ChangeEvent-changeExpression-_ownedComment.0" annotatedElement="ChangeEvent-changeExpression">
<body>A Boolean-valued expression that will result in a change event whenever its value changes from false to true.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ChangeEvent-changeExpression-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ChangeEvent-changeExpression-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Reception" name="Reception">
<ownedComment xmi:id="Reception-_ownedComment.0" annotatedElement="Reception">
<body>A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself.</body>
</ownedComment>
<ownedRule xmi:id="Reception-not_query" name="not_query" constrainedElement="Reception">
<ownedComment xmi:id="Reception-not_query-_ownedComment.0" annotatedElement="Reception-not_query">
<body>A Reception can not be a query.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Reception-not_query-_specification">
<language>OCL</language>
<body>not self.isQuery</body>
</specification>
</ownedRule>
<generalization xmi:id="Reception-_generalization.0" general="BehavioralFeature"/>
<ownedAttribute xmi:id="Reception-signal" name="signal" type="Signal" association="A_reception_signal">
<ownedComment xmi:id="Reception-signal-_ownedComment.0" annotatedElement="Reception-signal">
<body>The signal that this reception handles.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Reception-signal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Reception-signal-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Signal" name="Signal">
<ownedComment xmi:id="Signal-_ownedComment.0" annotatedElement="Signal">
<body>A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence.</body>
</ownedComment>
<generalization xmi:id="Signal-_generalization.0" general="Classifier"/>
<ownedAttribute xmi:id="Signal-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_owningSignal">
<ownedComment xmi:id="Signal-ownedAttribute-_ownedComment.0" annotatedElement="Signal-ownedAttribute">
<body>The attributes owned by the signal.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Signal-createOwnedAttribute" name="createOwnedAttribute">
<ownedComment xmi:id="Signal-createOwnedAttribute-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal.</body>
</ownedComment>
<ownedParameter xmi:id="Signal-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
<ownedParameter xmi:id="Signal-createOwnedAttribute-name" name="name" type="String" effect="read">
<ownedComment xmi:id="Signal-createOwnedAttribute-name-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-name">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-createOwnedAttribute-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-createOwnedAttribute-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Signal-createOwnedAttribute-type" name="type" type="Type" effect="read">
<ownedComment xmi:id="Signal-createOwnedAttribute-type-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-type">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-createOwnedAttribute-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-createOwnedAttribute-type-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Signal-createOwnedAttribute-lower" name="lower" type="Integer" effect="read">
<ownedComment xmi:id="Signal-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-lower">
<body>The lower bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Signal-createOwnedAttribute-upper" name="upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Signal-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-upper">
<body>The upper bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="SignalEvent" name="SignalEvent">
<ownedComment xmi:id="SignalEvent-_ownedComment.0" annotatedElement="SignalEvent">
<body>A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition.</body>
</ownedComment>
<generalization xmi:id="SignalEvent-_generalization.0" general="MessageEvent"/>
<ownedAttribute xmi:id="SignalEvent-signal" name="signal" type="Signal" association="A_signal_signalEvent">
<ownedComment xmi:id="SignalEvent-signal-_ownedComment.0" annotatedElement="SignalEvent-signal">
<body>The specific signal that is associated with this event.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="MessageEvent" name="MessageEvent" isAbstract="true">
<ownedComment xmi:id="MessageEvent-_ownedComment.0" annotatedElement="MessageEvent">
<body>A message event specifies the receipt by an object of either a call or a signal.</body>
</ownedComment>
<generalization xmi:id="MessageEvent-_generalization.0" general="Event"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="AnyReceiveEvent" name="AnyReceiveEvent">
<ownedComment xmi:id="AnyReceiveEvent-_ownedComment.0" annotatedElement="AnyReceiveEvent">
<body>A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex.</body>
</ownedComment>
<generalization xmi:id="AnyReceiveEvent-_generalization.0" general="MessageEvent"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="BehavioredClassifier" name="BehavioredClassifier" isAbstract="true">
<ownedComment xmi:id="BehavioredClassifier-_ownedComment.0" annotatedElement="BehavioredClassifier">
<body>A behaviored classifier may have an interface realization.</body>
</ownedComment>
<ownedComment xmi:id="BehavioredClassifier-_ownedComment.1" annotatedElement="BehavioredClassifier">
<body>A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself.</body>
</ownedComment>
<ownedRule xmi:id="BehavioredClassifier-class_behavior" name="class_behavior" constrainedElement="BehavioredClassifier">
<ownedComment xmi:id="BehavioredClassifier-class_behavior-_ownedComment.0" annotatedElement="BehavioredClassifier-class_behavior">
<body>If a behavior is classifier behavior, it does not have a specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioredClassifier-class_behavior-_specification">
<language>OCL</language>
<body>self.classifierBehavior.notEmpty() implies self.specification.isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="BehavioredClassifier-_generalization.0" general="Classifier"/>
<ownedAttribute xmi:id="BehavioredClassifier-ownedBehavior" name="ownedBehavior" type="Behavior" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_behavioredClassifier_ownedBehavior">
<ownedComment xmi:id="BehavioredClassifier-ownedBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-ownedBehavior">
<body>References behavior specifications owned by a classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-ownedBehavior-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-ownedBehavior-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="BehavioredClassifier-classifierBehavior" name="classifierBehavior" type="Behavior" subsettedProperty="BehavioredClassifier-ownedBehavior" association="A_classifierBehavior_behavioredClassifier">
<ownedComment xmi:id="BehavioredClassifier-classifierBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-classifierBehavior">
<body>A behavior specification that specifies the behavior of the classifier itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-classifierBehavior-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-classifierBehavior-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="BehavioredClassifier-interfaceRealization" name="interfaceRealization" type="InterfaceRealization" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_interfaceRealization_implementingClassifier">
<ownedComment xmi:id="BehavioredClassifier-interfaceRealization-_ownedComment.0" annotatedElement="BehavioredClassifier-interfaceRealization">
<body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-interfaceRealization-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-interfaceRealization-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="BehavioredClassifier-ownedTrigger" name="ownedTrigger" type="Trigger" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedTrigger_behavioredClassifier">
<ownedComment xmi:id="BehavioredClassifier-ownedTrigger-_ownedComment.0" annotatedElement="BehavioredClassifier-ownedTrigger">
<body>References Trigger descriptions owned by a Classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-ownedTrigger-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-ownedTrigger-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="BehavioredClassifier-getImplementedInterfaces" name="getImplementedInterfaces">
<ownedComment xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedComment.0" annotatedElement="BehavioredClassifier-getImplementedInterfaces">
<body>Retrieves the interfaces on which this behaviored classifier has an interface realization dependency.</body>
</ownedComment>
<ownedParameter xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0" type="Interface" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="BehavioredClassifier-getAllImplementedInterfaces" name="getAllImplementedInterfaces">
<ownedComment xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedComment.0" annotatedElement="BehavioredClassifier-getAllImplementedInterfaces">
<body>Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency.</body>
</ownedComment>
<ownedParameter xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0" type="Interface" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Event" name="Event" isAbstract="true">
<ownedComment xmi:id="Event-_ownedComment.0" annotatedElement="Event">
<body>An event is the specification of some occurrence that may potentially trigger effects by an object.</body>
</ownedComment>
<generalization xmi:id="Event-_generalization.0" general="PackageableElement"/>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="CallConcurrencyKind" name="CallConcurrencyKind" visibility="private">
<ownedComment xmi:id="CallConcurrencyKind-_ownedComment.0" annotatedElement="CallConcurrencyKind">
<body>CallConcurrencyKind is an enumeration type.</body>
</ownedComment>
<ownedLiteral xmi:id="CallConcurrencyKind-sequential" name="sequential">
<ownedComment xmi:id="CallConcurrencyKind-sequential-_ownedComment.0" annotatedElement="CallConcurrencyKind-sequential">
<body>No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="CallConcurrencyKind-guarded" name="guarded">
<ownedComment xmi:id="CallConcurrencyKind-guarded-_ownedComment.0" annotatedElement="CallConcurrencyKind-guarded">
<body>Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the first behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="CallConcurrencyKind-concurrent" name="concurrent">
<ownedComment xmi:id="CallConcurrencyKind-concurrent-_ownedComment.0" annotatedElement="CallConcurrencyKind-concurrent">
<body>Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_reception_signal" name="A_reception_signal" visibility="private" memberEnd="A_reception_signal-_ownedEnd.0 Reception-signal">
<ownedEnd xmi:id="A_reception_signal-_ownedEnd.0" type="Reception" association="A_reception_signal">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_reception_signal-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_reception_signal-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_operation_callEvent" name="A_operation_callEvent" visibility="private" memberEnd="CallEvent-operation A_operation_callEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_operation_callEvent-_ownedEnd.0" type="CallEvent" association="A_operation_callEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signal_signalEvent" name="A_signal_signalEvent" visibility="private" memberEnd="SignalEvent-signal A_signal_signalEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_signal_signalEvent-_ownedEnd.0" type="SignalEvent" association="A_signal_signalEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_signalEvent-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_signalEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_interface" name="A_ownedReception_interface" visibility="private" memberEnd="Interface-ownedReception A_ownedReception_interface-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedReception_interface-_ownedEnd.0" type="Interface" association="A_ownedReception_interface">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedReception_interface-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_interface-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_class" name="A_ownedReception_class" visibility="private" memberEnd="Class-ownedReception A_ownedReception_class-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedReception_class-_ownedEnd.0" type="Class" association="A_ownedReception_class">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedReception_class-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_class-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_changeExpression_changeEvent" name="A_changeExpression_changeEvent" visibility="private" memberEnd="ChangeEvent-changeExpression A_changeExpression_changeEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_changeExpression_changeEvent-_ownedEnd.0" type="ChangeEvent" association="A_changeExpression_changeEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_changeExpression_changeEvent-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_changeExpression_changeEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_behavioralFeature" name="A_raisedException_behavioralFeature" visibility="private" memberEnd="BehavioralFeature-raisedException A_raisedException_behavioralFeature-_ownedEnd.0">
<ownedEnd xmi:id="A_raisedException_behavioralFeature-_ownedEnd.0" type="BehavioralFeature" association="A_raisedException_behavioralFeature">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_behavioralFeature-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_behavioralFeature-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_owningSignal" name="A_ownedAttribute_owningSignal" visibility="private" memberEnd="Signal-ownedAttribute A_ownedAttribute_owningSignal-owningSignal">
<ownedEnd xmi:id="A_ownedAttribute_owningSignal-owningSignal" name="owningSignal" type="Signal" subsettedProperty="NamedElement-namespace A_attribute_classifier-classifier Feature-featuringClassifier" association="A_ownedAttribute_owningSignal">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedAttribute_owningSignal-owningSignal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_owningSignal-owningSignal-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedTrigger_behavioredClassifier" name="A_ownedTrigger_behavioredClassifier" visibility="private" memberEnd="BehavioredClassifier-ownedTrigger A_ownedTrigger_behavioredClassifier-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedTrigger_behavioredClassifier-_ownedEnd.0" type="BehavioredClassifier" association="A_ownedTrigger_behavioredClassifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedTrigger_behavioredClassifier-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedTrigger_behavioredClassifier-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_event_trigger" name="A_event_trigger" visibility="private" memberEnd="Trigger-event A_event_trigger-_ownedEnd.0">
<ownedEnd xmi:id="A_event_trigger-_ownedEnd.0" type="Trigger" association="A_event_trigger">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_trigger-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_trigger-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ForkNode" name="ForkNode">
<ownedComment xmi:id="ForkNode-_ownedComment.0" annotatedElement="ForkNode">
<body>A fork node is a control node that splits a flow into multiple concurrent flows.</body>
</ownedComment>
<ownedRule xmi:id="ForkNode-one_incoming_edge" name="one_incoming_edge" constrainedElement="ForkNode">
<ownedComment xmi:id="ForkNode-one_incoming_edge-_ownedComment.0" annotatedElement="ForkNode-one_incoming_edge">
<body>A fork node has one incoming edge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ForkNode-one_incoming_edge-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ForkNode-edges" name="edges" constrainedElement="ForkNode">
<ownedComment xmi:id="ForkNode-edges-_ownedComment.0" annotatedElement="ForkNode-edges">
<body>The edges coming into and out of a fork node must be either all object flows or all control flows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ForkNode-edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ForkNode-_generalization.0" general="ControlNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="FlowFinalNode" name="FlowFinalNode">
<ownedComment xmi:id="FlowFinalNode-_ownedComment.0" annotatedElement="FlowFinalNode">
<body>A flow final node is a final node that terminates a flow.</body>
</ownedComment>
<generalization xmi:id="FlowFinalNode-_generalization.0" general="FinalNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CentralBufferNode" name="CentralBufferNode">
<ownedComment xmi:id="CentralBufferNode-_ownedComment.0" annotatedElement="CentralBufferNode">
<body>A central buffer node is an object node for managing flows from multiple sources and destinations.</body>
</ownedComment>
<generalization xmi:id="CentralBufferNode-_generalization.0" general="ObjectNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ActivityPartition" name="ActivityPartition">
<ownedComment xmi:id="ActivityPartition-_ownedComment.0" annotatedElement="ActivityPartition">
<body>An activity partition is a kind of activity group for identifying actions that have some characteristic in common.</body>
</ownedComment>
<ownedRule xmi:id="ActivityPartition-dimension_not_contained" name="dimension_not_contained" constrainedElement="ActivityPartition">
<ownedComment xmi:id="ActivityPartition-dimension_not_contained-_ownedComment.0" annotatedElement="ActivityPartition-dimension_not_contained">
<body>A partition with isDimension = true may not be contained by another partition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-dimension_not_contained-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityPartition-represents_part" name="represents_part" constrainedElement="ActivityPartition">
<ownedComment xmi:id="ActivityPartition-represents_part-_ownedComment.0" annotatedElement="ActivityPartition-represents_part">
<body>If a partition represents a part, then all the non-external partitions in the same dimension and at the same level of nesting in that dimension must represent parts directly contained in the internal structure of the same classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_part-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityPartition-represents_classifier" name="represents_classifier" constrainedElement="ActivityPartition">
<ownedComment xmi:id="ActivityPartition-represents_classifier-_ownedComment.0" annotatedElement="ActivityPartition-represents_classifier">
<body>If a non-external partition represents a classifier and is contained in another partition, then the containing partition must represent a classifier, and the classifier of the subpartition must be nested in the classifier represented by the containing partition, or be at the contained end of a strong composition association with the classifier represented by the containing partition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_classifier-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActivityPartition-represents_part_and_is_contained" name="represents_part_and_is_contained" constrainedElement="ActivityPartition">
<ownedComment xmi:id="ActivityPartition-represents_part_and_is_contained-_ownedComment.0" annotatedElement="ActivityPartition-represents_part_and_is_contained">
<body>If a partition represents a part and is contained by another partition, then the part must be of a classifier represented by the containing partition, or of a classifier that is the type of a part representing the containing partition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_part_and_is_contained-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ActivityPartition-_generalization.0" general="NamedElement"/>
<generalization xmi:id="ActivityPartition-_generalization.1" general="ActivityGroup"/>
<ownedAttribute xmi:id="ActivityPartition-isDimension" name="isDimension" type="Boolean">
<ownedComment xmi:id="ActivityPartition-isDimension-_ownedComment.0" annotatedElement="ActivityPartition-isDimension">
<body>Tells whether the partition groups other partitions along a dimension.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ActivityPartition-isDimension-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-isExternal" name="isExternal" type="Boolean">
<ownedComment xmi:id="ActivityPartition-isExternal-_ownedComment.0" annotatedElement="ActivityPartition-isExternal">
<body>Tells whether the partition represents an entity to which the partitioning structure does not apply.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ActivityPartition-isExternal-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-edge" name="edge" type="ActivityEdge" subsettedProperty="ActivityGroup-containedEdge" association="A_edge_inPartition">
<ownedComment xmi:id="ActivityPartition-edge-_ownedComment.0" annotatedElement="ActivityPartition-edge">
<body>Edges immediately contained in the group.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-edge-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-edge-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-node" name="node" type="ActivityNode" subsettedProperty="ActivityGroup-containedNode" association="A_inPartition_node">
<ownedComment xmi:id="ActivityPartition-node-_ownedComment.0" annotatedElement="ActivityPartition-node">
<body>Nodes immediately contained in the group.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-node-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-node-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-subpartition" name="subpartition" type="ActivityPartition" aggregation="composite" subsettedProperty="ActivityGroup-subgroup" association="A_subpartition_superPartition">
<ownedComment xmi:id="ActivityPartition-subpartition-_ownedComment.0" annotatedElement="ActivityPartition-subpartition">
<body>Partitions immediately contained in the partition.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-subpartition-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-subpartition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-superPartition" name="superPartition" type="ActivityPartition" subsettedProperty="ActivityGroup-superGroup" association="A_subpartition_superPartition">
<ownedComment xmi:id="ActivityPartition-superPartition-_ownedComment.0" annotatedElement="ActivityPartition-superPartition">
<body>Partition immediately containing the partition.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-superPartition-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-superPartition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ActivityPartition-represents" name="represents" type="Element" association="A_represents_activityPartition">
<ownedComment xmi:id="ActivityPartition-represents-_ownedComment.0" annotatedElement="ActivityPartition-represents">
<body>An element constraining behaviors invoked by nodes in the partition.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-represents-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-represents-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="MergeNode" name="MergeNode">
<ownedComment xmi:id="MergeNode-_ownedComment.0" annotatedElement="MergeNode">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="MergeNode-one_outgoing_edge" name="one_outgoing_edge" constrainedElement="MergeNode">
<ownedComment xmi:id="MergeNode-one_outgoing_edge-_ownedComment.0" annotatedElement="MergeNode-one_outgoing_edge">
<body>A merge node has one outgoing edge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MergeNode-one_outgoing_edge-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="MergeNode-edges" name="edges" constrainedElement="MergeNode">
<ownedComment xmi:id="MergeNode-edges-_ownedComment.0" annotatedElement="MergeNode-edges">
<body>The edges coming into and out of a merge node must be either all object flows or all control flows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="MergeNode-edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="MergeNode-_generalization.0" general="ControlNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DecisionNode" name="DecisionNode">
<ownedComment xmi:id="DecisionNode-_ownedComment.0" annotatedElement="DecisionNode">
<body>A decision node is a control node that chooses between outgoing flows.</body>
</ownedComment>
<ownedRule xmi:id="DecisionNode-one_incoming_edge" name="one_incoming_edge" constrainedElement="DecisionNode">
<ownedComment xmi:id="DecisionNode-one_incoming_edge-_ownedComment.0" annotatedElement="DecisionNode-one_incoming_edge">
<body>A decision node has one incoming edge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-one_incoming_edge-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="DecisionNode-input_parameter" name="input_parameter" constrainedElement="DecisionNode">
<ownedComment xmi:id="DecisionNode-input_parameter-_ownedComment.0" annotatedElement="DecisionNode-input_parameter">
<body>A decision input behavior has zero or one input parameter and one output parameter. Any input parameter must be the same as or a supertype of the type of object tokens coming along the incoming edge. The behavior cannot have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-input_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="DecisionNode-edges" name="edges" constrainedElement="DecisionNode">
<ownedComment xmi:id="DecisionNode-edges-_ownedComment.0" annotatedElement="DecisionNode-edges">
<body>The edges coming into and out of a decision node must be either all object flows or all control flows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="DecisionNode-_generalization.0" general="ControlNode"/>
<ownedAttribute xmi:id="DecisionNode-decisionInput" name="decisionInput" type="Behavior" association="A_decisionInput_decisionNode">
<ownedComment xmi:id="DecisionNode-decisionInput-_ownedComment.0" annotatedElement="DecisionNode-decisionInput">
<body>Provides input to guard specifications on edges outgoing from the decision node.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DecisionNode-decisionInput-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DecisionNode-decisionInput-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="FinalNode" name="FinalNode" isAbstract="true">
<ownedComment xmi:id="FinalNode-_ownedComment.0" annotatedElement="FinalNode">
<body>A final node is an abstract control node at which a flow in an activity stops.</body>
</ownedComment>
<ownedRule xmi:id="FinalNode-no_outgoing_edges" name="no_outgoing_edges" constrainedElement="FinalNode">
<ownedComment xmi:id="FinalNode-no_outgoing_edges-_ownedComment.0" annotatedElement="FinalNode-no_outgoing_edges">
<body>A final node has no outgoing edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalNode-no_outgoing_edges-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="FinalNode-_generalization.0" general="ControlNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ActivityFinalNode" name="ActivityFinalNode">
<ownedComment xmi:id="ActivityFinalNode-_ownedComment.0" annotatedElement="ActivityFinalNode">
<body>An activity final node is a final node that stops all flows in an activity.</body>
</ownedComment>
<generalization xmi:id="ActivityFinalNode-_generalization.0" general="FinalNode"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_edge_inPartition" name="A_edge_inPartition" visibility="private" memberEnd="ActivityPartition-edge ActivityEdge-inPartition"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_inPartition_node" name="A_inPartition_node" visibility="private" memberEnd="ActivityNode-inPartition ActivityPartition-node"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_subpartition_superPartition" name="A_subpartition_superPartition" visibility="private" memberEnd="ActivityPartition-subpartition ActivityPartition-superPartition"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_represents_activityPartition" name="A_represents_activityPartition" visibility="private" memberEnd="ActivityPartition-represents A_represents_activityPartition-_ownedEnd.0">
<ownedEnd xmi:id="A_represents_activityPartition-_ownedEnd.0" type="ActivityPartition" association="A_represents_activityPartition">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represents_activityPartition-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represents_activityPartition-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_activityEdge_guard" name="A_activityEdge_guard" visibility="private" memberEnd="A_activityEdge_guard-_ownedEnd.0 ActivityEdge-guard">
<ownedEnd xmi:id="A_activityEdge_guard-_ownedEnd.0" type="ActivityEdge" association="A_activityEdge_guard">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_activityEdge_guard-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_activityEdge_guard-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_decisionInput_decisionNode" name="A_decisionInput_decisionNode" visibility="private" memberEnd="DecisionNode-decisionInput A_decisionInput_decisionNode-_ownedEnd.0">
<ownedEnd xmi:id="A_decisionInput_decisionNode-_ownedEnd.0" type="DecisionNode" association="A_decisionInput_decisionNode">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_decisionInput_decisionNode-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decisionInput_decisionNode-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_partition_activity" name="A_partition_activity" visibility="private" memberEnd="Activity-partition A_partition_activity-_ownedEnd.0">
<ownedEnd xmi:id="A_partition_activity-_ownedEnd.0" type="Activity" association="A_partition_activity">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_partition_activity-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_partition_activity-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_group_inActivity" name="A_group_inActivity" visibility="private" memberEnd="Activity-group ActivityGroup-inActivity"/>
<packagedElement xmi:type="uml:Class" xmi:id="EncapsulatedClassifier" name="EncapsulatedClassifier" isAbstract="true">
<ownedComment xmi:id="EncapsulatedClassifier-_ownedComment.0" annotatedElement="EncapsulatedClassifier">
<body>A classifier has the ability to own ports as specific and type checked interaction points.</body>
</ownedComment>
<generalization xmi:id="EncapsulatedClassifier-_generalization.0" general="StructuredClassifier"/>
<ownedAttribute xmi:id="EncapsulatedClassifier-ownedPort" name="ownedPort" type="Port" isDerived="true" aggregation="composite" subsettedProperty="StructuredClassifier-ownedAttribute" association="A_encapsulatedClassifier_ownedPort">
<ownedComment xmi:id="EncapsulatedClassifier-ownedPort-_ownedComment.0" annotatedElement="EncapsulatedClassifier-ownedPort">
<body>References a set of ports that an encapsulated classifier owns.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EncapsulatedClassifier-ownedPort-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="EncapsulatedClassifier-ownedPort-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_encapsulatedClassifier_ownedPort" name="A_encapsulatedClassifier_ownedPort" visibility="private" memberEnd="A_encapsulatedClassifier_ownedPort-_ownedEnd.0 EncapsulatedClassifier-ownedPort">
<ownedEnd xmi:id="A_encapsulatedClassifier_ownedPort-_ownedEnd.0" type="EncapsulatedClassifier" subsettedProperty="RedefinableElement-redefinitionContext" association="A_encapsulatedClassifier_ownedPort">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_encapsulatedClassifier_ownedPort-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_encapsulatedClassifier_ownedPort-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_required_port" name="A_required_port" visibility="private" memberEnd="Port-required A_required_port-_ownedEnd.0">
<ownedEnd xmi:id="A_required_port-_ownedEnd.0" type="Port" association="A_required_port">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_required_port-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_required_port-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedPort_port" name="A_redefinedPort_port" visibility="private" memberEnd="Port-redefinedPort A_redefinedPort_port-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedPort_port-_ownedEnd.0" type="Port" association="A_redefinedPort_port">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedPort_port-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedPort_port-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_provided_port" name="A_provided_port" visibility="private" memberEnd="Port-provided A_provided_port-_ownedEnd.0">
<ownedEnd xmi:id="A_provided_port-_ownedEnd.0" type="Port" association="A_provided_port">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_provided_port-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_provided_port-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_partWithPort_connectorEnd" name="A_partWithPort_connectorEnd" visibility="private" memberEnd="ConnectorEnd-partWithPort A_partWithPort_connectorEnd-_ownedEnd.0">
<ownedEnd xmi:id="A_partWithPort_connectorEnd-_ownedEnd.0" type="ConnectorEnd" association="A_partWithPort_connectorEnd">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_partWithPort_connectorEnd-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_partWithPort_connectorEnd-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ComponentRealization" name="ComponentRealization">
<ownedComment xmi:id="ComponentRealization-_ownedComment.0" annotatedElement="ComponentRealization">
<body>The realization concept 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.</body>
</ownedComment>
<generalization xmi:id="ComponentRealization-_generalization.0" general="Realization"/>
<ownedAttribute xmi:id="ComponentRealization-abstraction" name="abstraction" type="Component" subsettedProperty="Element-owner Dependency-client" association="A_realization_abstraction">
<ownedComment xmi:id="ComponentRealization-abstraction-_ownedComment.0" annotatedElement="ComponentRealization-abstraction">
<body>The Component that owns this ComponentRealization and which is implemented by its realizing classifiers.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ComponentRealization-abstraction-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ComponentRealization-abstraction-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ComponentRealization-realizingClassifier" name="realizingClassifier" type="Classifier" subsettedProperty="Dependency-supplier" association="A_realizingClassifier_componentRealization">
<ownedComment xmi:id="ComponentRealization-realizingClassifier-_ownedComment.0" annotatedElement="ComponentRealization-realizingClassifier">
<body>A classifier that is involved in the implementation of the Component that owns this ComponentRealization.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ComponentRealization-realizingClassifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ComponentRealization-realizingClassifier-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Connector" name="Connector">
<ownedComment xmi:id="Connector-_ownedComment.0" annotatedElement="Connector">
<body>Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.</body>
</ownedComment>
<ownedComment xmi:id="Connector-_ownedComment.1" annotatedElement="Connector">
<body>A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling.&#xD;
An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port.</body>
</ownedComment>
<ownedRule xmi:id="Connector-types" name="types" constrainedElement="Connector">
<ownedComment xmi:id="Connector-types-_ownedComment.0" annotatedElement="Connector-types">
<body>The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-types-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-compatible" name="compatible" constrainedElement="Connector">
<ownedComment xmi:id="Connector-compatible-_ownedComment.0" annotatedElement="Connector-compatible">
<body>The connectable elements attached to the ends of a connector must be compatible.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-compatible-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-roles" name="roles" constrainedElement="Connector">
<ownedComment xmi:id="Connector-roles-_ownedComment.0" annotatedElement="Connector-roles">
<body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-roles-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-between_interfaces_ports" name="between_interfaces_ports" constrainedElement="Connector">
<ownedComment xmi:id="Connector-between_interfaces_ports-_ownedComment.0" annotatedElement="Connector-between_interfaces_ports">
<body>A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-between_interfaces_ports-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-between_interface_port_implements" name="between_interface_port_implements" constrainedElement="Connector">
<ownedComment xmi:id="Connector-between_interface_port_implements-_ownedComment.0" annotatedElement="Connector-between_interface_port_implements">
<body>If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-between_interface_port_implements-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-between_interface_port_signature" name="between_interface_port_signature" constrainedElement="Connector">
<ownedComment xmi:id="Connector-between_interface_port_signature-_ownedComment.0" annotatedElement="Connector-between_interface_port_signature">
<body>If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-between_interface_port_signature-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-union_signature_compatible" name="union_signature_compatible" constrainedElement="Connector">
<ownedComment xmi:id="Connector-union_signature_compatible-_ownedComment.0" annotatedElement="Connector-union_signature_compatible">
<body>In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-union_signature_compatible-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Connector-assembly_connector" name="assembly_connector" constrainedElement="Connector">
<ownedComment xmi:id="Connector-assembly_connector-_ownedComment.0" annotatedElement="Connector-assembly_connector">
<body>An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-assembly_connector-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Connector-_generalization.0" general="Feature"/>
<ownedAttribute xmi:id="Connector-type" name="type" type="Association" association="A_type_connector">
<ownedComment xmi:id="Connector-type-_ownedComment.0" annotatedElement="Connector-type">
<body>An optional association that specifies the link corresponding to this connector.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-type-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Connector-redefinedConnector" name="redefinedConnector" type="Connector" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedConnector_connector">
<ownedComment xmi:id="Connector-redefinedConnector-_ownedComment.0" annotatedElement="Connector-redefinedConnector">
<body>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 connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-redefinedConnector-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-redefinedConnector-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Connector-end" name="end" type="ConnectorEnd" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_end_connector">
<ownedComment xmi:id="Connector-end-_ownedComment.0" annotatedElement="Connector-end">
<body>A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-end-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-end-_lowerValue" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="Connector-kind" name="kind" type="ConnectorKind">
<ownedComment xmi:id="Connector-kind-_ownedComment.0" annotatedElement="Connector-kind">
<body>Indicates the kind of connector.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-kind-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-kind-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Connector-contract" name="contract" type="Behavior" association="A_contract_connector">
<ownedComment xmi:id="Connector-contract-_ownedComment.0" annotatedElement="Connector-contract">
<body>The set of Behaviors that specify the valid interaction patterns across the connector.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-contract-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-contract-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="ConnectorKind" name="ConnectorKind" visibility="private">
<ownedComment xmi:id="ConnectorKind-_ownedComment.0" annotatedElement="ConnectorKind">
<body>ConnectorKind is an enumeration type.</body>
</ownedComment>
<ownedLiteral xmi:id="ConnectorKind-assembly" name="assembly">
<ownedComment xmi:id="ConnectorKind-assembly-_ownedComment.0" annotatedElement="ConnectorKind-assembly">
<body>Indicates that the connector is an assembly connector.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="ConnectorKind-delegation" name="delegation">
<ownedComment xmi:id="ConnectorKind-delegation-_ownedComment.0" annotatedElement="ConnectorKind-delegation">
<body>Indicates that the connector is a delegation connector.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_required_component" name="A_required_component" visibility="private" memberEnd="Component-required A_required_component-_ownedEnd.0">
<ownedEnd xmi:id="A_required_component-_ownedEnd.0" type="Component" association="A_required_component">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_required_component-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_required_component-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_provided_component" name="A_provided_component" visibility="private" memberEnd="Component-provided A_provided_component-_ownedEnd.0">
<ownedEnd xmi:id="A_provided_component-_ownedEnd.0" type="Component" association="A_provided_component">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_provided_component-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_provided_component-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_realization_abstraction" name="A_realization_abstraction" visibility="private" memberEnd="Component-realization ComponentRealization-abstraction"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_realizingClassifier_componentRealization" name="A_realizingClassifier_componentRealization" visibility="private" memberEnd="ComponentRealization-realizingClassifier A_realizingClassifier_componentRealization-_ownedEnd.0">
<ownedEnd xmi:id="A_realizingClassifier_componentRealization-_ownedEnd.0" type="ComponentRealization" association="A_realizingClassifier_componentRealization">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingClassifier_componentRealization-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingClassifier_componentRealization-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_contract_connector" name="A_contract_connector" visibility="private" memberEnd="Connector-contract A_contract_connector-_ownedEnd.0">
<ownedEnd xmi:id="A_contract_connector-_ownedEnd.0" type="Connector" association="A_contract_connector">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_connector-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_connector-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Manifestation" name="Manifestation">
<ownedComment xmi:id="Manifestation-_ownedComment.0" annotatedElement="Manifestation">
<body>A manifestation is the concrete physical rendering of one or more model elements by an artifact.</body>
</ownedComment>
<generalization xmi:id="Manifestation-_generalization.0" general="Abstraction"/>
<ownedAttribute xmi:id="Manifestation-utilizedElement" name="utilizedElement" type="PackageableElement" subsettedProperty="Dependency-supplier" association="A_utilizedElement_manifestation">
<ownedComment xmi:id="Manifestation-utilizedElement-_ownedComment.0" annotatedElement="Manifestation-utilizedElement">
<body>The model element that is utilized in the manifestation in an Artifact.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Manifestation-utilizedElement-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Manifestation-utilizedElement-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_utilizedElement_manifestation" name="A_utilizedElement_manifestation" visibility="private" memberEnd="Manifestation-utilizedElement A_utilizedElement_manifestation-_ownedEnd.0">
<ownedEnd xmi:id="A_utilizedElement_manifestation-_ownedEnd.0" type="Manifestation" association="A_utilizedElement_manifestation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_utilizedElement_manifestation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_utilizedElement_manifestation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_nestedArtifact_artifact" name="A_nestedArtifact_artifact" visibility="private" memberEnd="Artifact-nestedArtifact A_nestedArtifact_artifact-_ownedEnd.0">
<ownedEnd xmi:id="A_nestedArtifact_artifact-_ownedEnd.0" type="Artifact" association="A_nestedArtifact_artifact">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_nestedArtifact_artifact-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedArtifact_artifact-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_manifestation_artifact" name="A_manifestation_artifact" visibility="private" memberEnd="Artifact-manifestation A_manifestation_artifact-_ownedEnd.0">
<ownedEnd xmi:id="A_manifestation_artifact-_ownedEnd.0" type="Artifact" association="A_manifestation_artifact">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_manifestation_artifact-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_manifestation_artifact-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_artifact" name="A_ownedOperation_artifact" visibility="private" memberEnd="Artifact-ownedOperation A_ownedOperation_artifact-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedOperation_artifact-_ownedEnd.0" type="Artifact" subsettedProperty="RedefinableElement-redefinitionContext NamedElement-namespace Feature-featuringClassifier" association="A_ownedOperation_artifact">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedOperation_artifact-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedOperation_artifact-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_artifact" name="A_ownedAttribute_artifact" visibility="private" memberEnd="Artifact-ownedAttribute A_ownedAttribute_artifact-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedAttribute_artifact-_ownedEnd.0" type="Artifact" subsettedProperty="NamedElement-namespace Feature-featuringClassifier A_attribute_classifier-classifier" association="A_ownedAttribute_artifact">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedAttribute_artifact-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_artifact-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Node" name="Node">
<ownedComment xmi:id="Node-_ownedComment.0" annotatedElement="Node">
<body>A node is computational resource upon which artifacts may be deployed for execution.&#xD;
Nodes can be interconnected through communication paths to define network structures.</body>
</ownedComment>
<ownedRule xmi:id="Node-internal_structure" name="internal_structure" constrainedElement="Node">
<ownedComment xmi:id="Node-internal_structure-_ownedComment.0" annotatedElement="Node-internal_structure">
<body>The internal structure of a Node (if defined) consists solely of parts of type Node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Node-internal_structure-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Node-_generalization.0" general="Class"/>
<generalization xmi:id="Node-_generalization.1" general="DeploymentTarget"/>
<ownedAttribute xmi:id="Node-nestedNode" name="nestedNode" type="Node" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_nestedNode_node">
<ownedComment xmi:id="Node-nestedNode-_ownedComment.0" annotatedElement="Node-nestedNode">
<body>The Nodes that are defined (nested) within the Node.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Node-nestedNode-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Node-nestedNode-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Node-createCommunicationPath" name="createCommunicationPath">
<ownedComment xmi:id="Node-createCommunicationPath-_ownedComment.0" annotatedElement="Node-createCommunicationPath">
<body>Creates a (binary) communication path between this node and the specified other node, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this node's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="Node-createCommunicationPath-_ownedParameter.0" type="CommunicationPath" direction="return"/>
<ownedParameter xmi:id="Node-createCommunicationPath-end1IsNavigable" name="end1IsNavigable" type="Boolean" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1IsNavigable-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1IsNavigable">
<body>The navigability for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end1Aggregation" name="end1Aggregation" type="AggregationKind" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1Aggregation-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Aggregation">
<body>The aggregation for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end1Name" name="end1Name" type="String" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1Name-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Name">
<body>The name for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end1Lower" name="end1Lower" type="Integer" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1Lower-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Lower">
<body>The lower bound for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end1Upper" name="end1Upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1Upper-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Upper">
<body>The upper bound for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end1Node" name="end1Node" type="Node" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end1Node-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Node">
<body>The type for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end2IsNavigable" name="end2IsNavigable" type="Boolean" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end2IsNavigable-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2IsNavigable">
<body>The navigability for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end2Aggregation" name="end2Aggregation" type="AggregationKind" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end2Aggregation-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Aggregation">
<body>The aggregation for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end2Name" name="end2Name" type="String" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end2Name-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Name">
<body>The name for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end2Lower" name="end2Lower" type="Integer" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end2Lower-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Lower">
<body>The lower bound for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Node-createCommunicationPath-end2Upper" name="end2Upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Node-createCommunicationPath-end2Upper-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Upper">
<body>The upper bound for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Node-getCommunicationPaths" name="getCommunicationPaths">
<ownedComment xmi:id="Node-getCommunicationPaths-_ownedComment.0" annotatedElement="Node-getCommunicationPaths">
<body>Retrieves the communication paths in which this node is involved.</body>
</ownedComment>
<ownedParameter xmi:id="Node-getCommunicationPaths-_ownedParameter.0" type="CommunicationPath" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Node-getCommunicationPaths-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Node-getCommunicationPaths-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Device" name="Device">
<ownedComment xmi:id="Device-_ownedComment.0" annotatedElement="Device">
<body>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).</body>
</ownedComment>
<generalization xmi:id="Device-_generalization.0" general="Node"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExecutionEnvironment" name="ExecutionEnvironment">
<ownedComment xmi:id="ExecutionEnvironment-_ownedComment.0" annotatedElement="ExecutionEnvironment">
<body>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.</body>
</ownedComment>
<generalization xmi:id="ExecutionEnvironment-_generalization.0" general="Node"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DeploymentTarget" name="DeploymentTarget" isAbstract="true">
<ownedComment xmi:id="DeploymentTarget-_ownedComment.0" annotatedElement="DeploymentTarget">
<body>A deployment target is the location for a deployed artifact.</body>
</ownedComment>
<generalization xmi:id="DeploymentTarget-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="DeploymentTarget-deployment" name="deployment" type="Deployment" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_deployment_location">
<ownedComment xmi:id="DeploymentTarget-deployment-_ownedComment.0" annotatedElement="DeploymentTarget-deployment">
<body>The set of Deployments for a DeploymentTarget.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployment-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="DeploymentTarget-deployedElement" name="deployedElement" type="PackageableElement" isReadOnly="true" isDerived="true" association="A_deployedElement_deploymentTarget">
<ownedComment xmi:id="DeploymentTarget-deployedElement-_ownedComment.0" annotatedElement="DeploymentTarget-deployedElement">
<body>The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployedElement-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="DeploymentTarget-deployedElement.1" name="deployedElement" isQuery="true" bodyCondition="DeploymentTarget-deployedElement.1-spec">
<ownedRule xmi:id="DeploymentTarget-deployedElement.1-spec" name="spec" constrainedElement="DeploymentTarget-deployedElement.1">
<specification xmi:type="uml:OpaqueExpression" xmi:id="DeploymentTarget-deployedElement.1-spec-_specification">
<language>OCL</language>
<body>result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="DeploymentTarget-deployedElement.1-_ownedParameter.0" type="PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployedElement.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployedElement.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DeployedArtifact" name="DeployedArtifact" isAbstract="true">
<ownedComment xmi:id="DeployedArtifact-_ownedComment.0" annotatedElement="DeployedArtifact">
<body>A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.</body>
</ownedComment>
<generalization xmi:id="DeployedArtifact-_generalization.0" general="NamedElement"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CommunicationPath" name="CommunicationPath">
<ownedComment xmi:id="CommunicationPath-_ownedComment.0" annotatedElement="CommunicationPath">
<body>A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.</body>
</ownedComment>
<ownedRule xmi:id="CommunicationPath-association_ends" name="association_ends" constrainedElement="CommunicationPath">
<ownedComment xmi:id="CommunicationPath-association_ends-_ownedComment.0" annotatedElement="CommunicationPath-association_ends">
<body>The association ends of a CommunicationPath are typed by DeploymentTargets.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CommunicationPath-association_ends-_specification">
<language>OCL</language>
<body>result = self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget))</body>
</specification>
</ownedRule>
<generalization xmi:id="CommunicationPath-_generalization.0" general="Association"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InstanceSpecification" name="InstanceSpecification">
<ownedComment xmi:id="InstanceSpecification-_ownedComment.0" annotatedElement="InstanceSpecification">
<body>An instance specification is a model element that represents an instance in a modeled system.</body>
</ownedComment>
<ownedComment xmi:id="InstanceSpecification-_ownedComment.1" annotatedElement="InstanceSpecification">
<body>An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact.</body>
</ownedComment>
<ownedRule xmi:id="InstanceSpecification-defining_feature" name="defining_feature" constrainedElement="InstanceSpecification">
<ownedComment xmi:id="InstanceSpecification-defining_feature-_ownedComment.0" annotatedElement="InstanceSpecification-defining_feature">
<body>The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-defining_feature-_specification">
<language>OCL</language>
<body>slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InstanceSpecification-structural_feature" name="structural_feature" constrainedElement="InstanceSpecification">
<ownedComment xmi:id="InstanceSpecification-structural_feature-_ownedComment.0" annotatedElement="InstanceSpecification-structural_feature">
<body>One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-structural_feature-_specification">
<language>OCL</language>
<body>classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InstanceSpecification-deployment_target" name="deployment_target" constrainedElement="InstanceSpecification">
<ownedComment xmi:id="InstanceSpecification-deployment_target-_ownedComment.0" annotatedElement="InstanceSpecification-deployment_target">
<body>An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-deployment_target-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InstanceSpecification-deployment_artifact" name="deployment_artifact" constrainedElement="InstanceSpecification">
<ownedComment xmi:id="InstanceSpecification-deployment_artifact-_ownedComment.0" annotatedElement="InstanceSpecification-deployment_artifact">
<body>An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-deployment_artifact-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InstanceSpecification-_generalization.0" general="PackageableElement"/>
<generalization xmi:id="InstanceSpecification-_generalization.1" general="DeploymentTarget"/>
<generalization xmi:id="InstanceSpecification-_generalization.2" general="DeployedArtifact"/>
<ownedAttribute xmi:id="InstanceSpecification-classifier" name="classifier" type="Classifier" association="A_classifier_instanceSpecification">
<ownedComment xmi:id="InstanceSpecification-classifier-_ownedComment.0" annotatedElement="InstanceSpecification-classifier">
<body>The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-classifier-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InstanceSpecification-slot" name="slot" type="Slot" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_slot_owningInstance">
<ownedComment xmi:id="InstanceSpecification-slot-_ownedComment.0" annotatedElement="InstanceSpecification-slot">
<body>A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-slot-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-slot-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InstanceSpecification-specification" name="specification" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningInstanceSpec">
<ownedComment xmi:id="InstanceSpecification-specification-_ownedComment.0" annotatedElement="InstanceSpecification-specification">
<body>A specification of how to compute, derive, or construct the instance.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-specification-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-specification-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Artifact" name="Artifact">
<ownedComment xmi:id="Artifact-_ownedComment.0" annotatedElement="Artifact">
<body>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.</body>
</ownedComment>
<ownedComment xmi:id="Artifact-_ownedComment.1" annotatedElement="Artifact">
<body>An artifact is the source of a deployment to a node.</body>
</ownedComment>
<generalization xmi:id="Artifact-_generalization.0" general="Classifier"/>
<generalization xmi:id="Artifact-_generalization.1" general="DeployedArtifact"/>
<ownedAttribute xmi:id="Artifact-fileName" name="fileName" type="String">
<ownedComment xmi:id="Artifact-fileName-_ownedComment.0" annotatedElement="Artifact-fileName">
<body>A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-fileName-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-fileName-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Artifact-nestedArtifact" name="nestedArtifact" type="Artifact" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_nestedArtifact_artifact">
<ownedComment xmi:id="Artifact-nestedArtifact-_ownedComment.0" annotatedElement="Artifact-nestedArtifact">
<body>The Artifacts that are defined (nested) within the Artifact.&#xD;
The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-nestedArtifact-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-nestedArtifact-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Artifact-manifestation" name="manifestation" type="Manifestation" aggregation="composite" subsettedProperty="NamedElement-clientDependency Element-ownedElement" association="A_manifestation_artifact">
<ownedComment xmi:id="Artifact-manifestation-_ownedComment.0" annotatedElement="Artifact-manifestation">
<body>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.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-manifestation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-manifestation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Artifact-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedOperation_artifact">
<ownedComment xmi:id="Artifact-ownedOperation-_ownedComment.0" annotatedElement="Artifact-ownedOperation">
<body>The Operations defined for the Artifact. The association is a specialization of the ownedMember association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Artifact-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_artifact">
<ownedComment xmi:id="Artifact-ownedAttribute-_ownedComment.0" annotatedElement="Artifact-ownedAttribute">
<body>The attributes or association ends defined for the Artifact.&#xD;
The association is a specialization of the ownedMember association.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Artifact-createOwnedOperation" name="createOwnedOperation">
<ownedComment xmi:id="Artifact-createOwnedOperation-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact.</body>
</ownedComment>
<ownedParameter xmi:id="Artifact-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
<ownedParameter xmi:id="Artifact-createOwnedOperation-name" name="name" type="String" effect="read">
<ownedComment xmi:id="Artifact-createOwnedOperation-name-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-name">
<body>The name for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedOperation-parameterNames" name="parameterNames" type="String" effect="read">
<ownedComment xmi:id="Artifact-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-parameterNames">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-parameterNames-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-parameterNames-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
<ownedComment xmi:id="Artifact-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-parameterTypes">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-parameterTypes-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
<ownedComment xmi:id="Artifact-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-returnType">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-returnType-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-returnType-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Artifact-createOwnedAttribute" name="createOwnedAttribute">
<ownedComment xmi:id="Artifact-createOwnedAttribute-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact.</body>
</ownedComment>
<ownedParameter xmi:id="Artifact-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
<ownedParameter xmi:id="Artifact-createOwnedAttribute-name" name="name" type="String" effect="read">
<ownedComment xmi:id="Artifact-createOwnedAttribute-name-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-name">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedAttribute-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedAttribute-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedAttribute-type" name="type" type="Type" effect="read">
<ownedComment xmi:id="Artifact-createOwnedAttribute-type-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-type">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedAttribute-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedAttribute-type-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedAttribute-lower" name="lower" type="Integer" effect="read">
<ownedComment xmi:id="Artifact-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-lower">
<body>The lower bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Artifact-createOwnedAttribute-upper" name="upper" type="UnlimitedNatural" effect="read">
<ownedComment xmi:id="Artifact-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-upper">
<body>The upper bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_deployedArtifact_deployment" name="A_deployedArtifact_deployment" visibility="private" memberEnd="Deployment-deployedArtifact A_deployedArtifact_deployment-_ownedEnd.0">
<ownedEnd xmi:id="A_deployedArtifact_deployment-_ownedEnd.0" type="Deployment" association="A_deployedArtifact_deployment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_deployedArtifact_deployment-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deployedArtifact_deployment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_deployment_location" name="A_deployment_location" visibility="private" memberEnd="DeploymentTarget-deployment Deployment-location"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_nestedNode_node" name="A_nestedNode_node" visibility="private" memberEnd="Node-nestedNode A_nestedNode_node-_ownedEnd.0">
<ownedEnd xmi:id="A_nestedNode_node-_ownedEnd.0" type="Node" association="A_nestedNode_node">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_nestedNode_node-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedNode_node-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_deployedElement_deploymentTarget" name="A_deployedElement_deploymentTarget" visibility="private" memberEnd="DeploymentTarget-deployedElement A_deployedElement_deploymentTarget-_ownedEnd.0" isDerived="true">
<ownedEnd xmi:id="A_deployedElement_deploymentTarget-_ownedEnd.0" type="DeploymentTarget" association="A_deployedElement_deploymentTarget">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_deployedElement_deploymentTarget-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deployedElement_deploymentTarget-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InteractionUse" name="InteractionUse">
<ownedComment xmi:id="InteractionUse-_ownedComment.0" annotatedElement="InteractionUse">
<body>An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones.</body>
</ownedComment>
<ownedRule xmi:id="InteractionUse-gates_match" name="gates_match" constrainedElement="InteractionUse">
<ownedComment xmi:id="InteractionUse-gates_match-_ownedComment.0" annotatedElement="InteractionUse-gates_match">
<body>Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-gates_match-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionUse-all_lifelines" name="all_lifelines" constrainedElement="InteractionUse">
<ownedComment xmi:id="InteractionUse-all_lifelines-_ownedComment.0" annotatedElement="InteractionUse-all_lifelines">
<body>The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-all_lifelines-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionUse-arguments_correspond_to_parameters" name="arguments_correspond_to_parameters" constrainedElement="InteractionUse">
<ownedComment xmi:id="InteractionUse-arguments_correspond_to_parameters-_ownedComment.0" annotatedElement="InteractionUse-arguments_correspond_to_parameters">
<body>The arguments of the InteractionUse must correspond to parameters of the referred Interaction</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-arguments_correspond_to_parameters-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionUse-arguments_are_constants" name="arguments_are_constants" constrainedElement="InteractionUse">
<ownedComment xmi:id="InteractionUse-arguments_are_constants-_ownedComment.0" annotatedElement="InteractionUse-arguments_are_constants">
<body>The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-arguments_are_constants-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InteractionUse-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="InteractionUse-refersTo" name="refersTo" type="Interaction" association="A_refersTo_interactionUse">
<ownedComment xmi:id="InteractionUse-refersTo-_ownedComment.0" annotatedElement="InteractionUse-refersTo">
<body>Refers to the Interaction that defines its meaning</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionUse-refersTo-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-refersTo-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionUse-actualGate" name="actualGate" type="Gate" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_interactionUse_actualGate">
<ownedComment xmi:id="InteractionUse-actualGate-_ownedComment.0" annotatedElement="InteractionUse-actualGate">
<body>The actual gates of the InteractionUse</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionUse-actualGate-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-actualGate-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionUse-argument" name="argument" type="Action" isOrdered="true" aggregation="composite" association="A_argument_interactionUse">
<ownedComment xmi:id="InteractionUse-argument-_ownedComment.0" annotatedElement="InteractionUse-argument">
<body>The actual arguments of the Interaction</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionUse-argument-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-argument-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="PartDecomposition" name="PartDecomposition">
<ownedComment xmi:id="PartDecomposition-_ownedComment.0" annotatedElement="PartDecomposition">
<body>A part decomposition is a description of the internal interactions of one lifeline relative to an interaction.</body>
</ownedComment>
<ownedRule xmi:id="PartDecomposition-parts_of_internal_structures" name="parts_of_internal_structures" constrainedElement="PartDecomposition">
<ownedComment xmi:id="PartDecomposition-parts_of_internal_structures-_ownedComment.0" annotatedElement="PartDecomposition-parts_of_internal_structures">
<body>PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-parts_of_internal_structures-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="PartDecomposition-assume" name="assume" constrainedElement="PartDecomposition">
<ownedComment xmi:id="PartDecomposition-assume-_ownedComment.0" annotatedElement="PartDecomposition-assume">
<body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;
&#xD;
i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;
ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;
iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-assume-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="PartDecomposition-commutativity_of_decomposition" name="commutativity_of_decomposition" constrainedElement="PartDecomposition">
<ownedComment xmi:id="PartDecomposition-commutativity_of_decomposition-_ownedComment.0" annotatedElement="PartDecomposition-commutativity_of_decomposition">
<body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;
InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-commutativity_of_decomposition-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="PartDecomposition-_generalization.0" general="InteractionUse"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InteractionOperand" name="InteractionOperand">
<ownedComment xmi:id="InteractionOperand-_ownedComment.0" annotatedElement="InteractionOperand">
<body>An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment.</body>
</ownedComment>
<ownedRule xmi:id="InteractionOperand-guard_directly_prior" name="guard_directly_prior" constrainedElement="InteractionOperand">
<ownedComment xmi:id="InteractionOperand-guard_directly_prior-_ownedComment.0" annotatedElement="InteractionOperand-guard_directly_prior">
<body>The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionOperand-guard_directly_prior-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionOperand-guard_contain_references" name="guard_contain_references" constrainedElement="InteractionOperand">
<ownedComment xmi:id="InteractionOperand-guard_contain_references-_ownedComment.0" annotatedElement="InteractionOperand-guard_contain_references">
<body>The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionOperand-guard_contain_references-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InteractionOperand-_generalization.0" general="InteractionFragment"/>
<generalization xmi:id="InteractionOperand-_generalization.1" general="Namespace"/>
<ownedAttribute xmi:id="InteractionOperand-guard" name="guard" type="InteractionConstraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_guard_interactionOperand">
<ownedComment xmi:id="InteractionOperand-guard-_ownedComment.0" annotatedElement="InteractionOperand-guard">
<body>Constraint of the operand.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionOperand-guard-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionOperand-guard-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionOperand-fragment" name="fragment" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_fragment_enclosingOperand">
<ownedComment xmi:id="InteractionOperand-fragment-_ownedComment.0" annotatedElement="InteractionOperand-fragment">
<body>The fragments of the operand.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionOperand-fragment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionOperand-fragment-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InteractionConstraint" name="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-_ownedComment.0" annotatedElement="InteractionConstraint">
<body>An interaction constraint is a Boolean expression that guards an operand in a combined fragment.</body>
</ownedComment>
<ownedRule xmi:id="InteractionConstraint-dynamic_variables" name="dynamic_variables" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-dynamic_variables-_ownedComment.0" annotatedElement="InteractionConstraint-dynamic_variables">
<body>The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-dynamic_variables-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionConstraint-global_data" name="global_data" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-global_data-_ownedComment.0" annotatedElement="InteractionConstraint-global_data">
<body>The constraint may contain references to global data or write-once data.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-global_data-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionConstraint-minint_maxint" name="minint_maxint" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-minint_maxint-_ownedComment.0" annotatedElement="InteractionConstraint-minint_maxint">
<body>Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-minint_maxint-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionConstraint-minint_non_negative" name="minint_non_negative" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-minint_non_negative-_ownedComment.0" annotatedElement="InteractionConstraint-minint_non_negative">
<body>If minint is specified, then the expression must evaluate to a non-negative integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-minint_non_negative-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionConstraint-maxint_positive" name="maxint_positive" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-maxint_positive-_ownedComment.0" annotatedElement="InteractionConstraint-maxint_positive">
<body>If maxint is specified, then the expression must evaluate to a positive integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-maxint_positive-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InteractionConstraint-maxint_greater_equal_minint" name="maxint_greater_equal_minint" constrainedElement="InteractionConstraint">
<ownedComment xmi:id="InteractionConstraint-maxint_greater_equal_minint-_ownedComment.0" annotatedElement="InteractionConstraint-maxint_greater_equal_minint">
<body>If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-maxint_greater_equal_minint-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InteractionConstraint-_generalization.0" general="Constraint"/>
<ownedAttribute xmi:id="InteractionConstraint-minint" name="minint" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_minint_interactionConstraint">
<ownedComment xmi:id="InteractionConstraint-minint-_ownedComment.0" annotatedElement="InteractionConstraint-minint">
<body>The minimum number of iterations of a loop</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionConstraint-minint-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionConstraint-minint-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionConstraint-maxint" name="maxint" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_maxint_interactionConstraint">
<ownedComment xmi:id="InteractionConstraint-maxint-_ownedComment.0" annotatedElement="InteractionConstraint-maxint">
<body>The maximum number of iterations of a loop</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionConstraint-maxint-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionConstraint-maxint-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Gate" name="Gate">
<ownedComment xmi:id="Gate-_ownedComment.0" annotatedElement="Gate">
<body>A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment.</body>
</ownedComment>
<ownedRule xmi:id="Gate-messages_actual_gate" name="messages_actual_gate" constrainedElement="Gate">
<ownedComment xmi:id="Gate-messages_actual_gate-_ownedComment.0" annotatedElement="Gate-messages_actual_gate">
<body>The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-messages_actual_gate-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Gate-messages_combined_fragment" name="messages_combined_fragment" constrainedElement="Gate">
<ownedComment xmi:id="Gate-messages_combined_fragment-_ownedComment.0" annotatedElement="Gate-messages_combined_fragment">
<body>The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-messages_combined_fragment-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Gate-_generalization.0" general="MessageEnd"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CombinedFragment" name="CombinedFragment">
<ownedComment xmi:id="CombinedFragment-_ownedComment.0" annotatedElement="CombinedFragment">
<body>A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner.</body>
</ownedComment>
<ownedRule xmi:id="CombinedFragment-opt_loop_break_neg" name="opt_loop_break_neg" constrainedElement="CombinedFragment">
<ownedComment xmi:id="CombinedFragment-opt_loop_break_neg-_ownedComment.0" annotatedElement="CombinedFragment-opt_loop_break_neg">
<body>If the interactionOperator is opt, loop, break, or neg there must be exactly one operand</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-opt_loop_break_neg-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CombinedFragment-minint_and_maxint" name="minint_and_maxint" constrainedElement="CombinedFragment">
<ownedComment xmi:id="CombinedFragment-minint_and_maxint-_ownedComment.0" annotatedElement="CombinedFragment-minint_and_maxint">
<body>The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-minint_and_maxint-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CombinedFragment-break" name="break" constrainedElement="CombinedFragment">
<ownedComment xmi:id="CombinedFragment-break-_ownedComment.0" annotatedElement="CombinedFragment-break">
<body>If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-break-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CombinedFragment-consider_and_ignore" name="consider_and_ignore" constrainedElement="CombinedFragment">
<ownedComment xmi:id="CombinedFragment-consider_and_ignore-_ownedComment.0" annotatedElement="CombinedFragment-consider_and_ignore">
<body>The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-consider_and_ignore-_specification">
<language>OCL</language>
<body>((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)</body>
</specification>
</ownedRule>
<generalization xmi:id="CombinedFragment-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="CombinedFragment-interactionOperator" name="interactionOperator" type="InteractionOperatorKind">
<ownedComment xmi:id="CombinedFragment-interactionOperator-_ownedComment.0" annotatedElement="CombinedFragment-interactionOperator">
<body>Specifies the operation which defines the semantics of this combination of InteractionFragments.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="CombinedFragment-interactionOperator-_defaultValue" type="InteractionOperatorKind" instance="InteractionOperatorKind-seq"/>
</ownedAttribute>
<ownedAttribute xmi:id="CombinedFragment-operand" name="operand" type="InteractionOperand" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_operand_combinedFragment">
<ownedComment xmi:id="CombinedFragment-operand-_ownedComment.0" annotatedElement="CombinedFragment-operand">
<body>The set of operands of the combined fragment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CombinedFragment-operand-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CombinedFragment-operand-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="CombinedFragment-cfragmentGate" name="cfragmentGate" type="Gate" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_cfragmentGate_combinedFragment">
<ownedComment xmi:id="CombinedFragment-cfragmentGate-_ownedComment.0" annotatedElement="CombinedFragment-cfragmentGate">
<body>Specifies the gates that form the interface between this CombinedFragment and its surroundings</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CombinedFragment-cfragmentGate-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CombinedFragment-cfragmentGate-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Interaction" name="Interaction">
<ownedComment xmi:id="Interaction-_ownedComment.0" annotatedElement="Interaction">
<body>An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements.</body>
</ownedComment>
<generalization xmi:id="Interaction-_generalization.0" general="InteractionFragment"/>
<generalization xmi:id="Interaction-_generalization.1" general="Behavior"/>
<ownedAttribute xmi:id="Interaction-lifeline" name="lifeline" type="Lifeline" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_lifeline_interaction">
<ownedComment xmi:id="Interaction-lifeline-_ownedComment.0" annotatedElement="Interaction-lifeline">
<body>Specifies the participants in this Interaction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-lifeline-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-lifeline-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Interaction-message" name="message" type="Message" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_message_interaction">
<ownedComment xmi:id="Interaction-message-_ownedComment.0" annotatedElement="Interaction-message">
<body>The Messages contained in this Interaction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-message-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-message-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Interaction-fragment" name="fragment" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_enclosingInteraction_fragment">
<ownedComment xmi:id="Interaction-fragment-_ownedComment.0" annotatedElement="Interaction-fragment">
<body>The ordered set of fragments in the Interaction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-fragment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-fragment-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Interaction-action" name="action" type="Action" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_action_interaction">
<ownedComment xmi:id="Interaction-action-_ownedComment.0" annotatedElement="Interaction-action">
<body>Actions owned by the Interaction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-action-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-action-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Interaction-formalGate" name="formalGate" type="Gate" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_formalGate_interaction">
<ownedComment xmi:id="Interaction-formalGate-_ownedComment.0" annotatedElement="Interaction-formalGate">
<body>Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-formalGate-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-formalGate-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Lifeline" name="Lifeline">
<ownedComment xmi:id="Lifeline-_ownedComment.0" annotatedElement="Lifeline">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Lifeline-interaction_uses_share_lifeline" name="interaction_uses_share_lifeline" constrainedElement="Lifeline">
<ownedComment xmi:id="Lifeline-interaction_uses_share_lifeline-_ownedComment.0" annotatedElement="Lifeline-interaction_uses_share_lifeline">
<body>If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-interaction_uses_share_lifeline-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Lifeline-selector_specified" name="selector_specified" constrainedElement="Lifeline">
<ownedComment xmi:id="Lifeline-selector_specified-_ownedComment.0" annotatedElement="Lifeline-selector_specified">
<body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-selector_specified-_specification">
<language>OCL</language>
<body>(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Lifeline-same_classifier" name="same_classifier" constrainedElement="Lifeline">
<ownedComment xmi:id="Lifeline-same_classifier-_ownedComment.0" annotatedElement="Lifeline-same_classifier">
<body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-same_classifier-_specification">
<language>OCL</language>
<body>if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="Lifeline-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="Lifeline-coveredBy" name="coveredBy" type="InteractionFragment" association="A_covered_coveredBy">
<ownedComment xmi:id="Lifeline-coveredBy-_ownedComment.0" annotatedElement="Lifeline-coveredBy">
<body>References the InteractionFragments in which this Lifeline takes part.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-coveredBy-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-coveredBy-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Lifeline-represents" name="represents" type="ConnectableElement" association="A_lifeline_represents">
<ownedComment xmi:id="Lifeline-represents-_ownedComment.0" annotatedElement="Lifeline-represents">
<body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-represents-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-represents-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Lifeline-interaction" name="interaction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_lifeline_interaction">
<ownedComment xmi:id="Lifeline-interaction-_ownedComment.0" annotatedElement="Lifeline-interaction">
<body>References the Interaction enclosing this Lifeline.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-interaction-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-interaction-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Lifeline-selector" name="selector" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_selector_lifeline">
<ownedComment xmi:id="Lifeline-selector-_ownedComment.0" annotatedElement="Lifeline-selector">
<body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-selector-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-selector-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Lifeline-decomposedAs" name="decomposedAs" type="PartDecomposition" association="A_lifeline_decomposedAs">
<ownedComment xmi:id="Lifeline-decomposedAs-_ownedComment.0" annotatedElement="Lifeline-decomposedAs">
<body>References the Interaction that represents the decomposition.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-decomposedAs-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-decomposedAs-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Continuation" name="Continuation">
<ownedComment xmi:id="Continuation-_ownedComment.0" annotatedElement="Continuation">
<body>A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control.</body>
</ownedComment>
<ownedRule xmi:id="Continuation-same_name" name="same_name" constrainedElement="Continuation">
<ownedComment xmi:id="Continuation-same_name-_ownedComment.0" annotatedElement="Continuation-same_name">
<body>Continuations with the same name may only cover the same set of Lifelines (within one Classifier).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-same_name-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Continuation-global" name="global" constrainedElement="Continuation">
<ownedComment xmi:id="Continuation-global-_ownedComment.0" annotatedElement="Continuation-global">
<body>Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-global-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Continuation-first_or_last_interaction_fragment" name="first_or_last_interaction_fragment" constrainedElement="Continuation">
<ownedComment xmi:id="Continuation-first_or_last_interaction_fragment-_ownedComment.0" annotatedElement="Continuation-first_or_last_interaction_fragment">
<body>Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-first_or_last_interaction_fragment-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Continuation-_generalization.0" general="InteractionFragment"/>
<ownedAttribute xmi:id="Continuation-setting" name="setting" type="Boolean">
<ownedComment xmi:id="Continuation-setting-_ownedComment.0" annotatedElement="Continuation-setting">
<body>True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Continuation-setting-_defaultValue" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InteractionFragment" name="InteractionFragment" isAbstract="true">
<ownedComment xmi:id="InteractionFragment-_ownedComment.0" annotatedElement="InteractionFragment">
<body>InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself.</body>
</ownedComment>
<generalization xmi:id="InteractionFragment-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="InteractionFragment-covered" name="covered" type="Lifeline" association="A_covered_coveredBy">
<ownedComment xmi:id="InteractionFragment-covered-_ownedComment.0" annotatedElement="InteractionFragment-covered">
<body>References the Lifelines that the InteractionFragment involves.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-covered-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-covered-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionFragment-generalOrdering" name="generalOrdering" type="GeneralOrdering" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_generalOrdering_interactionFragment">
<ownedComment xmi:id="InteractionFragment-generalOrdering-_ownedComment.0" annotatedElement="InteractionFragment-generalOrdering">
<body>The general ordering relationships contained in this fragment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-generalOrdering-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-generalOrdering-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionFragment-enclosingInteraction" name="enclosingInteraction" type="Interaction" association="A_enclosingInteraction_fragment">
<ownedComment xmi:id="InteractionFragment-enclosingInteraction-_ownedComment.0" annotatedElement="InteractionFragment-enclosingInteraction">
<body>The Interaction enclosing this InteractionFragment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-enclosingInteraction-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingInteraction-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InteractionFragment-enclosingOperand" name="enclosingOperand" type="InteractionOperand" subsettedProperty="NamedElement-namespace" association="A_fragment_enclosingOperand">
<ownedComment xmi:id="InteractionFragment-enclosingOperand-_ownedComment.0" annotatedElement="InteractionFragment-enclosingOperand">
<body>The operand enclosing this InteractionFragment (they may nest recursively)</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-enclosingOperand-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingOperand-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ConsiderIgnoreFragment" name="ConsiderIgnoreFragment">
<ownedComment xmi:id="ConsiderIgnoreFragment-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment">
<body>A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified.</body>
</ownedComment>
<ownedRule xmi:id="ConsiderIgnoreFragment-consider_or_ignore" name="consider_or_ignore" constrainedElement="ConsiderIgnoreFragment">
<ownedComment xmi:id="ConsiderIgnoreFragment-consider_or_ignore-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-consider_or_ignore">
<body>The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ConsiderIgnoreFragment-consider_or_ignore-_specification">
<language>OCL</language>
<body>(interactionOperator = #consider) or (interactionOperator = #ignore)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ConsiderIgnoreFragment-type" name="type" constrainedElement="ConsiderIgnoreFragment">
<ownedComment xmi:id="ConsiderIgnoreFragment-type-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-type">
<body>The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ConsiderIgnoreFragment-type-_specification">
<language>OCL</language>
<body>message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))</body>
</specification>
</ownedRule>
<generalization xmi:id="ConsiderIgnoreFragment-_generalization.0" general="CombinedFragment"/>
<ownedAttribute xmi:id="ConsiderIgnoreFragment-message" name="message" type="NamedElement" association="A_message_considerIgnoreFragment">
<ownedComment xmi:id="ConsiderIgnoreFragment-message-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-message">
<body>The set of messages that apply to this fragment</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConsiderIgnoreFragment-message-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConsiderIgnoreFragment-message-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="InteractionOperatorKind" name="InteractionOperatorKind" visibility="private">
<ownedComment xmi:id="InteractionOperatorKind-_ownedComment.0" annotatedElement="InteractionOperatorKind">
<body>InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment.</body>
</ownedComment>
<ownedLiteral xmi:id="InteractionOperatorKind-seq" name="seq">
<ownedComment xmi:id="InteractionOperatorKind-seq-_ownedComment.0" annotatedElement="InteractionOperatorKind-seq">
<body>The interactionOperator seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-alt" name="alt">
<ownedComment xmi:id="InteractionOperatorKind-alt-_ownedComment.0" annotatedElement="InteractionOperatorKind-alt">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-opt" name="opt">
<ownedComment xmi:id="InteractionOperatorKind-opt-_ownedComment.0" annotatedElement="InteractionOperatorKind-opt">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-break" name="break">
<ownedComment xmi:id="InteractionOperatorKind-break-_ownedComment.0" annotatedElement="InteractionOperatorKind-break">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-par" name="par">
<ownedComment xmi:id="InteractionOperatorKind-par-_ownedComment.0" annotatedElement="InteractionOperatorKind-par">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-strict" name="strict">
<ownedComment xmi:id="InteractionOperatorKind-strict-_ownedComment.0" annotatedElement="InteractionOperatorKind-strict">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-loop" name="loop">
<ownedComment xmi:id="InteractionOperatorKind-loop-_ownedComment.0" annotatedElement="InteractionOperatorKind-loop">
<body>The interactionOperator loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-critical" name="critical">
<ownedComment xmi:id="InteractionOperatorKind-critical-_ownedComment.0" annotatedElement="InteractionOperatorKind-critical">
<body>The interactionOperator 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 e.g. with par-operator, this is prevented by defining a region.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-neg" name="neg">
<ownedComment xmi:id="InteractionOperatorKind-neg-_ownedComment.0" annotatedElement="InteractionOperatorKind-neg">
<body>The interactionOperator neg designates that the CombinedFragment represents traces that are defined to be invalid.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-assert" name="assert">
<ownedComment xmi:id="InteractionOperatorKind-assert-_ownedComment.0" annotatedElement="InteractionOperatorKind-assert">
<body>The interactionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-ignore" name="ignore">
<ownedComment xmi:id="InteractionOperatorKind-ignore-_ownedComment.0" annotatedElement="InteractionOperatorKind-ignore">
<body>The interacionOperator 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.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="InteractionOperatorKind-consider" name="consider">
<ownedComment xmi:id="InteractionOperatorKind-consider-_ownedComment.0" annotatedElement="InteractionOperatorKind-consider">
<body>The interactionOperator consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_lifeline_decomposedAs" name="A_lifeline_decomposedAs" visibility="private" memberEnd="A_lifeline_decomposedAs-_ownedEnd.0 Lifeline-decomposedAs">
<ownedEnd xmi:id="A_lifeline_decomposedAs-_ownedEnd.0" type="Lifeline" association="A_lifeline_decomposedAs"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_guard_interactionOperand" name="A_guard_interactionOperand" visibility="private" memberEnd="InteractionOperand-guard A_guard_interactionOperand-_ownedEnd.0">
<ownedEnd xmi:id="A_guard_interactionOperand-_ownedEnd.0" type="InteractionOperand" association="A_guard_interactionOperand">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_guard_interactionOperand-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_guard_interactionOperand-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_operand_combinedFragment" name="A_operand_combinedFragment" visibility="private" memberEnd="CombinedFragment-operand A_operand_combinedFragment-_ownedEnd.0">
<ownedEnd xmi:id="A_operand_combinedFragment-_ownedEnd.0" type="CombinedFragment" association="A_operand_combinedFragment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operand_combinedFragment-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operand_combinedFragment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_refersTo_interactionUse" name="A_refersTo_interactionUse" visibility="private" memberEnd="InteractionUse-refersTo A_refersTo_interactionUse-_ownedEnd.0">
<ownedEnd xmi:id="A_refersTo_interactionUse-_ownedEnd.0" type="InteractionUse" association="A_refersTo_interactionUse">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_refersTo_interactionUse-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_refersTo_interactionUse-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_cfragmentGate_combinedFragment" name="A_cfragmentGate_combinedFragment" visibility="private" memberEnd="CombinedFragment-cfragmentGate A_cfragmentGate_combinedFragment-_ownedEnd.0">
<ownedEnd xmi:id="A_cfragmentGate_combinedFragment-_ownedEnd.0" type="CombinedFragment" association="A_cfragmentGate_combinedFragment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_cfragmentGate_combinedFragment-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_cfragmentGate_combinedFragment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_interactionUse_actualGate" name="A_interactionUse_actualGate" visibility="private" memberEnd="A_interactionUse_actualGate-_ownedEnd.0 InteractionUse-actualGate">
<ownedEnd xmi:id="A_interactionUse_actualGate-_ownedEnd.0" type="InteractionUse" association="A_interactionUse_actualGate">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_interactionUse_actualGate-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_interactionUse_actualGate-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_formalGate_interaction" name="A_formalGate_interaction" visibility="private" memberEnd="Interaction-formalGate A_formalGate_interaction-_ownedEnd.0">
<ownedEnd xmi:id="A_formalGate_interaction-_ownedEnd.0" type="Interaction" association="A_formalGate_interaction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_formalGate_interaction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_formalGate_interaction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_minint_interactionConstraint" name="A_minint_interactionConstraint" visibility="private" memberEnd="InteractionConstraint-minint A_minint_interactionConstraint-_ownedEnd.0">
<ownedEnd xmi:id="A_minint_interactionConstraint-_ownedEnd.0" type="InteractionConstraint" association="A_minint_interactionConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_minint_interactionConstraint-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_minint_interactionConstraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_maxint_interactionConstraint" name="A_maxint_interactionConstraint" visibility="private" memberEnd="InteractionConstraint-maxint A_maxint_interactionConstraint-_ownedEnd.0">
<ownedEnd xmi:id="A_maxint_interactionConstraint-_ownedEnd.0" type="InteractionConstraint" association="A_maxint_interactionConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_maxint_interactionConstraint-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_maxint_interactionConstraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_argument_interactionUse" name="A_argument_interactionUse" visibility="private" memberEnd="InteractionUse-argument A_argument_interactionUse-_ownedEnd.0">
<ownedEnd xmi:id="A_argument_interactionUse-_ownedEnd.0" type="InteractionUse" association="A_argument_interactionUse">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_argument_interactionUse-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_interactionUse-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_fragment_enclosingOperand" name="A_fragment_enclosingOperand" visibility="private" memberEnd="InteractionOperand-fragment InteractionFragment-enclosingOperand"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_message_considerIgnoreFragment" name="A_message_considerIgnoreFragment" visibility="private" memberEnd="ConsiderIgnoreFragment-message A_message_considerIgnoreFragment-_ownedEnd.0">
<ownedEnd xmi:id="A_message_considerIgnoreFragment-_ownedEnd.0" type="ConsiderIgnoreFragment" association="A_message_considerIgnoreFragment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_message_considerIgnoreFragment-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_message_considerIgnoreFragment-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CreateObjectAction" name="CreateObjectAction">
<ownedComment xmi:id="CreateObjectAction-_ownedComment.0" annotatedElement="CreateObjectAction">
<body>A create object action is an action that creates an object that conforms to a statically specified classifier and puts it on an output pin at runtime.</body>
</ownedComment>
<ownedRule xmi:id="CreateObjectAction-classifier_not_abstract" name="classifier_not_abstract" constrainedElement="CreateObjectAction">
<ownedComment xmi:id="CreateObjectAction-classifier_not_abstract-_ownedComment.0" annotatedElement="CreateObjectAction-classifier_not_abstract">
<body>The classifier cannot be abstract.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-classifier_not_abstract-_specification">
<language>OCL</language>
<body>not (self.classifier.isAbstract = #true)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CreateObjectAction-classifier_not_association_class" name="classifier_not_association_class" constrainedElement="CreateObjectAction">
<ownedComment xmi:id="CreateObjectAction-classifier_not_association_class-_ownedComment.0" annotatedElement="CreateObjectAction-classifier_not_association_class">
<body>The classifier cannot be an association class</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-classifier_not_association_class-_specification">
<language>OCL</language>
<body>not self.classifier.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CreateObjectAction-same_type" name="same_type" constrainedElement="CreateObjectAction">
<ownedComment xmi:id="CreateObjectAction-same_type-_ownedComment.0" annotatedElement="CreateObjectAction-same_type">
<body>The type of the result pin must be the same as the classifier of the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-same_type-_specification">
<language>OCL</language>
<body>self.result.type = self.classifier</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CreateObjectAction-multiplicity" name="multiplicity" constrainedElement="CreateObjectAction">
<ownedComment xmi:id="CreateObjectAction-multiplicity-_ownedComment.0" annotatedElement="CreateObjectAction-multiplicity">
<body>The multiplicity of the output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-multiplicity-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="CreateObjectAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="CreateObjectAction-classifier" name="classifier" type="Classifier" association="A_classifier_createObjectAction">
<ownedComment xmi:id="CreateObjectAction-classifier-_ownedComment.0" annotatedElement="CreateObjectAction-classifier">
<body>Classifier to be instantiated.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CreateObjectAction-classifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CreateObjectAction-classifier-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="CreateObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_createObjectAction">
<ownedComment xmi:id="CreateObjectAction-result-_ownedComment.0" annotatedElement="CreateObjectAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CreateObjectAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CreateObjectAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DestroyObjectAction" name="DestroyObjectAction">
<ownedComment xmi:id="DestroyObjectAction-_ownedComment.0" annotatedElement="DestroyObjectAction">
<body>A destroy object action is an action that destroys objects.</body>
</ownedComment>
<ownedRule xmi:id="DestroyObjectAction-multiplicity" name="multiplicity" constrainedElement="DestroyObjectAction">
<ownedComment xmi:id="DestroyObjectAction-multiplicity-_ownedComment.0" annotatedElement="DestroyObjectAction-multiplicity">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DestroyObjectAction-multiplicity-_specification">
<language>OCL</language>
<body>self.target.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="DestroyObjectAction-no_type" name="no_type" constrainedElement="DestroyObjectAction">
<ownedComment xmi:id="DestroyObjectAction-no_type-_ownedComment.0" annotatedElement="DestroyObjectAction-no_type">
<body>The input pin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DestroyObjectAction-no_type-_specification">
<language>OCL</language>
<body>self.target.type->size() = 0</body>
</specification>
</ownedRule>
<generalization xmi:id="DestroyObjectAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="DestroyObjectAction-isDestroyLinks" name="isDestroyLinks" type="Boolean">
<ownedComment xmi:id="DestroyObjectAction-isDestroyLinks-_ownedComment.0" annotatedElement="DestroyObjectAction-isDestroyLinks">
<body>Specifies whether links in which the object participates are destroyed along with the object.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DestroyObjectAction-isDestroyLinks-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="DestroyObjectAction-isDestroyOwnedObjects" name="isDestroyOwnedObjects" type="Boolean">
<ownedComment xmi:id="DestroyObjectAction-isDestroyOwnedObjects-_ownedComment.0" annotatedElement="DestroyObjectAction-isDestroyOwnedObjects">
<body>Specifies whether objects owned by the object are destroyed along with the object.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DestroyObjectAction-isDestroyOwnedObjects-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="DestroyObjectAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_destroyObjectAction">
<ownedComment xmi:id="DestroyObjectAction-target-_ownedComment.0" annotatedElement="DestroyObjectAction-target">
<body>The input pin providing the object to be destroyed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DestroyObjectAction-target-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DestroyObjectAction-target-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TestIdentityAction" name="TestIdentityAction">
<ownedComment xmi:id="TestIdentityAction-_ownedComment.0" annotatedElement="TestIdentityAction">
<body>A test identity action is an action that tests if two values are identical objects.</body>
</ownedComment>
<ownedRule xmi:id="TestIdentityAction-no_type" name="no_type" constrainedElement="TestIdentityAction">
<ownedComment xmi:id="TestIdentityAction-no_type-_ownedComment.0" annotatedElement="TestIdentityAction-no_type">
<body>The input pins have no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-no_type-_specification">
<language>OCL</language>
<body>self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="TestIdentityAction-multiplicity" name="multiplicity" constrainedElement="TestIdentityAction">
<ownedComment xmi:id="TestIdentityAction-multiplicity-_ownedComment.0" annotatedElement="TestIdentityAction-multiplicity">
<body>The multiplicity of the input pins is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-multiplicity-_specification">
<language>OCL</language>
<body>self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="TestIdentityAction-result_is_boolean" name="result_is_boolean" constrainedElement="TestIdentityAction">
<ownedComment xmi:id="TestIdentityAction-result_is_boolean-_ownedComment.0" annotatedElement="TestIdentityAction-result_is_boolean">
<body>The type of the result is Boolean.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-result_is_boolean-_specification">
<language>OCL</language>
<body>self.result.type.oclIsTypeOf(Boolean)</body>
</specification>
</ownedRule>
<generalization xmi:id="TestIdentityAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="TestIdentityAction-first" name="first" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_first_testIdentityAction">
<ownedComment xmi:id="TestIdentityAction-first-_ownedComment.0" annotatedElement="TestIdentityAction-first">
<body>Gives the pin on which an object is placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TestIdentityAction-first-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TestIdentityAction-first-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="TestIdentityAction-second" name="second" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_second_testIdentityAction">
<ownedComment xmi:id="TestIdentityAction-second-_ownedComment.0" annotatedElement="TestIdentityAction-second">
<body>Gives the pin on which an object is placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TestIdentityAction-second-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TestIdentityAction-second-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="TestIdentityAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_testIdentityAction">
<ownedComment xmi:id="TestIdentityAction-result-_ownedComment.0" annotatedElement="TestIdentityAction-result">
<body>Tells whether the two input objects are identical.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TestIdentityAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TestIdentityAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadSelfAction" name="ReadSelfAction">
<ownedComment xmi:id="ReadSelfAction-_ownedComment.0" annotatedElement="ReadSelfAction">
<body>A read self action is an action that retrieves the host object of an action.</body>
</ownedComment>
<ownedRule xmi:id="ReadSelfAction-contained" name="contained" constrainedElement="ReadSelfAction">
<ownedComment xmi:id="ReadSelfAction-contained-_ownedComment.0" annotatedElement="ReadSelfAction-contained">
<body>The action must be contained in an behavior that has a host classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-contained-_specification">
<language>OCL</language>
<body>self.context->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadSelfAction-not_static" name="not_static" constrainedElement="ReadSelfAction">
<ownedComment xmi:id="ReadSelfAction-not_static-_ownedComment.0" annotatedElement="ReadSelfAction-not_static">
<body>If the action is contained in an behavior that is acting as the body of a method, then the operation of the method must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-not_static-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadSelfAction-type" name="type" constrainedElement="ReadSelfAction">
<ownedComment xmi:id="ReadSelfAction-type-_ownedComment.0" annotatedElement="ReadSelfAction-type">
<body>The type of the result output pin is the host classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-type-_specification">
<language>OCL</language>
<body>self.result.type = self.context</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadSelfAction-multiplicity" name="multiplicity" constrainedElement="ReadSelfAction">
<ownedComment xmi:id="ReadSelfAction-multiplicity-_ownedComment.0" annotatedElement="ReadSelfAction-multiplicity">
<body>The multiplicity of the result output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-multiplicity-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadSelfAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReadSelfAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readSelfAction">
<ownedComment xmi:id="ReadSelfAction-result-_ownedComment.0" annotatedElement="ReadSelfAction-result">
<body>Gives the output pin on which the hosting object is placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadSelfAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadSelfAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StructuralFeatureAction" name="StructuralFeatureAction" isAbstract="true">
<ownedComment xmi:id="StructuralFeatureAction-_ownedComment.0" annotatedElement="StructuralFeatureAction">
<body>StructuralFeatureAction is an abstract class for all structural feature actions.</body>
</ownedComment>
<ownedRule xmi:id="StructuralFeatureAction-not_static" name="not_static" constrainedElement="StructuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-not_static-_ownedComment.0" annotatedElement="StructuralFeatureAction-not_static">
<body>The structural feature must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-not_static-_specification">
<language>OCL</language>
<body>self.structuralFeature.isStatic = #false</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StructuralFeatureAction-same_type" name="same_type" constrainedElement="StructuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-same_type-_ownedComment.0" annotatedElement="StructuralFeatureAction-same_type">
<body>The type of the object input pin is the same as the classifier of the object passed on this pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-same_type-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StructuralFeatureAction-multiplicity" name="multiplicity" constrainedElement="StructuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-multiplicity-_ownedComment.0" annotatedElement="StructuralFeatureAction-multiplicity">
<body>The multiplicity of the input pin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-multiplicity-_specification">
<language>OCL</language>
<body>self.object.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StructuralFeatureAction-visibility" name="visibility" constrainedElement="StructuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-visibility-_ownedComment.0" annotatedElement="StructuralFeatureAction-visibility">
<body>Visibility of structural feature must allow access to the object performing the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-visibility-_specification">
<language>OCL</language>
<body>let host : Classifier = self.context in&#xA;self.structuralFeature.visibility = #public&#xA;or host = self.structuralFeature.featuringClassifier.type&#xA;or (self.structuralFeature.visibility = #protected and host.allSupertypes&#xA;->includes(self.structuralFeature.featuringClassifier.type)))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StructuralFeatureAction-one_featuring_classifier" name="one_featuring_classifier" constrainedElement="StructuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-one_featuring_classifier-_ownedComment.0" annotatedElement="StructuralFeatureAction-one_featuring_classifier">
<body>A structural feature has exactly one featuringClassifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-one_featuring_classifier-_specification">
<language>OCL</language>
<body>self.structuralFeature.featuringClassifier->size() = 1</body>
</specification>
</ownedRule>
<generalization xmi:id="StructuralFeatureAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="StructuralFeatureAction-structuralFeature" name="structuralFeature" type="StructuralFeature" association="A_structuralFeatureAction_structuralFeature">
<ownedComment xmi:id="StructuralFeatureAction-structuralFeature-_ownedComment.0" annotatedElement="StructuralFeatureAction-structuralFeature">
<body>Structural feature to be read.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuralFeatureAction-structuralFeature-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuralFeatureAction-structuralFeature-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="StructuralFeatureAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_structuralFeatureAction">
<ownedComment xmi:id="StructuralFeatureAction-object-_ownedComment.0" annotatedElement="StructuralFeatureAction-object">
<body>Gives the input pin from which the object whose structural feature is to be read or written is obtained.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuralFeatureAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuralFeatureAction-object-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadStructuralFeatureAction" name="ReadStructuralFeatureAction">
<ownedComment xmi:id="ReadStructuralFeatureAction-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction">
<body>A read structural feature action is a structural feature action that retrieves the values of a structural feature.</body>
</ownedComment>
<ownedRule xmi:id="ReadStructuralFeatureAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadStructuralFeatureAction">
<ownedComment xmi:id="ReadStructuralFeatureAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-type_and_ordering">
<body>The type and ordering of the result output pin are the same as the type and ordering of the structural feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadStructuralFeatureAction-type_and_ordering-_specification">
<language>OCL</language>
<body>self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadStructuralFeatureAction-multiplicity" name="multiplicity" constrainedElement="ReadStructuralFeatureAction">
<ownedComment xmi:id="ReadStructuralFeatureAction-multiplicity-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-multiplicity">
<body>The multiplicity of the structural feature must be compatible with the multiplicity of the output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadStructuralFeatureAction-multiplicity-_specification">
<language>OCL</language>
<body>self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
<ownedAttribute xmi:id="ReadStructuralFeatureAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readStructuralFeatureAction">
<ownedComment xmi:id="ReadStructuralFeatureAction-result-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadStructuralFeatureAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadStructuralFeatureAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="WriteStructuralFeatureAction" name="WriteStructuralFeatureAction" isAbstract="true">
<ownedComment xmi:id="WriteStructuralFeatureAction-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction">
<body>WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values.</body>
</ownedComment>
<ownedRule xmi:id="WriteStructuralFeatureAction-input_pin" name="input_pin" constrainedElement="WriteStructuralFeatureAction">
<ownedComment xmi:id="WriteStructuralFeatureAction-input_pin-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-input_pin">
<body>The type input pin is the same as the classifier of the structural feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-input_pin-_specification">
<language>OCL</language>
<body>self.value.type = self.structuralFeature.featuringClassifier</body>
</specification>
</ownedRule>
<ownedRule xmi:id="WriteStructuralFeatureAction-multiplicity" name="multiplicity" constrainedElement="WriteStructuralFeatureAction">
<ownedComment xmi:id="WriteStructuralFeatureAction-multiplicity-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-multiplicity">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-multiplicity-_specification">
<language>OCL</language>
<body>self.value.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="WriteStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
<ownedAttribute xmi:id="WriteStructuralFeatureAction-value" name="value" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_value_writeStructuralFeatureAction">
<ownedComment xmi:id="WriteStructuralFeatureAction-value-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-value">
<body>Value to be added or removed from the structural feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="WriteStructuralFeatureAction-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="WriteStructuralFeatureAction-value-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ClearStructuralFeatureAction" name="ClearStructuralFeatureAction">
<ownedComment xmi:id="ClearStructuralFeatureAction-_ownedComment.0" annotatedElement="ClearStructuralFeatureAction">
<body>A clear structural feature action is a structural feature action that removes all values of a structural feature.</body>
</ownedComment>
<generalization xmi:id="ClearStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="RemoveStructuralFeatureValueAction" name="RemoveStructuralFeatureValueAction">
<ownedComment xmi:id="RemoveStructuralFeatureValueAction-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction">
<body>A remove structural feature value action is a write structural feature action that removes values from structural features.</body>
</ownedComment>
<ownedRule xmi:id="RemoveStructuralFeatureValueAction-non_unique_removal" name="non_unique_removal" constrainedElement="RemoveStructuralFeatureValueAction">
<ownedComment xmi:id="RemoveStructuralFeatureValueAction-non_unique_removal-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-non_unique_removal">
<body>Actions removing a value from ordered nonunique structural features must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the action has no removeAt input pin.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="RemoveStructuralFeatureValueAction-non_unique_removal-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="RemoveStructuralFeatureValueAction-_generalization.0" general="WriteStructuralFeatureAction"/>
<ownedAttribute xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates" name="isRemoveDuplicates" type="Boolean">
<ownedComment xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-isRemoveDuplicates">
<body>Specifies whether to remove duplicates of the value in nonunique structural features.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="RemoveStructuralFeatureValueAction-removeAt" name="removeAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_removeAt_removeStructuralFeatureValueAction">
<ownedComment xmi:id="RemoveStructuralFeatureValueAction-removeAt-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-removeAt">
<body>Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RemoveStructuralFeatureValueAction-removeAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="RemoveStructuralFeatureValueAction-removeAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="AddStructuralFeatureValueAction" name="AddStructuralFeatureValueAction">
<ownedComment xmi:id="AddStructuralFeatureValueAction-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction">
<body>An add structural feature value action is a write structural feature action for adding values to a structural feature.</body>
</ownedComment>
<ownedRule xmi:id="AddStructuralFeatureValueAction-unlimited_natural_and_multiplicity" name="unlimited_natural_and_multiplicity" constrainedElement="AddStructuralFeatureValueAction">
<ownedComment xmi:id="AddStructuralFeatureValueAction-unlimited_natural_and_multiplicity-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-unlimited_natural_and_multiplicity">
<body>Actions adding a value to ordered structural features must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AddStructuralFeatureValueAction-unlimited_natural_and_multiplicity-_specification">
<language>OCL</language>
<body>let insertAtPins : Collection = self.insertAt in&#xA;if self.structuralFeature.isOrdered = #false&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin= insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="AddStructuralFeatureValueAction-_generalization.0" general="WriteStructuralFeatureAction"/>
<ownedAttribute xmi:id="AddStructuralFeatureValueAction-isReplaceAll" name="isReplaceAll" type="Boolean">
<ownedComment xmi:id="AddStructuralFeatureValueAction-isReplaceAll-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-isReplaceAll">
<body>Specifies whether existing values of the structural feature of the object should be removed before adding the new value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AddStructuralFeatureValueAction-isReplaceAll-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="AddStructuralFeatureValueAction-insertAt" name="insertAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_insertAt_addStructuralFeatureValueAction">
<ownedComment xmi:id="AddStructuralFeatureValueAction-insertAt-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-insertAt">
<body>Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AddStructuralFeatureValueAction-insertAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="AddStructuralFeatureValueAction-insertAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LinkAction" name="LinkAction" isAbstract="true">
<ownedComment xmi:id="LinkAction-_ownedComment.0" annotatedElement="LinkAction">
<body>LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links.</body>
</ownedComment>
<ownedRule xmi:id="LinkAction-same_association" name="same_association" constrainedElement="LinkAction">
<ownedComment xmi:id="LinkAction-same_association-_ownedComment.0" annotatedElement="LinkAction-same_association">
<body>The association ends of the link end data must all be from the same association and include all and only the association ends of that association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-same_association-_specification">
<language>OCL</language>
<body>self.endData->collect(end) = self.association()->collect(connection))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkAction-not_static" name="not_static" constrainedElement="LinkAction">
<ownedComment xmi:id="LinkAction-not_static-_ownedComment.0" annotatedElement="LinkAction-not_static">
<body>The association ends of the link end data must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-not_static-_specification">
<language>OCL</language>
<body>self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkAction-same_pins" name="same_pins" constrainedElement="LinkAction">
<ownedComment xmi:id="LinkAction-same_pins-_ownedComment.0" annotatedElement="LinkAction-same_pins">
<body>The input pins of the action are the same as the pins of the link end data and insertion pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-same_pins-_specification">
<language>OCL</language>
<body>self.input->asSet() =&#xA;let ledpins : Set = self.endData->collect(value) in&#xA;if self.oclIsKindOf(LinkEndCreationData)&#xA;then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt)&#xA;else ledpins&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="LinkAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="LinkAction-endData" name="endData" type="LinkEndData" aggregation="composite" association="A_endData_linkAction">
<ownedComment xmi:id="LinkAction-endData-_ownedComment.0" annotatedElement="LinkAction-endData">
<body>Data identifying one end of a link by the objects on its ends and qualifiers.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkAction-endData-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkAction-endData-_lowerValue" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="LinkAction-inputValue" name="inputValue" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_inputValue_linkAction">
<ownedComment xmi:id="LinkAction-inputValue-_ownedComment.0" annotatedElement="LinkAction-inputValue">
<body>Pins taking end objects and qualifier values as input.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkAction-inputValue-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkAction-inputValue-_lowerValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="LinkAction-association" name="association" isQuery="true" bodyCondition="LinkAction-association-spec">
<ownedComment xmi:id="LinkAction-association-_ownedComment.0" annotatedElement="LinkAction-association">
<body>The association operates on LinkAction. It returns the association of the action.</body>
</ownedComment>
<ownedRule xmi:id="LinkAction-association-spec" name="spec" constrainedElement="LinkAction-association">
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-association-spec-_specification">
<language>OCL</language>
<body>result = self.endData->asSequence().first().end.association</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="LinkAction-association-_ownedParameter.0" type="Association" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadLinkAction" name="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-_ownedComment.0" annotatedElement="ReadLinkAction">
<body>A read link action is a link action that navigates across associations to retrieve objects on one end.</body>
</ownedComment>
<ownedRule xmi:id="ReadLinkAction-one_open_end" name="one_open_end" constrainedElement="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-one_open_end-_ownedComment.0" annotatedElement="ReadLinkAction-one_open_end">
<body>Exactly one link-end data specification (the 'open' end) must not have an end object input pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-one_open_end-_specification">
<language>OCL</language>
<body>self.endData->select(ed | ed.value->size() = 0)->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadLinkAction-type_and_ordering">
<body>The type and ordering of the result output pin are same as the type and ordering of the open association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-type_and_ordering-_specification">
<language>OCL</language>
<body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;self.result.type = openend.type&#xA;and self.result.ordering = openend.ordering&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkAction-compatible_multiplicity" name="compatible_multiplicity" constrainedElement="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-compatible_multiplicity-_ownedComment.0" annotatedElement="ReadLinkAction-compatible_multiplicity">
<body>The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-compatible_multiplicity-_specification">
<language>OCL</language>
<body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkAction-navigable_open_end" name="navigable_open_end" constrainedElement="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-navigable_open_end-_ownedComment.0" annotatedElement="ReadLinkAction-navigable_open_end">
<body>The open end must be navigable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-navigable_open_end-_specification">
<language>OCL</language>
<body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkAction-visibility" name="visibility" constrainedElement="ReadLinkAction">
<ownedComment xmi:id="ReadLinkAction-visibility-_ownedComment.0" annotatedElement="ReadLinkAction-visibility">
<body>Visibility of the open end must allow access to the object performing the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-visibility-_specification">
<language>OCL</language>
<body>let host : Classifier = self.context in&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.visibility = #public&#xA;or self.endData->exists(oed | not oed.end = openend&#xA;and (host = oed.end.participant&#xA;or (openend.visibility = #protected&#xA;and host.allSupertypes->includes(oed.end.participant))))&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadLinkAction-_generalization.0" general="LinkAction"/>
<ownedAttribute xmi:id="ReadLinkAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkAction">
<ownedComment xmi:id="ReadLinkAction-result-_ownedComment.0" annotatedElement="ReadLinkAction-result">
<body>The pin on which are put the objects participating in the association at the end not specified by the inputs.&#xD;
</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LinkEndCreationData" name="LinkEndCreationData">
<ownedComment xmi:id="LinkEndCreationData-_ownedComment.0" annotatedElement="LinkEndCreationData">
<body>A link end creation data is not an action. It is an element that identifies links. It identifies one end of a link to be created by a create link action.</body>
</ownedComment>
<ownedRule xmi:id="LinkEndCreationData-create_link_action" name="create_link_action" constrainedElement="LinkEndCreationData">
<ownedComment xmi:id="LinkEndCreationData-create_link_action-_ownedComment.0" annotatedElement="LinkEndCreationData-create_link_action">
<body>LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndCreationData-create_link_action-_specification">
<language>OCL</language>
<body>self.LinkAction.oclIsKindOf(CreateLinkAction)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndCreationData-single_input_pin" name="single_input_pin" constrainedElement="LinkEndCreationData">
<ownedComment xmi:id="LinkEndCreationData-single_input_pin-_ownedComment.0" annotatedElement="LinkEndCreationData-single_input_pin">
<body>Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndCreationData-single_input_pin-_specification">
<language>OCL</language>
<body>let insertAtPins : Collection = self.insertAt in&#xA;if self.end.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAts->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="LinkEndCreationData-_generalization.0" general="LinkEndData"/>
<ownedAttribute xmi:id="LinkEndCreationData-isReplaceAll" name="isReplaceAll" type="Boolean">
<ownedComment xmi:id="LinkEndCreationData-isReplaceAll-_ownedComment.0" annotatedElement="LinkEndCreationData-isReplaceAll">
<body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LinkEndCreationData-isReplaceAll-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="LinkEndCreationData-insertAt" name="insertAt" type="InputPin" association="A_insertAt_linkEndCreationData">
<ownedComment xmi:id="LinkEndCreationData-insertAt-_ownedComment.0" annotatedElement="LinkEndCreationData-insertAt">
<body>Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndCreationData-insertAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndCreationData-insertAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CreateLinkAction" name="CreateLinkAction">
<ownedComment xmi:id="CreateLinkAction-_ownedComment.0" annotatedElement="CreateLinkAction">
<body>A create link action is a write link action for creating links.</body>
</ownedComment>
<ownedRule xmi:id="CreateLinkAction-association_not_abstract" name="association_not_abstract" constrainedElement="CreateLinkAction">
<ownedComment xmi:id="CreateLinkAction-association_not_abstract-_ownedComment.0" annotatedElement="CreateLinkAction-association_not_abstract">
<body>The association cannot be an abstract classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkAction-association_not_abstract-_specification">
<language>OCL</language>
<body>self.association().isAbstract = #false</body>
</specification>
</ownedRule>
<generalization xmi:id="CreateLinkAction-_generalization.0" general="WriteLinkAction"/>
<ownedAttribute xmi:id="CreateLinkAction-endData" name="endData" type="LinkEndCreationData" aggregation="composite" redefinedProperty="LinkAction-endData" association="A_endData_createLinkAction">
<ownedComment xmi:id="CreateLinkAction-endData-_ownedComment.0" annotatedElement="CreateLinkAction-endData">
<body>Specifies ends of association and inputs.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CreateLinkAction-endData-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CreateLinkAction-endData-_lowerValue" value="2"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DestroyLinkAction" name="DestroyLinkAction">
<ownedComment xmi:id="DestroyLinkAction-_ownedComment.0" annotatedElement="DestroyLinkAction">
<body>A destroy link action is a write link action that destroys links and link objects.</body>
</ownedComment>
<generalization xmi:id="DestroyLinkAction-_generalization.0" general="WriteLinkAction"/>
<ownedAttribute xmi:id="DestroyLinkAction-endData" name="endData" type="LinkEndDestructionData" aggregation="composite" redefinedProperty="LinkAction-endData" association="A_endData_destroyLinkAction">
<ownedComment xmi:id="DestroyLinkAction-endData-_ownedComment.0" annotatedElement="DestroyLinkAction-endData">
<body>Specifies ends of association and inputs.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DestroyLinkAction-endData-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DestroyLinkAction-endData-_lowerValue" value="2"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="WriteLinkAction" name="WriteLinkAction" isAbstract="true">
<ownedComment xmi:id="WriteLinkAction-_ownedComment.0" annotatedElement="WriteLinkAction">
<body>WriteLinkAction is an abstract class for link actions that create and destroy links.</body>
</ownedComment>
<ownedRule xmi:id="WriteLinkAction-allow_access" name="allow_access" constrainedElement="WriteLinkAction">
<ownedComment xmi:id="WriteLinkAction-allow_access-_ownedComment.0" annotatedElement="WriteLinkAction-allow_access">
<body>The visibility of at least one end must allow access to the class using the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="WriteLinkAction-allow_access-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="WriteLinkAction-_generalization.0" general="LinkAction"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ClearAssociationAction" name="ClearAssociationAction">
<ownedComment xmi:id="ClearAssociationAction-_ownedComment.0" annotatedElement="ClearAssociationAction">
<body>A clear association action is an action that destroys all links of an association in which a particular object participates.</body>
</ownedComment>
<ownedRule xmi:id="ClearAssociationAction-same_type" name="same_type" constrainedElement="ClearAssociationAction">
<ownedComment xmi:id="ClearAssociationAction-same_type-_ownedComment.0" annotatedElement="ClearAssociationAction-same_type">
<body>The type of the input pin must be the same as the type of at least one of the association ends of the association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ClearAssociationAction-same_type-_specification">
<language>OCL</language>
<body>self.association->exists(end.type = self.object.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ClearAssociationAction-multiplicity" name="multiplicity" constrainedElement="ClearAssociationAction">
<ownedComment xmi:id="ClearAssociationAction-multiplicity-_ownedComment.0" annotatedElement="ClearAssociationAction-multiplicity">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ClearAssociationAction-multiplicity-_specification">
<language>OCL</language>
<body>self.object.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="ClearAssociationAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ClearAssociationAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_clearAssociationAction">
<ownedComment xmi:id="ClearAssociationAction-object-_ownedComment.0" annotatedElement="ClearAssociationAction-object">
<body>Gives the input pin from which is obtained the object whose participation in the association is to be cleared.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ClearAssociationAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ClearAssociationAction-object-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ClearAssociationAction-association" name="association" type="Association" association="A_association_clearAssociationAction">
<ownedComment xmi:id="ClearAssociationAction-association-_ownedComment.0" annotatedElement="ClearAssociationAction-association">
<body>Association to be cleared.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ClearAssociationAction-association-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ClearAssociationAction-association-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="BroadcastSignalAction" name="BroadcastSignalAction">
<ownedComment xmi:id="BroadcastSignalAction-_ownedComment.0" annotatedElement="BroadcastSignalAction">
<body>A broadcast signal action is an action that transmits a signal instance to all the potential target objects in the system, which may cause the firing of a state machine transitions or the execution of associated activities of a target object. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately after the signals are sent out. It does not wait for receipt. Any reply messages are ignored and are not transmitted to the requestor.</body>
</ownedComment>
<ownedRule xmi:id="BroadcastSignalAction-number_and_order" name="number_and_order" constrainedElement="BroadcastSignalAction">
<ownedComment xmi:id="BroadcastSignalAction-number_and_order-_ownedComment.0" annotatedElement="BroadcastSignalAction-number_and_order">
<body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="BroadcastSignalAction-number_and_order-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="BroadcastSignalAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="BroadcastSignalAction">
<ownedComment xmi:id="BroadcastSignalAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="BroadcastSignalAction-type_ordering_multiplicity">
<body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="BroadcastSignalAction-type_ordering_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="BroadcastSignalAction-_generalization.0" general="InvocationAction"/>
<ownedAttribute xmi:id="BroadcastSignalAction-signal" name="signal" type="Signal" association="A_signal_broadcastSignalAction">
<ownedComment xmi:id="BroadcastSignalAction-signal-_ownedComment.0" annotatedElement="BroadcastSignalAction-signal">
<body>The specification of signal object transmitted to the target objects.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BroadcastSignalAction-signal-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="BroadcastSignalAction-signal-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="SendObjectAction" name="SendObjectAction">
<ownedComment xmi:id="SendObjectAction-_ownedComment.0" annotatedElement="SendObjectAction">
<body>A send object action is an action that transmits an object to the target object, where it may invoke behavior such as the firing of state machine transitions or the execution of an activity. The value of the object is available to the execution of invoked behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor.</body>
</ownedComment>
<generalization xmi:id="SendObjectAction-_generalization.0" general="InvocationAction"/>
<ownedAttribute xmi:id="SendObjectAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_sendObjectAction">
<ownedComment xmi:id="SendObjectAction-target-_ownedComment.0" annotatedElement="SendObjectAction-target">
<body>The target object to which the object is sent.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendObjectAction-target-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendObjectAction-target-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="SendObjectAction-request" name="request" type="InputPin" aggregation="composite" redefinedProperty="InvocationAction-argument" association="A_request_sendObjectAction">
<ownedComment xmi:id="SendObjectAction-request-_ownedComment.0" annotatedElement="SendObjectAction-request">
<body>The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SendObjectAction-request-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="SendObjectAction-request-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LinkEndDestructionData" name="LinkEndDestructionData">
<ownedComment xmi:id="LinkEndDestructionData-_ownedComment.0" annotatedElement="LinkEndDestructionData">
<body>A link end destruction data is not an action. It is an element that identifies links. It identifies one end of a link to be destroyed by destroy link action.</body>
</ownedComment>
<ownedRule xmi:id="LinkEndDestructionData-destroy_link_action" name="destroy_link_action" constrainedElement="LinkEndDestructionData">
<ownedComment xmi:id="LinkEndDestructionData-destroy_link_action-_ownedComment.0" annotatedElement="LinkEndDestructionData-destroy_link_action">
<body>LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndDestructionData-destroy_link_action-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndDestructionData-unlimited_natural_and_multiplicity" name="unlimited_natural_and_multiplicity" constrainedElement="LinkEndDestructionData">
<ownedComment xmi:id="LinkEndDestructionData-unlimited_natural_and_multiplicity-_ownedComment.0" annotatedElement="LinkEndDestructionData-unlimited_natural_and_multiplicity">
<body>LinkEndDestructionData for ordered nonunique association ends must have a single destroyAt input pin if isDestroyDuplicates is false. It must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no input pin for the removal position.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndDestructionData-unlimited_natural_and_multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="LinkEndDestructionData-_generalization.0" general="LinkEndData"/>
<ownedAttribute xmi:id="LinkEndDestructionData-isDestroyDuplicates" name="isDestroyDuplicates" type="Boolean">
<ownedComment xmi:id="LinkEndDestructionData-isDestroyDuplicates-_ownedComment.0" annotatedElement="LinkEndDestructionData-isDestroyDuplicates">
<body>Specifies whether to destroy duplicates of the value in nonunique association ends.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LinkEndDestructionData-isDestroyDuplicates-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="LinkEndDestructionData-destroyAt" name="destroyAt" type="InputPin" association="A_destroyAt_linkEndDestructionData">
<ownedComment xmi:id="LinkEndDestructionData-destroyAt-_ownedComment.0" annotatedElement="LinkEndDestructionData-destroyAt">
<body>Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndDestructionData-destroyAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndDestructionData-destroyAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ValueSpecificationAction" name="ValueSpecificationAction">
<ownedComment xmi:id="ValueSpecificationAction-_ownedComment.0" annotatedElement="ValueSpecificationAction">
<body>A value specification action is an action that evaluates a value specification.</body>
</ownedComment>
<ownedRule xmi:id="ValueSpecificationAction-compatible_type" name="compatible_type" constrainedElement="ValueSpecificationAction">
<ownedComment xmi:id="ValueSpecificationAction-compatible_type-_ownedComment.0" annotatedElement="ValueSpecificationAction-compatible_type">
<body>The type of value specification must be compatible with the type of the result pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecificationAction-compatible_type-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ValueSpecificationAction-multiplicity" name="multiplicity" constrainedElement="ValueSpecificationAction">
<ownedComment xmi:id="ValueSpecificationAction-multiplicity-_ownedComment.0" annotatedElement="ValueSpecificationAction-multiplicity">
<body>The multiplicity of the result pin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecificationAction-multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ValueSpecificationAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ValueSpecificationAction-value" name="value" type="ValueSpecification" aggregation="composite" association="A_value_valueSpecificationAction">
<ownedComment xmi:id="ValueSpecificationAction-value-_ownedComment.0" annotatedElement="ValueSpecificationAction-value">
<body>Value specification to be evaluated.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ValueSpecificationAction-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecificationAction-value-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ValueSpecificationAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_valueSpecificationAction">
<ownedComment xmi:id="ValueSpecificationAction-result-_ownedComment.0" annotatedElement="ValueSpecificationAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ValueSpecificationAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecificationAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifier_createObjectAction" name="A_classifier_createObjectAction" visibility="private" memberEnd="CreateObjectAction-classifier A_classifier_createObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_classifier_createObjectAction-_ownedEnd.0" type="CreateObjectAction" association="A_classifier_createObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_createObjectAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_createObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_createObjectAction" name="A_result_createObjectAction" visibility="private" memberEnd="CreateObjectAction-result A_result_createObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_createObjectAction-_ownedEnd.0" type="CreateObjectAction" association="A_result_createObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_createObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_createObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_destroyObjectAction" name="A_target_destroyObjectAction" visibility="private" memberEnd="DestroyObjectAction-target A_target_destroyObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_target_destroyObjectAction-_ownedEnd.0" type="DestroyObjectAction" association="A_target_destroyObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_destroyObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_destroyObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_first_testIdentityAction" name="A_first_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-first A_first_testIdentityAction-_ownedEnd.0">
<ownedEnd xmi:id="A_first_testIdentityAction-_ownedEnd.0" type="TestIdentityAction" association="A_first_testIdentityAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_first_testIdentityAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_first_testIdentityAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_second_testIdentityAction" name="A_second_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-second A_second_testIdentityAction-_ownedEnd.0">
<ownedEnd xmi:id="A_second_testIdentityAction-_ownedEnd.0" type="TestIdentityAction" association="A_second_testIdentityAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_second_testIdentityAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_second_testIdentityAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_testIdentityAction" name="A_result_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-result A_result_testIdentityAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_testIdentityAction-_ownedEnd.0" type="TestIdentityAction" association="A_result_testIdentityAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_testIdentityAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_testIdentityAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readSelfAction" name="A_result_readSelfAction" visibility="private" memberEnd="ReadSelfAction-result A_result_readSelfAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readSelfAction-_ownedEnd.0" type="ReadSelfAction" association="A_result_readSelfAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readSelfAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readSelfAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_structuralFeatureAction_structuralFeature" name="A_structuralFeatureAction_structuralFeature" visibility="private" memberEnd="A_structuralFeatureAction_structuralFeature-_ownedEnd.0 StructuralFeatureAction-structuralFeature">
<ownedEnd xmi:id="A_structuralFeatureAction_structuralFeature-_ownedEnd.0" type="StructuralFeatureAction" association="A_structuralFeatureAction_structuralFeature">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_structuralFeatureAction_structuralFeature-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_structuralFeatureAction_structuralFeature-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_structuralFeatureAction" name="A_object_structuralFeatureAction" visibility="private" memberEnd="StructuralFeatureAction-object A_object_structuralFeatureAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_structuralFeatureAction-_ownedEnd.0" type="StructuralFeatureAction" association="A_object_structuralFeatureAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_structuralFeatureAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_structuralFeatureAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readStructuralFeatureAction" name="A_result_readStructuralFeatureAction" visibility="private" memberEnd="ReadStructuralFeatureAction-result A_result_readStructuralFeatureAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readStructuralFeatureAction-_ownedEnd.0" type="ReadStructuralFeatureAction" association="A_result_readStructuralFeatureAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readStructuralFeatureAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readStructuralFeatureAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_writeStructuralFeatureAction" name="A_value_writeStructuralFeatureAction" visibility="private" memberEnd="WriteStructuralFeatureAction-value A_value_writeStructuralFeatureAction-_ownedEnd.0">
<ownedEnd xmi:id="A_value_writeStructuralFeatureAction-_ownedEnd.0" type="WriteStructuralFeatureAction" association="A_value_writeStructuralFeatureAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_writeStructuralFeatureAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_writeStructuralFeatureAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_addStructuralFeatureValueAction" name="A_insertAt_addStructuralFeatureValueAction" visibility="private" memberEnd="AddStructuralFeatureValueAction-insertAt A_insertAt_addStructuralFeatureValueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_insertAt_addStructuralFeatureValueAction-_ownedEnd.0" type="AddStructuralFeatureValueAction" association="A_insertAt_addStructuralFeatureValueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_insertAt_addStructuralFeatureValueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_addStructuralFeatureValueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_endData_linkAction" name="A_endData_linkAction" visibility="private" memberEnd="LinkAction-endData A_endData_linkAction-_ownedEnd.0">
<ownedEnd xmi:id="A_endData_linkAction-_ownedEnd.0" type="LinkAction" association="A_endData_linkAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endData_linkAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endData_linkAction-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_linkEndData" name="A_value_linkEndData" visibility="private" memberEnd="LinkEndData-value A_value_linkEndData-_ownedEnd.0">
<ownedEnd xmi:id="A_value_linkEndData-_ownedEnd.0" type="LinkEndData" association="A_value_linkEndData">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_linkEndData-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_linkEndData-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_end_linkEndData" name="A_end_linkEndData" visibility="private" memberEnd="LinkEndData-end A_end_linkEndData-_ownedEnd.0">
<ownedEnd xmi:id="A_end_linkEndData-_ownedEnd.0" type="LinkEndData" association="A_end_linkEndData">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_end_linkEndData-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_linkEndData-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkAction" name="A_result_readLinkAction" visibility="private" memberEnd="ReadLinkAction-result A_result_readLinkAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readLinkAction-_ownedEnd.0" type="ReadLinkAction" association="A_result_readLinkAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readLinkAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_linkEndCreationData" name="A_insertAt_linkEndCreationData" visibility="private" memberEnd="LinkEndCreationData-insertAt A_insertAt_linkEndCreationData-_ownedEnd.0">
<ownedEnd xmi:id="A_insertAt_linkEndCreationData-_ownedEnd.0" type="LinkEndCreationData" association="A_insertAt_linkEndCreationData">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_insertAt_linkEndCreationData-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_linkEndCreationData-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_endData_createLinkAction" name="A_endData_createLinkAction" visibility="private" memberEnd="CreateLinkAction-endData A_endData_createLinkAction-_ownedEnd.0">
<ownedEnd xmi:id="A_endData_createLinkAction-_ownedEnd.0" type="CreateLinkAction" association="A_endData_createLinkAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endData_createLinkAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endData_createLinkAction-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_clearAssociationAction" name="A_object_clearAssociationAction" visibility="private" memberEnd="ClearAssociationAction-object A_object_clearAssociationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_clearAssociationAction-_ownedEnd.0" type="ClearAssociationAction" association="A_object_clearAssociationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_clearAssociationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_clearAssociationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_association_clearAssociationAction" name="A_association_clearAssociationAction" visibility="private" memberEnd="ClearAssociationAction-association A_association_clearAssociationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_association_clearAssociationAction-_ownedEnd.0" type="ClearAssociationAction" association="A_association_clearAssociationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_association_clearAssociationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_association_clearAssociationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_target_sendObjectAction" name="A_target_sendObjectAction" visibility="private" memberEnd="SendObjectAction-target A_target_sendObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_target_sendObjectAction-_ownedEnd.0" type="SendObjectAction" association="A_target_sendObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_sendObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_sendObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_request_sendObjectAction" name="A_request_sendObjectAction" visibility="private" memberEnd="SendObjectAction-request A_request_sendObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_request_sendObjectAction-_ownedEnd.0" type="SendObjectAction" association="A_request_sendObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_request_sendObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_request_sendObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_signal_broadcastSignalAction" name="A_signal_broadcastSignalAction" visibility="private" memberEnd="BroadcastSignalAction-signal A_signal_broadcastSignalAction-_ownedEnd.0">
<ownedEnd xmi:id="A_signal_broadcastSignalAction-_ownedEnd.0" type="BroadcastSignalAction" association="A_signal_broadcastSignalAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_broadcastSignalAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_broadcastSignalAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_removeAt_removeStructuralFeatureValueAction" name="A_removeAt_removeStructuralFeatureValueAction" visibility="private" memberEnd="RemoveStructuralFeatureValueAction-removeAt A_removeAt_removeStructuralFeatureValueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_removeAt_removeStructuralFeatureValueAction-_ownedEnd.0" type="RemoveStructuralFeatureValueAction" association="A_removeAt_removeStructuralFeatureValueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_removeAt_removeStructuralFeatureValueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_removeAt_removeStructuralFeatureValueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_destroyAt_linkEndDestructionData" name="A_destroyAt_linkEndDestructionData" visibility="private" memberEnd="LinkEndDestructionData-destroyAt A_destroyAt_linkEndDestructionData-_ownedEnd.0">
<ownedEnd xmi:id="A_destroyAt_linkEndDestructionData-_ownedEnd.0" type="LinkEndDestructionData" association="A_destroyAt_linkEndDestructionData">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_destroyAt_linkEndDestructionData-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_destroyAt_linkEndDestructionData-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_endData_destroyLinkAction" name="A_endData_destroyLinkAction" visibility="private" memberEnd="DestroyLinkAction-endData A_endData_destroyLinkAction-_ownedEnd.0">
<ownedEnd xmi:id="A_endData_destroyLinkAction-_ownedEnd.0" type="DestroyLinkAction" association="A_endData_destroyLinkAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endData_destroyLinkAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endData_destroyLinkAction-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_valueSpecificationAction" name="A_value_valueSpecificationAction" visibility="private" memberEnd="ValueSpecificationAction-value A_value_valueSpecificationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_value_valueSpecificationAction-_ownedEnd.0" type="ValueSpecificationAction" association="A_value_valueSpecificationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_valueSpecificationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_valueSpecificationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_valueSpecificationAction" name="A_result_valueSpecificationAction" visibility="private" memberEnd="ValueSpecificationAction-result A_result_valueSpecificationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_valueSpecificationAction-_ownedEnd.0" type="ValueSpecificationAction" association="A_result_valueSpecificationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_valueSpecificationAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_valueSpecificationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_inputValue_linkAction" name="A_inputValue_linkAction" visibility="private" memberEnd="LinkAction-inputValue A_inputValue_linkAction-_ownedEnd.0">
<ownedEnd xmi:id="A_inputValue_linkAction-_ownedEnd.0" type="LinkAction" association="A_inputValue_linkAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inputValue_linkAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inputValue_linkAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TimeExpression" name="TimeExpression">
<ownedComment xmi:id="TimeExpression-_ownedComment.0" annotatedElement="TimeExpression">
<body>A time expression defines a value specification that represents a time value.</body>
</ownedComment>
<generalization xmi:id="TimeExpression-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="TimeExpression-expr" name="expr" type="ValueSpecification" association="A_expr_timeExpression">
<ownedComment xmi:id="TimeExpression-expr-_ownedComment.0" annotatedElement="TimeExpression-expr">
<body>The value of the time expression.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeExpression-expr-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeExpression-expr-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="TimeExpression-observation" name="observation" type="Observation" association="A_observation_timeExpression">
<ownedComment xmi:id="TimeExpression-observation-_ownedComment.0" annotatedElement="TimeExpression-observation">
<body>Refers to the time and duration observations that are involved in expr.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeExpression-observation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeExpression-observation-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="TimeExpression-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="TimeExpression-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Duration" name="Duration">
<ownedComment xmi:id="Duration-_ownedComment.0" annotatedElement="Duration">
<body>Duration defines a value specification that specifies the temporal distance between two time instants.</body>
</ownedComment>
<generalization xmi:id="Duration-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="Duration-expr" name="expr" type="ValueSpecification" association="A_expr_duration">
<ownedComment xmi:id="Duration-expr-_ownedComment.0" annotatedElement="Duration-expr">
<body>The value of the Duration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Duration-expr-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Duration-expr-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Duration-observation" name="observation" type="Observation" association="A_observation_duration">
<ownedComment xmi:id="Duration-observation-_ownedComment.0" annotatedElement="Duration-observation">
<body>Refers to the time and duration observations that are involved in expr.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Duration-observation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Duration-observation-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Duration-stringValue" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="Duration-stringValue-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DurationInterval" name="DurationInterval">
<ownedComment xmi:id="DurationInterval-_ownedComment.0" annotatedElement="DurationInterval">
<body>A duration interval defines the range between two durations.</body>
</ownedComment>
<generalization xmi:id="DurationInterval-_generalization.0" general="Interval"/>
<ownedAttribute xmi:id="DurationInterval-min" name="min" type="Duration" redefinedProperty="Interval-min" association="A_min_durationInterval">
<ownedComment xmi:id="DurationInterval-min-_ownedComment.0" annotatedElement="DurationInterval-min">
<body>Refers to the Duration denoting the minimum value of the range.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="DurationInterval-max" name="max" type="Duration" redefinedProperty="Interval-max" association="A_max_durationInterval">
<ownedComment xmi:id="DurationInterval-max-_ownedComment.0" annotatedElement="DurationInterval-max">
<body>Refers to the Duration denoting the maximum value of the range.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TimeConstraint" name="TimeConstraint">
<ownedComment xmi:id="TimeConstraint-_ownedComment.0" annotatedElement="TimeConstraint">
<body>A time constraint is a constraint that refers to a time interval.</body>
</ownedComment>
<generalization xmi:id="TimeConstraint-_generalization.0" general="IntervalConstraint"/>
<ownedAttribute xmi:id="TimeConstraint-specification" name="specification" type="TimeInterval" aggregation="composite" redefinedProperty="IntervalConstraint-specification" association="A_specification_timeConstraint">
<ownedComment xmi:id="TimeConstraint-specification-_ownedComment.0" annotatedElement="TimeConstraint-specification">
<body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeConstraint-specification-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeConstraint-specification-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="TimeConstraint-firstEvent" name="firstEvent" type="Boolean">
<ownedComment xmi:id="TimeConstraint-firstEvent-_ownedComment.0" annotatedElement="TimeConstraint-firstEvent">
<body>The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeConstraint-firstEvent-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeConstraint-firstEvent-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeConstraint-firstEvent-_defaultValue" type="Boolean" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TimeInterval" name="TimeInterval">
<ownedComment xmi:id="TimeInterval-_ownedComment.0" annotatedElement="TimeInterval">
<body>A time interval defines the range between two time expressions.</body>
</ownedComment>
<generalization xmi:id="TimeInterval-_generalization.0" general="Interval"/>
<ownedAttribute xmi:id="TimeInterval-max" name="max" type="TimeExpression" redefinedProperty="Interval-max" association="A_max_timeInterval">
<ownedComment xmi:id="TimeInterval-max-_ownedComment.0" annotatedElement="TimeInterval-max">
<body>Refers to the TimeExpression denoting the maximum value of the range.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="TimeInterval-min" name="min" type="TimeExpression" redefinedProperty="Interval-min" association="A_min_timeInterval">
<ownedComment xmi:id="TimeInterval-min-_ownedComment.0" annotatedElement="TimeInterval-min">
<body>Refers to the TimeExpression denoting the minimum value of the range.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DurationConstraint" name="DurationConstraint">
<ownedComment xmi:id="DurationConstraint-_ownedComment.0" annotatedElement="DurationConstraint">
<body>A duration constraint is a constraint that refers to a duration interval.</body>
</ownedComment>
<ownedRule xmi:id="DurationConstraint-first_event_multiplicity" name="first_event_multiplicity" constrainedElement="DurationConstraint">
<ownedComment xmi:id="DurationConstraint-first_event_multiplicity-_ownedComment.0" annotatedElement="DurationConstraint-first_event_multiplicity">
<body>The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DurationConstraint-first_event_multiplicity-_specification">
<language>OCL</language>
<body>if (constrainedElement->size() =2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
</specification>
</ownedRule>
<generalization xmi:id="DurationConstraint-_generalization.0" general="IntervalConstraint"/>
<ownedAttribute xmi:id="DurationConstraint-specification" name="specification" type="DurationInterval" aggregation="composite" redefinedProperty="IntervalConstraint-specification" association="A_specification_durationConstraint">
<ownedComment xmi:id="DurationConstraint-specification-_ownedComment.0" annotatedElement="DurationConstraint-specification">
<body>The interval constraining the duration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationConstraint-specification-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationConstraint-specification-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="DurationConstraint-firstEvent" name="firstEvent" type="Boolean">
<ownedComment xmi:id="DurationConstraint-firstEvent-_ownedComment.0" annotatedElement="DurationConstraint-firstEvent">
<body>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]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationConstraint-firstEvent-_upperValue" value="2"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationConstraint-firstEvent-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DurationConstraint-firstEvent-_defaultValue" type="Boolean" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="IntervalConstraint" name="IntervalConstraint">
<ownedComment xmi:id="IntervalConstraint-_ownedComment.0" annotatedElement="IntervalConstraint">
<body>An interval constraint is a constraint that refers to an interval.</body>
</ownedComment>
<generalization xmi:id="IntervalConstraint-_generalization.0" general="Constraint"/>
<ownedAttribute xmi:id="IntervalConstraint-specification" name="specification" type="Interval" aggregation="composite" redefinedProperty="Constraint-specification" association="A_specification_intervalConstraint">
<ownedComment xmi:id="IntervalConstraint-specification-_ownedComment.0" annotatedElement="IntervalConstraint-specification">
<body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="IntervalConstraint-specification-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="IntervalConstraint-specification-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Interval" name="Interval">
<ownedComment xmi:id="Interval-_ownedComment.0" annotatedElement="Interval">
<body>An interval defines the range between two value specifications.</body>
</ownedComment>
<generalization xmi:id="Interval-_generalization.0" general="ValueSpecification"/>
<ownedAttribute xmi:id="Interval-min" name="min" type="ValueSpecification" association="A_min_interval">
<ownedComment xmi:id="Interval-min-_ownedComment.0" annotatedElement="Interval-min">
<body>Refers to the ValueSpecification denoting the minimum value of the range.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interval-min-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interval-min-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Interval-max" name="max" type="ValueSpecification" association="A_max_interval">
<ownedComment xmi:id="Interval-max-_ownedComment.0" annotatedElement="Interval-max">
<body>Refers to the ValueSpecification denoting the maximum value of the range.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interval-max-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interval-max-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Observation" name="Observation" isAbstract="true">
<ownedComment xmi:id="Observation-_ownedComment.0" annotatedElement="Observation">
<body>Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way.</body>
</ownedComment>
<generalization xmi:id="Observation-_generalization.0" general="PackageableElement"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TimeObservation" name="TimeObservation">
<ownedComment xmi:id="TimeObservation-_ownedComment.0" annotatedElement="TimeObservation">
<body>A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited.</body>
</ownedComment>
<generalization xmi:id="TimeObservation-_generalization.0" general="Observation"/>
<ownedAttribute xmi:id="TimeObservation-event" name="event" type="NamedElement" association="A_event_timeObservation">
<ownedComment xmi:id="TimeObservation-event-_ownedComment.0" annotatedElement="TimeObservation-event">
<body>The observation is determined by the entering or exiting of the event element during execution.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeObservation-event-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeObservation-event-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="TimeObservation-firstEvent" name="firstEvent" type="Boolean">
<ownedComment xmi:id="TimeObservation-firstEvent-_ownedComment.0" annotatedElement="TimeObservation-firstEvent">
<body>The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeObservation-firstEvent-_defaultValue" type="Boolean" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="DurationObservation" name="DurationObservation">
<ownedComment xmi:id="DurationObservation-_ownedComment.0" annotatedElement="DurationObservation">
<body>A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited.</body>
</ownedComment>
<ownedRule xmi:id="DurationObservation-first_event_multiplicity" name="first_event_multiplicity" constrainedElement="DurationObservation">
<ownedComment xmi:id="DurationObservation-first_event_multiplicity-_ownedComment.0" annotatedElement="DurationObservation-first_event_multiplicity">
<body>The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="DurationObservation-first_event_multiplicity-_specification">
<language>OCL</language>
<body>if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
</specification>
</ownedRule>
<generalization xmi:id="DurationObservation-_generalization.0" general="Observation"/>
<ownedAttribute xmi:id="DurationObservation-event" name="event" type="NamedElement" association="A_event_durationObservation">
<ownedComment xmi:id="DurationObservation-event-_ownedComment.0" annotatedElement="DurationObservation-event">
<body>The observation is determined by the entering or exiting of the event element during execution.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationObservation-event-_upperValue" value="2"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationObservation-event-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="DurationObservation-firstEvent" name="firstEvent" type="Boolean">
<ownedComment xmi:id="DurationObservation-firstEvent-_ownedComment.0" annotatedElement="DurationObservation-firstEvent">
<body>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]. Default value is true applied when event[i] refers an element that represents only one time instant.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationObservation-firstEvent-_upperValue" value="2"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationObservation-firstEvent-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DurationObservation-firstEvent-_defaultValue" type="Boolean" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_min_durationInterval" name="A_min_durationInterval" visibility="private" memberEnd="DurationInterval-min A_min_durationInterval-_ownedEnd.0">
<ownedEnd xmi:id="A_min_durationInterval-_ownedEnd.0" type="DurationInterval" association="A_min_durationInterval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_durationInterval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_durationInterval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_max_durationInterval" name="A_max_durationInterval" visibility="private" memberEnd="DurationInterval-max A_max_durationInterval-_ownedEnd.0">
<ownedEnd xmi:id="A_max_durationInterval-_ownedEnd.0" type="DurationInterval" association="A_max_durationInterval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_durationInterval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_durationInterval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_max_timeInterval" name="A_max_timeInterval" visibility="private" memberEnd="TimeInterval-max A_max_timeInterval-_ownedEnd.0">
<ownedEnd xmi:id="A_max_timeInterval-_ownedEnd.0" type="TimeInterval" association="A_max_timeInterval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_timeInterval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_timeInterval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_min_timeInterval" name="A_min_timeInterval" visibility="private" memberEnd="TimeInterval-min A_min_timeInterval-_ownedEnd.0">
<ownedEnd xmi:id="A_min_timeInterval-_ownedEnd.0" type="TimeInterval" association="A_min_timeInterval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_timeInterval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_timeInterval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_specification_timeConstraint" name="A_specification_timeConstraint" visibility="private" memberEnd="TimeConstraint-specification A_specification_timeConstraint-_ownedEnd.0">
<ownedEnd xmi:id="A_specification_timeConstraint-_ownedEnd.0" type="TimeConstraint" association="A_specification_timeConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_specification_timeConstraint-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_timeConstraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_specification_durationConstraint" name="A_specification_durationConstraint" visibility="private" memberEnd="DurationConstraint-specification A_specification_durationConstraint-_ownedEnd.0">
<ownedEnd xmi:id="A_specification_durationConstraint-_ownedEnd.0" type="DurationConstraint" association="A_specification_durationConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_specification_durationConstraint-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_durationConstraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_min_interval" name="A_min_interval" visibility="private" memberEnd="Interval-min A_min_interval-_ownedEnd.0">
<ownedEnd xmi:id="A_min_interval-_ownedEnd.0" type="Interval" association="A_min_interval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_interval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_interval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_max_interval" name="A_max_interval" visibility="private" memberEnd="Interval-max A_max_interval-_ownedEnd.0">
<ownedEnd xmi:id="A_max_interval-_ownedEnd.0" type="Interval" association="A_max_interval">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_interval-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_interval-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_specification_intervalConstraint" name="A_specification_intervalConstraint" visibility="private" memberEnd="IntervalConstraint-specification A_specification_intervalConstraint-_ownedEnd.0">
<ownedEnd xmi:id="A_specification_intervalConstraint-_ownedEnd.0" type="IntervalConstraint" association="A_specification_intervalConstraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_specification_intervalConstraint-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_intervalConstraint-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_observation_duration" name="A_observation_duration" visibility="private" memberEnd="Duration-observation A_observation_duration-_ownedEnd.0">
<ownedEnd xmi:id="A_observation_duration-_ownedEnd.0" type="Duration" association="A_observation_duration">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_observation_duration-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_observation_duration-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_observation_timeExpression" name="A_observation_timeExpression" visibility="private" memberEnd="TimeExpression-observation A_observation_timeExpression-_ownedEnd.0">
<ownedEnd xmi:id="A_observation_timeExpression-_ownedEnd.0" type="TimeExpression" association="A_observation_timeExpression">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_observation_timeExpression-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_observation_timeExpression-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_when_timeEvent" name="A_when_timeEvent" visibility="private" memberEnd="TimeEvent-when A_when_timeEvent-_ownedEnd.0">
<ownedEnd xmi:id="A_when_timeEvent-_ownedEnd.0" type="TimeEvent" association="A_when_timeEvent">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_when_timeEvent-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_when_timeEvent-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_expr_timeExpression" name="A_expr_timeExpression" visibility="private" memberEnd="TimeExpression-expr A_expr_timeExpression-_ownedEnd.0">
<ownedEnd xmi:id="A_expr_timeExpression-_ownedEnd.0" type="TimeExpression" association="A_expr_timeExpression">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_expr_timeExpression-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_expr_timeExpression-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_expr_duration" name="A_expr_duration" visibility="private" memberEnd="Duration-expr A_expr_duration-_ownedEnd.0">
<ownedEnd xmi:id="A_expr_duration-_ownedEnd.0" type="Duration" association="A_expr_duration">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_expr_duration-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_expr_duration-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_event_timeObservation" name="A_event_timeObservation" visibility="private" memberEnd="TimeObservation-event A_event_timeObservation-_ownedEnd.0">
<ownedEnd xmi:id="A_event_timeObservation-_ownedEnd.0" type="TimeObservation" association="A_event_timeObservation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_timeObservation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_timeObservation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_event_durationObservation" name="A_event_durationObservation" visibility="private" memberEnd="DurationObservation-event A_event_durationObservation-_ownedEnd.0">
<ownedEnd xmi:id="A_event_durationObservation-_ownedEnd.0" type="DurationObservation" association="A_event_durationObservation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_durationObservation-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_durationObservation-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InvocationAction" name="InvocationAction" isAbstract="true">
<ownedComment xmi:id="InvocationAction-_ownedComment.0" annotatedElement="InvocationAction">
<body>InvocationAction is an abstract class for the various actions that invoke behavior.</body>
</ownedComment>
<ownedComment xmi:id="InvocationAction-_ownedComment.1" annotatedElement="InvocationAction">
<body>In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.</body>
</ownedComment>
<ownedRule xmi:id="InvocationAction-on_port_receiver" name="on_port_receiver" constrainedElement="InvocationAction">
<ownedComment xmi:id="InvocationAction-on_port_receiver-_ownedComment.0" annotatedElement="InvocationAction-on_port_receiver">
<body>The onPort must be a port on the receiver object.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InvocationAction-on_port_receiver-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="InvocationAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="InvocationAction-argument" name="argument" type="InputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-input" association="A_argument_invocationAction">
<ownedComment xmi:id="InvocationAction-argument-_ownedComment.0" annotatedElement="InvocationAction-argument">
<body>Specification of the ordered set of argument values that appears during execution.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InvocationAction-argument-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InvocationAction-argument-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InvocationAction-onPort" name="onPort" type="Port" association="A_onPort_invocationAction">
<ownedComment xmi:id="InvocationAction-onPort-_ownedComment.0" annotatedElement="InvocationAction-onPort">
<body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InvocationAction-onPort-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InvocationAction-onPort-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Trigger" name="Trigger">
<ownedComment xmi:id="Trigger-_ownedComment.0" annotatedElement="Trigger">
<body>A trigger relates an event to a behavior that may affect an instance of the classifier.</body>
</ownedComment>
<ownedComment xmi:id="Trigger-_ownedComment.1" annotatedElement="Trigger">
<body>A trigger specification may be qualified by the port on which the event occurred.</body>
</ownedComment>
<generalization xmi:id="Trigger-_generalization.0" general="NamedElement"/>
<ownedAttribute xmi:id="Trigger-event" name="event" type="Event" association="A_event_trigger">
<ownedComment xmi:id="Trigger-event-_ownedComment.0" annotatedElement="Trigger-event">
<body>The event that causes the trigger.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Trigger-event-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Trigger-event-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Trigger-port" name="port" type="Port" association="A_port_trigger">
<ownedComment xmi:id="Trigger-port-_ownedComment.0" annotatedElement="Trigger-port">
<body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Trigger-port-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Trigger-port-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_port_trigger" name="A_port_trigger" visibility="private" memberEnd="Trigger-port A_port_trigger-_ownedEnd.0">
<ownedEnd xmi:id="A_port_trigger-_ownedEnd.0" type="Trigger" association="A_port_trigger">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_port_trigger-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_port_trigger-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_onPort_invocationAction" name="A_onPort_invocationAction" visibility="private" memberEnd="InvocationAction-onPort A_onPort_invocationAction-_ownedEnd.0">
<ownedEnd xmi:id="A_onPort_invocationAction-_ownedEnd.0" type="InvocationAction" association="A_onPort_invocationAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_onPort_invocationAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_onPort_invocationAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StateMachine" name="StateMachine">
<ownedComment xmi:id="StateMachine-_ownedComment.0" annotatedElement="StateMachine">
<body>State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine.</body>
</ownedComment>
<ownedRule xmi:id="StateMachine-classifier_context" name="classifier_context" constrainedElement="StateMachine">
<ownedComment xmi:id="StateMachine-classifier_context-_ownedComment.0" annotatedElement="StateMachine-classifier_context">
<body>The classifier context of a state machine cannot be an interface.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-classifier_context-_specification">
<language>OCL</language>
<body>context->notEmpty() implies not context.oclIsKindOf(Interface)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StateMachine-context_classifier" name="context_classifier" constrainedElement="StateMachine">
<ownedComment xmi:id="StateMachine-context_classifier-_ownedComment.0" annotatedElement="StateMachine-context_classifier">
<body>The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-context_classifier-_specification">
<language>OCL</language>
<body>specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StateMachine-connection_points" name="connection_points" constrainedElement="StateMachine">
<ownedComment xmi:id="StateMachine-connection_points-_ownedComment.0" annotatedElement="StateMachine-connection_points">
<body>The connection points of a state machine are pseudostates of kind entry point or exit point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-connection_points-_specification">
<language>OCL</language>
<body>conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StateMachine-method" name="method" constrainedElement="StateMachine">
<ownedComment xmi:id="StateMachine-method-_ownedComment.0" annotatedElement="StateMachine-method">
<body>A state machine as the method for a behavioral feature cannot have entry/exit connection points.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-method-_specification">
<language>OCL</language>
<body>specification->notEmpty() implies connectionPoint->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="StateMachine-_generalization.0" general="Behavior"/>
<ownedAttribute xmi:id="StateMachine-region" name="region" type="Region" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_region_stateMachine">
<ownedComment xmi:id="StateMachine-region-_ownedComment.0" annotatedElement="StateMachine-region">
<body>The regions owned directly by the state machine.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-region-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-region-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="StateMachine-connectionPoint" name="connectionPoint" type="Pseudostate" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_connectionPoint_stateMachine">
<ownedComment xmi:id="StateMachine-connectionPoint-_ownedComment.0" annotatedElement="StateMachine-connectionPoint">
<body>The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-connectionPoint-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-connectionPoint-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="StateMachine-extendedStateMachine" name="extendedStateMachine" type="StateMachine" subsettedProperty="RedefinableElement-redefinedElement" association="A_stateMachine_extendedStateMachine">
<ownedComment xmi:id="StateMachine-extendedStateMachine-_ownedComment.0" annotatedElement="StateMachine-extendedStateMachine">
<body>The state machines of which this is an extension.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-extendedStateMachine-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-extendedStateMachine-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="StateMachine-submachineState" name="submachineState" type="State" association="A_submachineState_submachine">
<ownedComment xmi:id="StateMachine-submachineState-_ownedComment.0" annotatedElement="StateMachine-submachineState">
<body>References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-submachineState-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-submachineState-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="StateMachine-LCA" name="LCA" isQuery="true" bodyCondition="StateMachine-LCA-spec">
<ownedComment xmi:id="StateMachine-LCA-_ownedComment.0" annotatedElement="StateMachine-LCA">
<body>The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.</body>
</ownedComment>
<ownedRule xmi:id="StateMachine-LCA-spec" name="spec" constrainedElement="StateMachine-LCA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-LCA-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="StateMachine-LCA-_ownedParameter.0" type="Namespace" direction="return"/>
<ownedParameter xmi:id="StateMachine-LCA-s1" name="s1" type="State"/>
<ownedParameter xmi:id="StateMachine-LCA-s2" name="s2" type="State"/>
</ownedOperation>
<ownedOperation xmi:id="StateMachine-ancestor" name="ancestor" isQuery="true" bodyCondition="StateMachine-ancestor-spec">
<ownedComment xmi:id="StateMachine-ancestor-_ownedComment.0" annotatedElement="StateMachine-ancestor">
<body>The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean&#xD;
</body>
</ownedComment>
<ownedRule xmi:id="StateMachine-ancestor-spec" name="spec" constrainedElement="StateMachine-ancestor">
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-ancestor-spec-_specification">
<language>OCL</language>
<body>result = if (s2 = s1) then&#xA;true&#xA;else if (s1.container->isEmpty) then&#xA;true&#xA;else if (s2.container->isEmpty) then&#xA;false&#xA;else (ancestor (s1, s2.container))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="StateMachine-ancestor-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="StateMachine-ancestor-s1" name="s1" type="State"/>
<ownedParameter xmi:id="StateMachine-ancestor-s2" name="s2" type="State"/>
</ownedOperation>
<ownedOperation xmi:id="StateMachine-isRedefinitionContextValid" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="RedefinableElement-isRedefinitionContextValid" bodyCondition="StateMachine-isRedefinitionContextValid-spec">
<ownedComment xmi:id="StateMachine-isRedefinitionContextValid-_ownedComment.0" annotatedElement="StateMachine-isRedefinitionContextValid">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine.</body>
</ownedComment>
<ownedRule xmi:id="StateMachine-isRedefinitionContextValid-spec" name="spec" constrainedElement="StateMachine-isRedefinitionContextValid">
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-isRedefinitionContextValid-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="StateMachine-isRedefinitionContextValid-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="StateMachine-isRedefinitionContextValid-redefined" name="redefined" type="StateMachine" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="StateMachine-isConsistentWith" name="isConsistentWith" isQuery="true" redefinedOperation="RedefinableElement-isConsistentWith" bodyCondition="StateMachine-isConsistentWith-spec">
<ownedComment xmi:id="StateMachine-isConsistentWith-_ownedComment.0" annotatedElement="StateMachine-isConsistentWith">
<body>The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines.</body>
</ownedComment>
<ownedRule xmi:id="StateMachine-isConsistentWith-spec" name="spec" constrainedElement="StateMachine-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="StateMachine-isConsistentWith-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="StateMachine-isConsistentWith-redefinee" name="redefinee" type="RedefinableElement"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Pseudostate" name="Pseudostate">
<ownedComment xmi:id="Pseudostate-_ownedComment.0" annotatedElement="Pseudostate">
<body>A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph.</body>
</ownedComment>
<ownedRule xmi:id="Pseudostate-initial_vertex" name="initial_vertex" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-initial_vertex-_ownedComment.0" annotatedElement="Pseudostate-initial_vertex">
<body>An initial vertex can have at most one outgoing transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-initial_vertex-_specification">
<language>OCL</language>
<body>(self.kind = #initial) implies (self.outgoing->size &lt;= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-history_vertices" name="history_vertices" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-history_vertices-_ownedComment.0" annotatedElement="Pseudostate-history_vertices">
<body>History vertices can have at most one outgoing transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-history_vertices-_specification">
<language>OCL</language>
<body>((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-join_vertex" name="join_vertex" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-join_vertex-_ownedComment.0" annotatedElement="Pseudostate-join_vertex">
<body>In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-join_vertex-_specification">
<language>OCL</language>
<body>(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-transitions_incoming" name="transitions_incoming" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-transitions_incoming-_ownedComment.0" annotatedElement="Pseudostate-transitions_incoming">
<body>All transitions incoming a join vertex must originate in different regions of an orthogonal state.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-transitions_incoming-_specification">
<language>OCL</language>
<body>(self.kind = #join) implies&#xA; self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-fork_vertex" name="fork_vertex" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-fork_vertex-_ownedComment.0" annotatedElement="Pseudostate-fork_vertex">
<body>In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-fork_vertex-_specification">
<language>OCL</language>
<body>(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-transitions_outgoing" name="transitions_outgoing" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-transitions_outgoing-_ownedComment.0" annotatedElement="Pseudostate-transitions_outgoing">
<body>All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-transitions_outgoing-_specification">
<language>OCL</language>
<body>(self.kind = #fork) implies&#xA; self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-junction_vertex" name="junction_vertex" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-junction_vertex-_ownedComment.0" annotatedElement="Pseudostate-junction_vertex">
<body>In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-junction_vertex-_specification">
<language>OCL</language>
<body>(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-choice_vertex" name="choice_vertex" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-choice_vertex-_ownedComment.0" annotatedElement="Pseudostate-choice_vertex">
<body>In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-choice_vertex-_specification">
<language>OCL</language>
<body>(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Pseudostate-outgoing_from_initial" name="outgoing_from_initial" constrainedElement="Pseudostate">
<ownedComment xmi:id="Pseudostate-outgoing_from_initial-_ownedComment.0" annotatedElement="Pseudostate-outgoing_from_initial">
<body>The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-outgoing_from_initial-_specification">
<language>OCL</language>
<body>(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA; and self.outgoing.trigger->isEmpty())</body>
</specification>
</ownedRule>
<generalization xmi:id="Pseudostate-_generalization.0" general="Vertex"/>
<ownedAttribute xmi:id="Pseudostate-kind" name="kind" type="PseudostateKind">
<ownedComment xmi:id="Pseudostate-kind-_ownedComment.0" annotatedElement="Pseudostate-kind">
<body>Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Pseudostate-kind-_defaultValue" type="PseudostateKind" instance="PseudostateKind-initial"/>
</ownedAttribute>
<ownedAttribute xmi:id="Pseudostate-stateMachine" name="stateMachine" type="StateMachine" subsettedProperty="NamedElement-namespace" association="A_connectionPoint_stateMachine">
<ownedComment xmi:id="Pseudostate-stateMachine-_ownedComment.0" annotatedElement="Pseudostate-stateMachine">
<body>The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Pseudostate-stateMachine-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Pseudostate-stateMachine-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Pseudostate-state" name="state" type="State" subsettedProperty="Element-owner" association="A_connectionPoint_state">
<ownedComment xmi:id="Pseudostate-state-_ownedComment.0" annotatedElement="Pseudostate-state">
<body>The State that owns this pseudostate and in which it appears.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Pseudostate-state-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Pseudostate-state-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="FinalState" name="FinalState">
<ownedComment xmi:id="FinalState-_ownedComment.0" annotatedElement="FinalState">
<body>A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed.</body>
</ownedComment>
<ownedRule xmi:id="FinalState-no_outgoing_transitions" name="no_outgoing_transitions" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-no_outgoing_transitions-_ownedComment.0" annotatedElement="FinalState-no_outgoing_transitions">
<body>A final state cannot have any outgoing transitions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_outgoing_transitions-_specification">
<language>OCL</language>
<body>self.outgoing->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FinalState-no_regions" name="no_regions" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-no_regions-_ownedComment.0" annotatedElement="FinalState-no_regions">
<body>A final state cannot have regions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_regions-_specification">
<language>OCL</language>
<body>self.region->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FinalState-cannot_reference_submachine" name="cannot_reference_submachine" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-cannot_reference_submachine-_ownedComment.0" annotatedElement="FinalState-cannot_reference_submachine">
<body>A final state cannot reference a submachine.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-cannot_reference_submachine-_specification">
<language>OCL</language>
<body>self.submachine->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FinalState-no_entry_behavior" name="no_entry_behavior" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-no_entry_behavior-_ownedComment.0" annotatedElement="FinalState-no_entry_behavior">
<body>A final state has no entry behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_entry_behavior-_specification">
<language>OCL</language>
<body>self.entry->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FinalState-no_exit_behavior" name="no_exit_behavior" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-no_exit_behavior-_ownedComment.0" annotatedElement="FinalState-no_exit_behavior">
<body>A final state has no exit behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_exit_behavior-_specification">
<language>OCL</language>
<body>self.exit->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="FinalState-no_state_behavior" name="no_state_behavior" constrainedElement="FinalState">
<ownedComment xmi:id="FinalState-no_state_behavior-_ownedComment.0" annotatedElement="FinalState-no_state_behavior">
<body>A final state has no state (doActivity) behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_state_behavior-_specification">
<language>OCL</language>
<body>self.doActivity->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="FinalState-_generalization.0" general="State"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ConnectionPointReference" name="ConnectionPointReference">
<ownedComment xmi:id="ConnectionPointReference-_ownedComment.0" annotatedElement="ConnectionPointReference">
<body>A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state.</body>
</ownedComment>
<ownedRule xmi:id="ConnectionPointReference-entry_pseudostates" name="entry_pseudostates" constrainedElement="ConnectionPointReference">
<ownedComment xmi:id="ConnectionPointReference-entry_pseudostates-_ownedComment.0" annotatedElement="ConnectionPointReference-entry_pseudostates">
<body>The entry Pseudostates must be Pseudostates with kind entryPoint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectionPointReference-entry_pseudostates-_specification">
<language>OCL</language>
<body>entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ConnectionPointReference-exit_pseudostates" name="exit_pseudostates" constrainedElement="ConnectionPointReference">
<ownedComment xmi:id="ConnectionPointReference-exit_pseudostates-_ownedComment.0" annotatedElement="ConnectionPointReference-exit_pseudostates">
<body>The exit Pseudostates must be Pseudostates with kind exitPoint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectionPointReference-exit_pseudostates-_specification">
<language>OCL</language>
<body>exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)</body>
</specification>
</ownedRule>
<generalization xmi:id="ConnectionPointReference-_generalization.0" general="Vertex"/>
<ownedAttribute xmi:id="ConnectionPointReference-entry" name="entry" type="Pseudostate" association="A_entry_connectionPointReference">
<ownedComment xmi:id="ConnectionPointReference-entry-_ownedComment.0" annotatedElement="ConnectionPointReference-entry">
<body>The entryPoint kind pseudo states corresponding to this connection point.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectionPointReference-entry-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-entry-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ConnectionPointReference-state" name="state" type="State" subsettedProperty="NamedElement-namespace" association="A_state_connection">
<ownedComment xmi:id="ConnectionPointReference-state-_ownedComment.0" annotatedElement="ConnectionPointReference-state">
<body>The State in which the connection point refreshens are defined.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectionPointReference-state-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-state-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ConnectionPointReference-exit" name="exit" type="Pseudostate" association="A_exit_connectionPointReference">
<ownedComment xmi:id="ConnectionPointReference-exit-_ownedComment.0" annotatedElement="ConnectionPointReference-exit">
<body>The exitPoints kind pseudo states corresponding to this connection point.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectionPointReference-exit-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-exit-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="TimeEvent" name="TimeEvent">
<ownedComment xmi:id="TimeEvent-_ownedComment.0" annotatedElement="TimeEvent">
<body>A time event specifies a point in time. At the specified time, the event occurs.</body>
</ownedComment>
<ownedComment xmi:id="TimeEvent-_ownedComment.1" annotatedElement="TimeEvent">
<body>A time event can be defined relative to entering the current state of the executing state machine.</body>
</ownedComment>
<ownedRule xmi:id="TimeEvent-when_non_negative" name="when_non_negative" constrainedElement="TimeEvent">
<ownedComment xmi:id="TimeEvent-when_non_negative-_ownedComment.0" annotatedElement="TimeEvent-when_non_negative">
<body>The ValueSpecification when must return a non-negative Integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TimeEvent-when_non_negative-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="TimeEvent-starting_time" name="starting_time" constrainedElement="TimeEvent">
<ownedComment xmi:id="TimeEvent-starting_time-_ownedComment.0" annotatedElement="TimeEvent-starting_time">
<body>The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TimeEvent-starting_time-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="TimeEvent-_generalization.0" general="Event"/>
<ownedAttribute xmi:id="TimeEvent-isRelative" name="isRelative" type="Boolean">
<ownedComment xmi:id="TimeEvent-isRelative-_ownedComment.0" annotatedElement="TimeEvent-isRelative">
<body>Specifies whether it is relative or absolute time.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeEvent-isRelative-_defaultValue" type="Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="TimeEvent-when" name="when" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_when_timeEvent">
<ownedComment xmi:id="TimeEvent-when-_ownedComment.0" annotatedElement="TimeEvent-when">
<body>Specifies the corresponding time deadline.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeEvent-when-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeEvent-when-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="PseudostateKind" name="PseudostateKind" visibility="private">
<ownedComment xmi:id="PseudostateKind-_ownedComment.0" annotatedElement="PseudostateKind">
<body>PseudostateKind is an enumeration type.</body>
</ownedComment>
<ownedLiteral xmi:id="PseudostateKind-initial" name="initial">
<ownedComment xmi:id="PseudostateKind-initial-_ownedComment.0" annotatedElement="PseudostateKind-initial">
<body>An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-deepHistory" name="deepHistory">
<ownedComment xmi:id="PseudostateKind-deepHistory-_ownedComment.0" annotatedElement="PseudostateKind-deepHistory">
<body>DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-shallowHistory" name="shallowHistory">
<ownedComment xmi:id="PseudostateKind-shallowHistory-_ownedComment.0" annotatedElement="PseudostateKind-shallowHistory">
<body>ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-join" name="join">
<ownedComment xmi:id="PseudostateKind-join-_ownedComment.0" annotatedElement="PseudostateKind-join">
<body>Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-fork" name="fork">
<ownedComment xmi:id="PseudostateKind-fork-_ownedComment.0" annotatedElement="PseudostateKind-fork">
<body>Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices&#xD;
(i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-junction" name="junction">
<ownedComment xmi:id="PseudostateKind-junction-_ownedComment.0" annotatedElement="PseudostateKind-junction">
<body>Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below).</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-choice" name="choice">
<ownedComment xmi:id="PseudostateKind-choice-_ownedComment.0" annotatedElement="PseudostateKind-choice">
<body>Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above).</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-entryPoint" name="entryPoint">
<ownedComment xmi:id="PseudostateKind-entryPoint-_ownedComment.0" annotatedElement="PseudostateKind-entryPoint">
<body>An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-exitPoint" name="exitPoint">
<ownedComment xmi:id="PseudostateKind-exitPoint-_ownedComment.0" annotatedElement="PseudostateKind-exitPoint">
<body>An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="PseudostateKind-terminate" name="terminate">
<ownedComment xmi:id="PseudostateKind-terminate-_ownedComment.0" annotatedElement="PseudostateKind-terminate">
<body>Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="TransitionKind" name="TransitionKind" visibility="private">
<ownedComment xmi:id="TransitionKind-_ownedComment.0" annotatedElement="TransitionKind">
<body>TransitionKind is an enumeration type.</body>
</ownedComment>
<ownedRule xmi:id="TransitionKind-state_is_local" name="state_is_local" constrainedElement="TransitionKind">
<ownedComment xmi:id="TransitionKind-state_is_local-_ownedComment.0" annotatedElement="TransitionKind-state_is_local">
<body>The source state of a transition with transition kind local must be a composite state.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TransitionKind-state_is_local-_specification">
<language>OCL</language>
<body>kind=#local implies owner.source.isComposite</body>
</specification>
</ownedRule>
<ownedRule xmi:id="TransitionKind-state_is_external" name="state_is_external" constrainedElement="TransitionKind">
<ownedComment xmi:id="TransitionKind-state_is_external-_ownedComment.0" annotatedElement="TransitionKind-state_is_external">
<body>The source state of a transition with transition kind external must be a composite state.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="TransitionKind-state_is_external-_specification">
<language>OCL</language>
<body>kind=#external implies owner.source.isComposite</body>
</specification>
</ownedRule>
<ownedLiteral xmi:id="TransitionKind-internal" name="internal">
<ownedComment xmi:id="TransitionKind-internal-_ownedComment.0" annotatedElement="TransitionKind-internal">
<body>Implies that the transition, if triggered, occurs without exiting or entering the source state. Thus, 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 state machine is in one or more regions nested within this state.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="TransitionKind-local" name="local">
<ownedComment xmi:id="TransitionKind-local-_ownedComment.0" annotatedElement="TransitionKind-local">
<body>Implies that the transition, if triggered, will not exit the composite (source) state, but it will apply to any state within the composite state, and these will be exited and entered.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="TransitionKind-external" name="external">
<ownedComment xmi:id="TransitionKind-external-_ownedComment.0" annotatedElement="TransitionKind-external">
<body>Implies that the transition, if triggered, will exit the composite (source) state.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_container_subvertex" name="A_container_subvertex" visibility="private" memberEnd="Vertex-container Region-subvertex"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_container_transition" name="A_container_transition" visibility="private" memberEnd="Transition-container Region-transition"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_submachineState_submachine" name="A_submachineState_submachine" visibility="private" memberEnd="StateMachine-submachineState State-submachine"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_entry_connectionPointReference" name="A_entry_connectionPointReference" visibility="private" memberEnd="ConnectionPointReference-entry A_entry_connectionPointReference-_ownedEnd.0">
<ownedEnd xmi:id="A_entry_connectionPointReference-_ownedEnd.0" type="ConnectionPointReference" association="A_entry_connectionPointReference">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_entry_connectionPointReference-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_entry_connectionPointReference-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_state_connection" name="A_state_connection" visibility="private" memberEnd="ConnectionPointReference-state State-connection"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedState_state" name="A_redefinedState_state" visibility="private" memberEnd="State-redefinedState A_redefinedState_state-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedState_state-_ownedEnd.0" type="State" association="A_redefinedState_state">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedState_state-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedState_state-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinedTransition_transition" name="A_redefinedTransition_transition" visibility="private" memberEnd="Transition-redefinedTransition A_redefinedTransition_transition-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinedTransition_transition-_ownedEnd.0" type="Transition" association="A_redefinedTransition_transition">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedTransition_transition-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedTransition_transition-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_exit_connectionPointReference" name="A_exit_connectionPointReference" visibility="private" memberEnd="ConnectionPointReference-exit A_exit_connectionPointReference-_ownedEnd.0">
<ownedEnd xmi:id="A_exit_connectionPointReference-_ownedEnd.0" type="ConnectionPointReference" association="A_exit_connectionPointReference">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_exit_connectionPointReference-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exit_connectionPointReference-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_region_stateMachine" name="A_region_stateMachine" visibility="private" memberEnd="StateMachine-region Region-stateMachine"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_connectionPoint_stateMachine" name="A_connectionPoint_stateMachine" visibility="private" memberEnd="StateMachine-connectionPoint Pseudostate-stateMachine"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_region_state" name="A_region_state" visibility="private" memberEnd="State-region Region-state"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_region_extendedRegion" name="A_region_extendedRegion" visibility="private" memberEnd="A_region_extendedRegion-_ownedEnd.0 Region-extendedRegion">
<ownedEnd xmi:id="A_region_extendedRegion-_ownedEnd.0" type="Region" association="A_region_extendedRegion">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_region_extendedRegion-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_region_extendedRegion-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_stateMachine_extendedStateMachine" name="A_stateMachine_extendedStateMachine" visibility="private" memberEnd="A_stateMachine_extendedStateMachine-_ownedEnd.0 StateMachine-extendedStateMachine">
<ownedEnd xmi:id="A_stateMachine_extendedStateMachine-_ownedEnd.0" type="StateMachine" association="A_stateMachine_extendedStateMachine">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_stateMachine_extendedStateMachine-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_stateMachine_extendedStateMachine-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_guard_transition" name="A_guard_transition" visibility="private" memberEnd="Transition-guard A_guard_transition-_ownedEnd.0">
<ownedEnd xmi:id="A_guard_transition-_ownedEnd.0" type="Transition" association="A_guard_transition">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_guard_transition-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_guard_transition-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_region" name="A_redefinitionContext_region" visibility="private" memberEnd="Region-redefinitionContext A_redefinitionContext_region-_ownedEnd.0">
<ownedEnd xmi:id="A_redefinitionContext_region-_ownedEnd.0" type="Region" association="A_redefinitionContext_region">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_region-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_region-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_state_redefinitionContext" name="A_state_redefinitionContext" visibility="private" memberEnd="A_state_redefinitionContext-_ownedEnd.0 State-redefinitionContext" isDerived="true">
<ownedEnd xmi:id="A_state_redefinitionContext-_ownedEnd.0" type="State" association="A_state_redefinitionContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_state_redefinitionContext-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_state_redefinitionContext-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_transition_redefinitionContext" name="A_transition_redefinitionContext" visibility="private" memberEnd="A_transition_redefinitionContext-_ownedEnd.0 Transition-redefinitionContext">
<ownedEnd xmi:id="A_transition_redefinitionContext-_ownedEnd.0" type="Transition" association="A_transition_redefinitionContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_transition_redefinitionContext-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_transition_redefinitionContext-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_stateInvariant_owningState" name="A_stateInvariant_owningState" visibility="private" memberEnd="State-stateInvariant A_stateInvariant_owningState-owningState">
<ownedEnd xmi:id="A_stateInvariant_owningState-owningState" name="owningState" type="State" subsettedProperty="Element-owner" association="A_stateInvariant_owningState">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_stateInvariant_owningState-owningState-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_stateInvariant_owningState-owningState-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_effect_transition" name="A_effect_transition" visibility="private" memberEnd="Transition-effect A_effect_transition-_ownedEnd.0">
<ownedEnd xmi:id="A_effect_transition-_ownedEnd.0" type="Transition" association="A_effect_transition">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_effect_transition-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_effect_transition-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_entry_state" name="A_entry_state" visibility="private" memberEnd="State-entry A_entry_state-_ownedEnd.0">
<ownedEnd xmi:id="A_entry_state-_ownedEnd.0" type="State" association="A_entry_state">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_entry_state-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_entry_state-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_exit_state" name="A_exit_state" visibility="private" memberEnd="State-exit A_exit_state-_ownedEnd.0">
<ownedEnd xmi:id="A_exit_state-_ownedEnd.0" type="State" association="A_exit_state">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_exit_state-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exit_state-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_doActivity_state" name="A_doActivity_state" visibility="private" memberEnd="State-doActivity A_doActivity_state-_ownedEnd.0">
<ownedEnd xmi:id="A_doActivity_state-_ownedEnd.0" type="State" association="A_doActivity_state">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_doActivity_state-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_doActivity_state-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_connectionPoint_state" name="A_connectionPoint_state" visibility="private" memberEnd="State-connectionPoint Pseudostate-state"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_trigger_transition" name="A_trigger_transition" visibility="private" memberEnd="Transition-trigger A_trigger_transition-_ownedEnd.0">
<ownedEnd xmi:id="A_trigger_transition-_ownedEnd.0" type="Transition" association="A_trigger_transition">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_trigger_transition-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_trigger_transition-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_deferrableTrigger_state" name="A_deferrableTrigger_state" visibility="private" memberEnd="State-deferrableTrigger A_deferrableTrigger_state-_ownedEnd.0">
<ownedEnd xmi:id="A_deferrableTrigger_state-_ownedEnd.0" type="State" association="A_deferrableTrigger_state">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_deferrableTrigger_state-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deferrableTrigger_state-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Stereotype" name="Stereotype">
<ownedComment xmi:id="Stereotype-_ownedComment.0" annotatedElement="Stereotype">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Stereotype-name_not_clash" name="name_not_clash" constrainedElement="Stereotype">
<ownedComment xmi:id="Stereotype-name_not_clash-_ownedComment.0" annotatedElement="Stereotype-name_not_clash">
<body>Stereotype names should not clash with keyword names for the extended model element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-name_not_clash-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Stereotype-generalize" name="generalize" constrainedElement="Stereotype">
<ownedComment xmi:id="Stereotype-generalize-_ownedComment.0" annotatedElement="Stereotype-generalize">
<body>A Stereotype may only generalize or specialize another Stereotype.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-generalize-_specification">
<language>OCL</language>
<body>generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) </body>
</specification>
</ownedRule>
<generalization xmi:id="Stereotype-_generalization.0" general="Class"/>
<ownedAttribute xmi:id="Stereotype-icon" name="icon" type="Image" aggregation="composite" association="A_icon_stereotype">
<ownedComment xmi:id="Stereotype-icon-_ownedComment.0" annotatedElement="Stereotype-icon">
<body>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.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-icon-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-icon-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Stereotype-createExtension" name="createExtension">
<ownedComment xmi:id="Stereotype-createExtension-_ownedComment.0" annotatedElement="Stereotype-createExtension">
<body>Creates a(n) (required) extension of the specified metaclass with this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-createExtension-_ownedParameter.0" type="Extension" direction="return"/>
<ownedParameter xmi:id="Stereotype-createExtension-metaclass" name="metaclass" type="Class" effect="read">
<ownedComment xmi:id="Stereotype-createExtension-metaclass-_ownedComment.0" annotatedElement="Stereotype-createExtension-metaclass">
<body>The metaclass for the new extension.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Stereotype-createExtension-isRequired" name="isRequired" type="Boolean" effect="read">
<ownedComment xmi:id="Stereotype-createExtension-isRequired-_ownedComment.0" annotatedElement="Stereotype-createExtension-isRequired">
<body>Whether the new extension should be required.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getProfile" name="getProfile" isQuery="true">
<ownedComment xmi:id="Stereotype-getProfile-_ownedComment.0" annotatedElement="Stereotype-getProfile">
<body>Retrieves the profile that owns this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getProfile-_ownedParameter.0" type="Profile" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getProfile-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getProfile-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getKeyword" name="getKeyword" isQuery="true">
<ownedComment xmi:id="Stereotype-getKeyword-_ownedComment.0" annotatedElement="Stereotype-getKeyword">
<body>Retrieves the localized keyword for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getKeyword-_ownedParameter.0" type="String" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getKeyword.1" name="getKeyword" isQuery="true">
<ownedComment xmi:id="Stereotype-getKeyword.1-_ownedComment.0" annotatedElement="Stereotype-getKeyword.1">
<body>Retrieves the keyword for this stereotype, localized if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getKeyword.1-_ownedParameter.0" type="String" direction="return"/>
<ownedParameter xmi:id="Stereotype-getKeyword.1-localize" name="localize" type="Boolean" effect="read">
<ownedComment xmi:id="Stereotype-getKeyword.1-localize-_ownedComment.0" annotatedElement="Stereotype-getKeyword.1-localize">
<body>Whether to localize the keyword.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getExtendedMetaclasses" name="getExtendedMetaclasses" isQuery="true">
<ownedComment xmi:id="Stereotype-getExtendedMetaclasses-_ownedComment.0" annotatedElement="Stereotype-getExtendedMetaclasses">
<body>Retrieves the metaclasses extended by this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0" type="Class" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getAllExtendedMetaclasses" name="getAllExtendedMetaclasses" isQuery="true">
<ownedComment xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedComment.0" annotatedElement="Stereotype-getAllExtendedMetaclasses">
<body>Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0" type="Class" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-getDefinition" name="getDefinition" isQuery="true">
<ownedComment xmi:id="Stereotype-getDefinition-_ownedComment.0" annotatedElement="Stereotype-getDefinition">
<body>Retrieves the current definition (Ecore representation) of this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-getDefinition-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getDefinition-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getDefinition-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-createIcon" name="createIcon">
<ownedComment xmi:id="Stereotype-createIcon-_ownedComment.0" annotatedElement="Stereotype-createIcon">
<body>Creates an icon with the specified location for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-createIcon-_ownedParameter.0" type="Image" direction="return"/>
<ownedParameter xmi:id="Stereotype-createIcon-location" name="location" type="String" effect="read">
<ownedComment xmi:id="Stereotype-createIcon-location-_ownedComment.0" annotatedElement="Stereotype-createIcon-location">
<body>The location for the new icon.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Stereotype-createIcon.1" name="createIcon">
<ownedComment xmi:id="Stereotype-createIcon.1-_ownedComment.0" annotatedElement="Stereotype-createIcon.1">
<body>Creates an icon with the specified format and content for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Stereotype-createIcon.1-_ownedParameter.0" type="Image" direction="return"/>
<ownedParameter xmi:id="Stereotype-createIcon.1-format" name="format" type="String" effect="read">
<ownedComment xmi:id="Stereotype-createIcon.1-format-_ownedComment.0" annotatedElement="Stereotype-createIcon.1-format">
<body>The format for the new icon.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Stereotype-createIcon.1-content" name="content" type="String" effect="read">
<ownedComment xmi:id="Stereotype-createIcon.1-content-_ownedComment.0" annotatedElement="Stereotype-createIcon.1-content">
<body>The content for the new icon.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profile" name="Profile">
<ownedComment xmi:id="Profile-_ownedComment.0" annotatedElement="Profile">
<body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
</ownedComment>
<ownedRule xmi:id="Profile-metaclass_reference_not_specialized" name="metaclass_reference_not_specialized" constrainedElement="Profile">
<ownedComment xmi:id="Profile-metaclass_reference_not_specialized-_ownedComment.0" annotatedElement="Profile-metaclass_reference_not_specialized">
<body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profile-metaclass_reference_not_specialized-_specification">
<language>OCL</language>
<body>self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Profile-references_same_metamodel" name="references_same_metamodel" constrainedElement="Profile">
<ownedComment xmi:id="Profile-references_same_metamodel-_ownedComment.0" annotatedElement="Profile-references_same_metamodel">
<body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profile-references_same_metamodel-_specification">
<language>OCL</language>
<body>self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="Profile-_generalization.0" general="Package"/>
<ownedAttribute xmi:id="Profile-ownedStereotype" name="ownedStereotype" type="Stereotype" isDerived="true" aggregation="composite" subsettedProperty="Package-packagedElement" association="A_ownedStereotype_profile">
<ownedComment xmi:id="Profile-ownedStereotype-_ownedComment.0" annotatedElement="Profile-ownedStereotype">
<body>References the Stereotypes that are owned by the Profile.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-ownedStereotype-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-ownedStereotype-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Profile-metaclassReference" name="metaclassReference" type="ElementImport" aggregation="composite" subsettedProperty="Namespace-elementImport" association="A_metaclassReference_profile">
<ownedComment xmi:id="Profile-metaclassReference-_ownedComment.0" annotatedElement="Profile-metaclassReference">
<body>References a metaclass that may be extended.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-metaclassReference-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-metaclassReference-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Profile-metamodelReference" name="metamodelReference" type="PackageImport" aggregation="composite" subsettedProperty="Namespace-packageImport" association="A_metamodelReference_profile">
<ownedComment xmi:id="Profile-metamodelReference-_ownedComment.0" annotatedElement="Profile-metamodelReference">
<body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-metamodelReference-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-metamodelReference-_lowerValue"/>
</ownedAttribute>
<nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="Profile-EMap_EJavaObject_EJavaObject" name="EMap_EJavaObject_EJavaObject" visibility="private">
<templateBinding xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0">
<signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature"/>
<parameterSubstitution xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0-_parameterSubstitution.0">
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.0"/>
<actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
</parameterSubstitution>
<parameterSubstitution xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0-_parameterSubstitution.1">
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.1"/>
<actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
</parameterSubstitution>
</templateBinding>
</nestedClassifier>
<nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="Profile-EMap_EString_EString" name="EMap_EString_EString" visibility="private">
<templateBinding xmi:id="Profile-EMap_EString_EString-_templateBinding.0">
<signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature"/>
<parameterSubstitution xmi:id="Profile-EMap_EString_EString-_templateBinding.0-_parameterSubstitution.0" actual="String">
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.0"/>
</parameterSubstitution>
<parameterSubstitution xmi:id="Profile-EMap_EString_EString-_templateBinding.0-_parameterSubstitution.1" actual="String">
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.1"/>
</parameterSubstitution>
</templateBinding>
</nestedClassifier>
<ownedOperation xmi:id="Profile-create" name="create">
<ownedComment xmi:id="Profile-create-_ownedComment.0" annotatedElement="Profile-create">
<body>Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-create-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
</ownedParameter>
<ownedParameter xmi:id="Profile-create-classifier" name="classifier" type="Classifier" effect="read">
<ownedComment xmi:id="Profile-create-classifier-_ownedComment.0" annotatedElement="Profile-create-classifier">
<body>The classifier of which to create an instance.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-createOwnedStereotype" name="createOwnedStereotype">
<ownedComment xmi:id="Profile-createOwnedStereotype-_ownedComment.0" annotatedElement="Profile-createOwnedStereotype">
<body>Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-createOwnedStereotype-_ownedParameter.0" type="Stereotype" direction="return"/>
<ownedParameter xmi:id="Profile-createOwnedStereotype-name" name="name" type="String" effect="read">
<ownedComment xmi:id="Profile-createOwnedStereotype-name-_ownedComment.0" annotatedElement="Profile-createOwnedStereotype-name">
<body>The name for the new stereotype, or null.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Profile-createOwnedStereotype-isAbstract" name="isAbstract" type="Boolean" effect="read">
<ownedComment xmi:id="Profile-createOwnedStereotype-isAbstract-_ownedComment.0" annotatedElement="Profile-createOwnedStereotype-isAbstract">
<body>Whether the new stereotype should be abstract.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-isDefined" name="isDefined" isQuery="true">
<ownedComment xmi:id="Profile-isDefined-_ownedComment.0" annotatedElement="Profile-isDefined">
<body>Determines whether this profile is defined.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-isDefined-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Profile-define" name="define">
<ownedComment xmi:id="Profile-define-_ownedComment.0" annotatedElement="Profile-define">
<body>Defines this profile by (re)creating Ecore representations of its current contents.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-define-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-define-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-define-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-define.1" name="define">
<ownedComment xmi:id="Profile-define.1-_ownedComment.0" annotatedElement="Profile-define.1">
<body>Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-define.1-_ownedParameter.0" name="" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
</ownedParameter>
<ownedParameter xmi:id="Profile-define.1-options" name="options" type="Profile-EMap_EString_EString">
<ownedComment xmi:id="Profile-define.1-options-_ownedComment.0" annotatedElement="Profile-define.1-options">
<body>The options to use.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Profile-define.1-diagnostics" name="diagnostics">
<ownedComment xmi:id="Profile-define.1-diagnostics-_ownedComment.0" annotatedElement="Profile-define.1-diagnostics">
<body>The chain of diagnostics to which problems are to be appended.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EDiagnosticChain"/>
</ownedParameter>
<ownedParameter xmi:id="Profile-define.1-context" name="context" type="Profile-EMap_EJavaObject_EJavaObject">
<ownedComment xmi:id="Profile-define.1-context-_ownedComment.0" annotatedElement="Profile-define.1-context">
<body>The cache of context-specific information.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-getDefinition" name="getDefinition" isQuery="true">
<ownedComment xmi:id="Profile-getDefinition-_ownedComment.0" annotatedElement="Profile-getDefinition">
<body>Retrieves the current definition (Ecore representation) of this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-getDefinition-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getDefinition-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getDefinition-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-getDefinition.1" name="getDefinition" isQuery="true">
<ownedComment xmi:id="Profile-getDefinition.1-_ownedComment.0" annotatedElement="Profile-getDefinition.1">
<body>Retrieves the current definition (Ecore representation) of the specified named element in this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-getDefinition.1-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#ENamedElement"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getDefinition.1-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getDefinition.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Profile-getDefinition.1-namedElement" name="namedElement" type="NamedElement" effect="read">
<ownedComment xmi:id="Profile-getDefinition.1-namedElement-_ownedComment.0" annotatedElement="Profile-getDefinition.1-namedElement">
<body>The named element whose definition to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-getReferencedMetaclasses" name="getReferencedMetaclasses" isQuery="true">
<ownedComment xmi:id="Profile-getReferencedMetaclasses-_ownedComment.0" annotatedElement="Profile-getReferencedMetaclasses">
<body>Retrieves the metaclasses referenced by this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0" type="Class" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-getReferencedMetamodels" name="getReferencedMetamodels" isQuery="true">
<ownedComment xmi:id="Profile-getReferencedMetamodels-_ownedComment.0" annotatedElement="Profile-getReferencedMetamodels">
<body>Retrieves the metamodels referenced by this profile.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0" type="Model" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Profile-getOwnedExtensions" name="getOwnedExtensions" isQuery="true">
<ownedComment xmi:id="Profile-getOwnedExtensions-_ownedComment.0" annotatedElement="Profile-getOwnedExtensions">
<body>Retrieves the extensions owned by this profile, excluding non-required extensions if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="Profile-getOwnedExtensions-_ownedParameter.0" type="Extension" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getOwnedExtensions-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getOwnedExtensions-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Profile-getOwnedExtensions-requiredOnly" name="requiredOnly" type="Boolean" effect="read">
<ownedComment xmi:id="Profile-getOwnedExtensions-requiredOnly-_ownedComment.0" annotatedElement="Profile-getOwnedExtensions-requiredOnly">
<body>Whether to retrieve only required extensions.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Class" name="Class">
<ownedComment xmi:id="Class-_ownedComment.0" annotatedElement="Class">
<body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
</ownedComment>
<ownedComment xmi:id="Class-_ownedComment.1" annotatedElement="Class">
<body>A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.</body>
</ownedComment>
<ownedComment xmi:id="Class-_ownedComment.2" annotatedElement="Class">
<body>A class has the capability to have an internal structure and ports.</body>
</ownedComment>
<ownedComment xmi:id="Class-_ownedComment.3" annotatedElement="Class">
<body>Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.</body>
</ownedComment>
<ownedRule xmi:id="Class-passive_class" name="passive_class" constrainedElement="Class">
<ownedComment xmi:id="Class-passive_class-_ownedComment.0" annotatedElement="Class-passive_class">
<body>A passive class may not own receptions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Class-passive_class-_specification">
<language>OCL</language>
<body>not self.isActive implies self.ownedReception.isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="Class-_generalization.0" general="BehavioredClassifier"/>
<generalization xmi:id="Class-_generalization.1" general="EncapsulatedClassifier"/>
<ownedAttribute xmi:id="Class-isAbstract" name="isAbstract" type="Boolean" redefinedProperty="Classifier-isAbstract">
<ownedComment xmi:id="Class-isAbstract-_ownedComment.0" annotatedElement="Class-isAbstract">
<body>True when a class is abstract.</body>
</ownedComment>
<ownedComment xmi:id="Class-isAbstract-_ownedComment.1" annotatedElement="Class-isAbstract">
<body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isAbstract-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-nestedClassifier" name="nestedClassifier" type="Classifier" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_nestedClassifier_class">
<ownedComment xmi:id="Class-nestedClassifier-_ownedComment.0" annotatedElement="Class-nestedClassifier">
<body>References all the Classifiers that are defined (nested) within the Class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-nestedClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-nestedClassifier-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" redefinedProperty="StructuredClassifier-ownedAttribute" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_class">
<ownedComment xmi:id="Class-ownedAttribute-_ownedComment.0" annotatedElement="Class-ownedAttribute">
<body>The attributes (i.e. the properties) owned by the class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedOperation_class">
<ownedComment xmi:id="Class-ownedOperation-_ownedComment.0" annotatedElement="Class-ownedOperation">
<body>The operations owned by the class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-superClass" name="superClass" type="Class" isDerived="true" redefinedProperty="Classifier-general" association="A_superClass_class">
<ownedComment xmi:id="Class-superClass-_ownedComment.0" annotatedElement="Class-superClass">
<body>This gives the superclasses of a class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-superClass-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-superClass-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-isActive" name="isActive" type="Boolean">
<ownedComment xmi:id="Class-isActive-_ownedComment.0" annotatedElement="Class-isActive">
<body>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.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isActive-_defaultValue" type="Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-ownedReception" name="ownedReception" type="Reception" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature" association="A_ownedReception_class">
<ownedComment xmi:id="Class-ownedReception-_ownedComment.0" annotatedElement="Class-ownedReception">
<body>Receptions that objects of this class are willing to accept.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedReception-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedReception-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Class-extension" name="extension" type="Extension" isReadOnly="true" isDerived="true" association="A_extension_metaclass">
<ownedComment xmi:id="Class-extension-_ownedComment.0" annotatedElement="Class-extension">
<body>References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-extension-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-extension-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Class-getExtensions" name="getExtensions" visibility="protected" isQuery="true">
<ownedParameter xmi:id="Class-getExtensions-_ownedParameter.0" type="Extension" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-getExtensions-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-getExtensions-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Class-createOwnedOperation" name="createOwnedOperation">
<ownedComment xmi:id="Class-createOwnedOperation-_ownedComment.0" annotatedElement="Class-createOwnedOperation">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class.</body>
</ownedComment>
<ownedParameter xmi:id="Class-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
<ownedParameter xmi:id="Class-createOwnedOperation-name" name="name" type="String" effect="read">
<ownedComment xmi:id="Class-createOwnedOperation-name-_ownedComment.0" annotatedElement="Class-createOwnedOperation-name">
<body>The name for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-name-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-name-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Class-createOwnedOperation-parameterNames" name="parameterNames" type="String" effect="read">
<ownedComment xmi:id="Class-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="Class-createOwnedOperation-parameterNames">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-parameterNames-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-parameterNames-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Class-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
<ownedComment xmi:id="Class-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="Class-createOwnedOperation-parameterTypes">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-parameterTypes-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Class-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
<ownedComment xmi:id="Class-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="Class-createOwnedOperation-returnType">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-returnType-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-returnType-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Class-isMetaclass" name="isMetaclass" isQuery="true">
<ownedComment xmi:id="Class-isMetaclass-_ownedComment.0" annotatedElement="Class-isMetaclass">
<body>Determines whether this class is a metaclass.</body>
</ownedComment>
<ownedParameter xmi:id="Class-isMetaclass-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Class-inherit" name="inherit" isQuery="true" redefinedOperation="Classifier-inherit" bodyCondition="Class-inherit-spec">
<ownedComment xmi:id="Class-inherit-_ownedComment.0" annotatedElement="Class-inherit">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:id="Class-inherit-spec" name="spec" constrainedElement="Class-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Class-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Class-inherit-_ownedParameter.0" type="NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-inherit-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-inherit-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Class-inherit-inhs" name="inhs" type="NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ProfileApplication" name="ProfileApplication">
<ownedComment xmi:id="ProfileApplication-_ownedComment.0" annotatedElement="ProfileApplication">
<body>A profile application is used to show which profiles have been applied to a package.</body>
</ownedComment>
<generalization xmi:id="ProfileApplication-_generalization.0" general="DirectedRelationship"/>
<ownedAttribute xmi:id="ProfileApplication-appliedProfile" name="appliedProfile" type="Profile" subsettedProperty="DirectedRelationship-target" association="A_appliedProfile_profileApplication">
<ownedComment xmi:id="ProfileApplication-appliedProfile-_ownedComment.0" annotatedElement="ProfileApplication-appliedProfile">
<body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-appliedProfile-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-appliedProfile-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ProfileApplication-isStrict" name="isStrict" type="Boolean">
<ownedComment xmi:id="ProfileApplication-isStrict-_ownedComment.0" annotatedElement="ProfileApplication-isStrict">
<body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ProfileApplication-isStrict-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ProfileApplication-applyingPackage" name="applyingPackage" type="Package" subsettedProperty="DirectedRelationship-source Element-owner" association="A_profileApplication_applyingPackage">
<ownedComment xmi:id="ProfileApplication-applyingPackage-_ownedComment.0" annotatedElement="ProfileApplication-applyingPackage">
<body>The package that owns the profile application.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-applyingPackage-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-applyingPackage-_lowerValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="ProfileApplication-getAppliedDefinition" name="getAppliedDefinition" isQuery="true">
<ownedComment xmi:id="ProfileApplication-getAppliedDefinition-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition">
<body>Retrieves the definition (Ecore representation) of the profile associated with this profile application.</body>
</ownedComment>
<ownedParameter xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="ProfileApplication-getAppliedDefinition.1" name="getAppliedDefinition" isQuery="true">
<ownedComment xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition.1">
<body>Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application.</body>
</ownedComment>
<ownedParameter xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#ENamedElement"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="ProfileApplication-getAppliedDefinition.1-namedElement" name="namedElement" type="NamedElement" effect="read">
<ownedComment xmi:id="ProfileApplication-getAppliedDefinition.1-namedElement-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition.1-namedElement">
<body>The named element for which to retrieve the applied definition.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Extension" name="Extension">
<ownedComment xmi:id="Extension-_ownedComment.0" annotatedElement="Extension">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Extension-non_owned_end" name="non_owned_end" constrainedElement="Extension">
<ownedComment xmi:id="Extension-non_owned_end-_ownedComment.0" annotatedElement="Extension-non_owned_end">
<body>The non-owned end of an Extension is typed by a Class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-non_owned_end-_specification">
<language>OCL</language>
<body>metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Extension-is_binary" name="is_binary" constrainedElement="Extension">
<ownedComment xmi:id="Extension-is_binary-_ownedComment.0" annotatedElement="Extension-is_binary">
<body>An Extension is binary, i.e., it has only two memberEnds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-is_binary-_specification">
<language>OCL</language>
<body>memberEnd->size() = 2</body>
</specification>
</ownedRule>
<generalization xmi:id="Extension-_generalization.0" general="Association"/>
<ownedAttribute xmi:id="Extension-isRequired" name="isRequired" type="Boolean" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="Extension-isRequired-_ownedComment.0" annotatedElement="Extension-isRequired">
<body>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 multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Extension-isRequired-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Extension-metaclass" name="metaclass" type="Class" isReadOnly="true" isDerived="true" association="A_extension_metaclass">
<ownedComment xmi:id="Extension-metaclass-_ownedComment.0" annotatedElement="Extension-metaclass">
<body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-metaclass-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-metaclass-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Extension-ownedEnd" name="ownedEnd" type="ExtensionEnd" aggregation="composite" redefinedProperty="Association-ownedEnd" association="A_ownedEnd_extension">
<ownedComment xmi:id="Extension-ownedEnd-_ownedComment.0" annotatedElement="Extension-ownedEnd">
<body>References the end of the extension that is typed by a Stereotype.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-ownedEnd-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-ownedEnd-_lowerValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="Extension-getStereotypeEnd" name="getStereotypeEnd" isQuery="true">
<ownedComment xmi:id="Extension-getStereotypeEnd-_ownedComment.0" annotatedElement="Extension-getStereotypeEnd">
<body>Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass).</body>
</ownedComment>
<ownedParameter xmi:id="Extension-getStereotypeEnd-_ownedParameter.0" type="Property" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-getStereotypeEnd-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-getStereotypeEnd-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Extension-getStereotype" name="getStereotype" isQuery="true">
<ownedComment xmi:id="Extension-getStereotype-_ownedComment.0" annotatedElement="Extension-getStereotype">
<body>Retrieves the stereotype that extends a metaclass through this extension.</body>
</ownedComment>
<ownedParameter xmi:id="Extension-getStereotype-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-getStereotype-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-getStereotype-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Extension-metaclassEnd" name="metaclassEnd" isQuery="true" bodyCondition="Extension-metaclassEnd-spec">
<ownedComment xmi:id="Extension-metaclassEnd-_ownedComment.0" annotatedElement="Extension-metaclassEnd">
<body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
</ownedComment>
<ownedRule xmi:id="Extension-metaclassEnd-spec" name="spec" constrainedElement="Extension-metaclassEnd">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-metaclassEnd-spec-_specification">
<language>OCL</language>
<body>result = memberEnd->reject(ownedEnd)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Extension-metaclassEnd-_ownedParameter.0" type="Property" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Extension-metaclass.1" name="metaclass" isQuery="true" bodyCondition="Extension-metaclass.1-spec">
<ownedComment xmi:id="Extension-metaclass.1-_ownedComment.0" annotatedElement="Extension-metaclass.1">
<body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
</ownedComment>
<ownedRule xmi:id="Extension-metaclass.1-spec" name="spec" constrainedElement="Extension-metaclass.1">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-metaclass.1-spec-_specification">
<language>OCL</language>
<body>result = metaclassEnd().type</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Extension-metaclass.1-_ownedParameter.0" type="Class" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="Extension-isRequired.1" name="isRequired" isQuery="true" bodyCondition="Extension-isRequired.1-spec">
<ownedComment xmi:id="Extension-isRequired.1-_ownedComment.0" annotatedElement="Extension-isRequired.1">
<body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
</ownedComment>
<ownedRule xmi:id="Extension-isRequired.1-spec" name="spec" constrainedElement="Extension-isRequired.1">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-isRequired.1-spec-_specification">
<language>OCL</language>
<body>result = (ownedEnd->lowerBound() = 1)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Extension-isRequired.1-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Image" name="Image">
<ownedComment xmi:id="Image-_ownedComment.0" annotatedElement="Image">
<body>Physical definition of a graphical image.</body>
</ownedComment>
<generalization xmi:id="Image-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="Image-content" name="content" type="String">
<ownedComment xmi:id="Image-content-_ownedComment.0" annotatedElement="Image-content">
<body>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).</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Image-content-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-content-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Image-location" name="location" type="String">
<ownedComment xmi:id="Image-location-_ownedComment.0" annotatedElement="Image-location">
<body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Image-location-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-location-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Image-format" name="format" type="String">
<ownedComment xmi:id="Image-format-_ownedComment.0" annotatedElement="Image-format">
<body>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.&#xD;
&#xD;
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;.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Image-format-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-format-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Element" name="Element" isAbstract="true">
<ownedComment xmi:id="Element-_ownedComment.0" annotatedElement="Element">
<body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
</ownedComment>
<ownedRule xmi:id="Element-not_own_self" name="not_own_self" constrainedElement="Element">
<ownedComment xmi:id="Element-not_own_self-_ownedComment.0" annotatedElement="Element-not_own_self">
<body>An element may not directly or indirectly own itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Element-not_own_self-_specification">
<language>OCL</language>
<body>not self.allOwnedElements()->includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="Element-has_owner" name="has_owner" constrainedElement="Element">
<ownedComment xmi:id="Element-has_owner-_ownedComment.0" annotatedElement="Element-has_owner">
<body>Elements that must be owned must have an owner.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Element-has_owner-_specification">
<language>OCL</language>
<body>self.mustBeOwned() implies owner->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="Element-_generalization.0">
<general xmi:type="uml:Class" href="Ecore.metamodel.uml#EModelElement"/>
</generalization>
<ownedAttribute xmi:id="Element-ownedElement" name="ownedElement" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="A_ownedElement_owner">
<ownedComment xmi:id="Element-ownedElement-_ownedComment.0" annotatedElement="Element-ownedElement">
<body>The Elements owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Element-owner" name="owner" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_ownedElement_owner">
<ownedComment xmi:id="Element-owner-_ownedComment.0" annotatedElement="Element-owner">
<body>The Element that owns this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-owner-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-owner-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Element-ownedComment" name="ownedComment" type="Comment" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_ownedComment_owningElement">
<ownedComment xmi:id="Element-ownedComment-_ownedComment.0" annotatedElement="Element-ownedComment">
<body>The Comments owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedComment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedComment-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Element-destroy" name="destroy">
<ownedComment xmi:id="Element-destroy-_ownedComment.0" annotatedElement="Element-destroy">
<body>Destroys this element by removing all cross references to/from it and removing it from its containing resource or object.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:id="Element-hasKeyword" name="hasKeyword" isQuery="true">
<ownedComment xmi:id="Element-hasKeyword-_ownedComment.0" annotatedElement="Element-hasKeyword">
<body>Determines whether this element has the specified keyword.</body>
</ownedComment>
<ownedParameter xmi:id="Element-hasKeyword-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-hasKeyword-keyword" name="keyword" type="String" effect="read">
<ownedComment xmi:id="Element-hasKeyword-keyword-_ownedComment.0" annotatedElement="Element-hasKeyword-keyword">
<body>The keyword in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getKeywords" name="getKeywords" isQuery="true">
<ownedComment xmi:id="Element-getKeywords-_ownedComment.0" annotatedElement="Element-getKeywords">
<body>Retrieves the keywords for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getKeywords-_ownedParameter.0" type="String" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getKeywords-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getKeywords-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-addKeyword" name="addKeyword">
<ownedComment xmi:id="Element-addKeyword-_ownedComment.0" annotatedElement="Element-addKeyword">
<body>Adds the specified keyword to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-addKeyword-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-addKeyword-keyword" name="keyword" type="String" effect="read">
<ownedComment xmi:id="Element-addKeyword-keyword-_ownedComment.0" annotatedElement="Element-addKeyword-keyword">
<body>The keyword to add.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-removeKeyword" name="removeKeyword">
<ownedComment xmi:id="Element-removeKeyword-_ownedComment.0" annotatedElement="Element-removeKeyword">
<body>Removes the specified keyword from this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-removeKeyword-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-removeKeyword-keyword" name="keyword" type="String" effect="read">
<ownedComment xmi:id="Element-removeKeyword-keyword-_ownedComment.0" annotatedElement="Element-removeKeyword-keyword">
<body>The keyword to remove.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getNearestPackage" name="getNearestPackage" isQuery="true">
<ownedComment xmi:id="Element-getNearestPackage-_ownedComment.0" annotatedElement="Element-getNearestPackage">
<body>Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package).</body>
</ownedComment>
<ownedParameter xmi:id="Element-getNearestPackage-_ownedParameter.0" type="Package" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getNearestPackage-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getNearestPackage-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getModel" name="getModel" isQuery="true">
<ownedComment xmi:id="Element-getModel-_ownedComment.0" annotatedElement="Element-getModel">
<body>Retrieves the model that owns (either directly or indirectly) this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getModel-_ownedParameter.0" type="Model" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getModel-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getModel-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-isStereotypeApplicable" name="isStereotypeApplicable" isQuery="true">
<ownedComment xmi:id="Element-isStereotypeApplicable-_ownedComment.0" annotatedElement="Element-isStereotypeApplicable">
<body>Determines whether the specified stereotype is applicable to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-isStereotypeApplicable-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-isStereotypeApplicable-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-isStereotypeApplicable-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeApplicable-stereotype">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-isStereotypeRequired" name="isStereotypeRequired" isQuery="true">
<ownedComment xmi:id="Element-isStereotypeRequired-_ownedComment.0" annotatedElement="Element-isStereotypeRequired">
<body>Determines whether the specified stereotype is required for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-isStereotypeRequired-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-isStereotypeRequired-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-isStereotypeRequired-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeRequired-stereotype">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-isStereotypeApplied" name="isStereotypeApplied" isQuery="true">
<ownedComment xmi:id="Element-isStereotypeApplied-_ownedComment.0" annotatedElement="Element-isStereotypeApplied">
<body>Determines whether the specified stereotype is applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-isStereotypeApplied-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-isStereotypeApplied-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-isStereotypeApplied-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeApplied-stereotype">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-applyStereotype" name="applyStereotype">
<ownedComment xmi:id="Element-applyStereotype-_ownedComment.0" annotatedElement="Element-applyStereotype">
<body>Applies the specified stereotype to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-applyStereotype-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
</ownedParameter>
<ownedParameter xmi:id="Element-applyStereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-applyStereotype-stereotype-_ownedComment.0" annotatedElement="Element-applyStereotype-stereotype">
<body>The stereotype to apply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-unapplyStereotype" name="unapplyStereotype">
<ownedComment xmi:id="Element-unapplyStereotype-_ownedComment.0" annotatedElement="Element-unapplyStereotype">
<body>Unapplies the specified stereotype from this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-unapplyStereotype-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
</ownedParameter>
<ownedParameter xmi:id="Element-unapplyStereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-unapplyStereotype-stereotype-_ownedComment.0" annotatedElement="Element-unapplyStereotype-stereotype">
<body>The stereotype to unapply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getApplicableStereotypes" name="getApplicableStereotypes" isQuery="true">
<ownedComment xmi:id="Element-getApplicableStereotypes-_ownedComment.0" annotatedElement="Element-getApplicableStereotypes">
<body>Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getApplicableStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getApplicableStereotypes-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getApplicableStereotypes-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getApplicableStereotype" name="getApplicableStereotype" isQuery="true">
<ownedComment xmi:id="Element-getApplicableStereotype-_ownedComment.0" annotatedElement="Element-getApplicableStereotype">
<body>Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getApplicableStereotype-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getApplicableStereotype-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getApplicableStereotype-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getApplicableStereotype-qualifiedName" name="qualifiedName" type="String" effect="read">
<ownedComment xmi:id="Element-getApplicableStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getApplicableStereotype-qualifiedName">
<body>The qualified name of the applicable stereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getStereotypeApplications" name="getStereotypeApplications" isQuery="true">
<ownedComment xmi:id="Element-getStereotypeApplications-_ownedComment.0" annotatedElement="Element-getStereotypeApplications">
<body>Retrieves the stereotype applications for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getStereotypeApplications-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getStereotypeApplications-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getStereotypeApplications-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getStereotypeApplication" name="getStereotypeApplication" isQuery="true">
<ownedComment xmi:id="Element-getStereotypeApplication-_ownedComment.0" annotatedElement="Element-getStereotypeApplication">
<body>Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getStereotypeApplication-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getStereotypeApplication-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getStereotypeApplication-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getStereotypeApplication-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-getStereotypeApplication-stereotype-_ownedComment.0" annotatedElement="Element-getStereotypeApplication-stereotype">
<body>The stereotype for which to retrieve an application.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getRequiredStereotypes" name="getRequiredStereotypes" isQuery="true">
<ownedComment xmi:id="Element-getRequiredStereotypes-_ownedComment.0" annotatedElement="Element-getRequiredStereotypes">
<body>Retrieves the stereotypes that are required for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getRequiredStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRequiredStereotypes-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRequiredStereotypes-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getRequiredStereotype" name="getRequiredStereotype" isQuery="true">
<ownedComment xmi:id="Element-getRequiredStereotype-_ownedComment.0" annotatedElement="Element-getRequiredStereotype">
<body>Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getRequiredStereotype-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRequiredStereotype-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRequiredStereotype-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getRequiredStereotype-qualifiedName" name="qualifiedName" type="String" effect="read">
<ownedComment xmi:id="Element-getRequiredStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getRequiredStereotype-qualifiedName">
<body>The qualified name of the required stereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getAppliedStereotypes" name="getAppliedStereotypes" isQuery="true">
<ownedComment xmi:id="Element-getAppliedStereotypes-_ownedComment.0" annotatedElement="Element-getAppliedStereotypes">
<body>Retrieves the stereotypes that are applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getAppliedStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedStereotypes-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedStereotypes-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getAppliedStereotype" name="getAppliedStereotype" isQuery="true">
<ownedComment xmi:id="Element-getAppliedStereotype-_ownedComment.0" annotatedElement="Element-getAppliedStereotype">
<body>Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getAppliedStereotype-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedStereotype-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedStereotype-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getAppliedStereotype-qualifiedName" name="qualifiedName" type="String" effect="read">
<ownedComment xmi:id="Element-getAppliedStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getAppliedStereotype-qualifiedName">
<body>The qualified name of the applied stereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getAppliedSubstereotypes" name="getAppliedSubstereotypes" isQuery="true">
<ownedComment xmi:id="Element-getAppliedSubstereotypes-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotypes">
<body>Retrieves the substereotypes of the specified stereotype that are applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getAppliedSubstereotypes-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-getAppliedSubstereotypes-stereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotypes-stereotype">
<body>The superstereotype of the applied substereotypes to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getAppliedSubstereotype" name="getAppliedSubstereotype" isQuery="true">
<ownedComment xmi:id="Element-getAppliedSubstereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype">
<body>Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0" type="Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getAppliedSubstereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-getAppliedSubstereotype-stereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype-stereotype">
<body>The superstereotype of the applied substereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Element-getAppliedSubstereotype-qualifiedName" name="qualifiedName" type="String" effect="read">
<ownedComment xmi:id="Element-getAppliedSubstereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype-qualifiedName">
<body>The qualified name of the applied substereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-hasValue" name="hasValue" isQuery="true">
<ownedComment xmi:id="Element-hasValue-_ownedComment.0" annotatedElement="Element-hasValue">
<body>Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="Element-hasValue-_ownedParameter.0" type="Boolean" direction="return"/>
<ownedParameter xmi:id="Element-hasValue-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-hasValue-stereotype-_ownedComment.0" annotatedElement="Element-hasValue-stereotype">
<body>The stereotype for which to test the property.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Element-hasValue-propertyName" name="propertyName" type="String" effect="read">
<ownedComment xmi:id="Element-hasValue-propertyName-_ownedComment.0" annotatedElement="Element-hasValue-propertyName">
<body>The name of the property in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getValue" name="getValue" isQuery="true">
<ownedComment xmi:id="Element-getValue-_ownedComment.0" annotatedElement="Element-getValue">
<body>Retrieves the value of the property with the specified name in the specified stereotype for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getValue-_ownedParameter.0" direction="return">
<type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getValue-_ownedParameter.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getValue-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getValue-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-getValue-stereotype-_ownedComment.0" annotatedElement="Element-getValue-stereotype">
<body>The stereotype for which to retrieve the value.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Element-getValue-propertyName" name="propertyName" type="String" effect="read">
<ownedComment xmi:id="Element-getValue-propertyName-_ownedComment.0" annotatedElement="Element-getValue-propertyName">
<body>The name of the property whose value to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-setValue" name="setValue">
<ownedComment xmi:id="Element-setValue-_ownedComment.0" annotatedElement="Element-setValue">
<body>Sets the value of the property with the specified name in the specified stereotype for this element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-setValue-stereotype" name="stereotype" type="Stereotype" effect="read">
<ownedComment xmi:id="Element-setValue-stereotype-_ownedComment.0" annotatedElement="Element-setValue-stereotype">
<body>The stereotype for which to set the value.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Element-setValue-propertyName" name="propertyName" type="String" effect="read">
<ownedComment xmi:id="Element-setValue-propertyName-_ownedComment.0" annotatedElement="Element-setValue-propertyName">
<body>The name of the property whose value to set.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="Element-setValue-newValue" name="newValue" effect="read">
<ownedComment xmi:id="Element-setValue-newValue-_ownedComment.0" annotatedElement="Element-setValue-newValue">
<body>The new value for the property.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-createEAnnotation" name="createEAnnotation">
<ownedComment xmi:id="Element-createEAnnotation-_ownedComment.0" annotatedElement="Element-createEAnnotation">
<body>Creates an annotation with the specified source and this element as its model element.</body>
</ownedComment>
<ownedParameter xmi:id="Element-createEAnnotation-_ownedParameter.0" direction="return">
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EAnnotation"/>
</ownedParameter>
<ownedParameter xmi:id="Element-createEAnnotation-source" name="source" type="String" effect="read">
<ownedComment xmi:id="Element-createEAnnotation-source-_ownedComment.0" annotatedElement="Element-createEAnnotation-source">
<body>The source for the new annotation.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getRelationships" name="getRelationships">
<ownedComment xmi:id="Element-getRelationships-_ownedComment.0" annotatedElement="Element-getRelationships">
<body>Retrieves the relationships in which this element is involved.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getRelationships-_ownedParameter.0" type="Relationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRelationships-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRelationships-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getRelationships.1" name="getRelationships">
<ownedComment xmi:id="Element-getRelationships.1-_ownedComment.0" annotatedElement="Element-getRelationships.1">
<body>Retrieves the relationships of the specified type in which this element is involved.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getRelationships.1-_ownedParameter.0" type="Relationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRelationships.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getRelationships.1-eClass" name="eClass" effect="read">
<ownedComment xmi:id="Element-getRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getRelationships.1-eClass">
<body>The (meta)type of the relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getSourceDirectedRelationships" name="getSourceDirectedRelationships">
<ownedComment xmi:id="Element-getSourceDirectedRelationships-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships">
<body>Retrieves the directed relationships for which this element is a source.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0" type="DirectedRelationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getSourceDirectedRelationships.1" name="getSourceDirectedRelationships">
<ownedComment xmi:id="Element-getSourceDirectedRelationships.1-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships.1">
<body>Retrieves the directed relationships of the specified type for which this element is a source.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0" type="DirectedRelationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getSourceDirectedRelationships.1-eClass" name="eClass" effect="read">
<ownedComment xmi:id="Element-getSourceDirectedRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships.1-eClass">
<body>The (meta)type of the directed relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getTargetDirectedRelationships" name="getTargetDirectedRelationships">
<ownedComment xmi:id="Element-getTargetDirectedRelationships-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships">
<body>Retrieves the directed relationships for which this element is a target.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0" type="DirectedRelationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-getTargetDirectedRelationships.1" name="getTargetDirectedRelationships">
<ownedComment xmi:id="Element-getTargetDirectedRelationships.1-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships.1">
<body>Retrieves the directed relationships of the specified type for which this element is a target.</body>
</ownedComment>
<ownedParameter xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0" type="DirectedRelationship" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:id="Element-getTargetDirectedRelationships.1-eClass" name="eClass" effect="read">
<ownedComment xmi:id="Element-getTargetDirectedRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships.1-eClass">
<body>The (meta)type of the directed relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-allOwnedElements" name="allOwnedElements" isQuery="true" bodyCondition="Element-allOwnedElements-spec">
<ownedComment xmi:id="Element-allOwnedElements-_ownedComment.0" annotatedElement="Element-allOwnedElements">
<body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
</ownedComment>
<ownedRule xmi:id="Element-allOwnedElements-spec" name="spec" constrainedElement="Element-allOwnedElements">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Element-allOwnedElements-spec-_specification">
<language>OCL</language>
<body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Element-allOwnedElements-_ownedParameter.0" type="Element" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-allOwnedElements-_ownedParameter.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-allOwnedElements-_ownedParameter.0-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="Element-mustBeOwned" name="mustBeOwned" isQuery="true" bodyCondition="Element-mustBeOwned-spec">
<ownedComment xmi:id="Element-mustBeOwned-_ownedComment.0" annotatedElement="Element-mustBeOwned">
<body>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.</body>
</ownedComment>
<ownedRule xmi:id="Element-mustBeOwned-spec" name="spec" constrainedElement="Element-mustBeOwned">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Element-mustBeOwned-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="Element-mustBeOwned-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_profileApplication_applyingPackage" name="A_profileApplication_applyingPackage" visibility="private" memberEnd="Package-profileApplication ProfileApplication-applyingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedStereotype_profile" name="A_ownedStereotype_profile" visibility="private" memberEnd="Profile-ownedStereotype A_ownedStereotype_profile-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedStereotype_profile-_ownedEnd.0" type="Profile" association="A_ownedStereotype_profile">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedStereotype_profile-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedStereotype_profile-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_appliedProfile_profileApplication" name="A_appliedProfile_profileApplication" visibility="private" memberEnd="ProfileApplication-appliedProfile A_appliedProfile_profileApplication-_ownedEnd.0">
<ownedEnd xmi:id="A_appliedProfile_profileApplication-_ownedEnd.0" type="ProfileApplication" association="A_appliedProfile_profileApplication">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_appliedProfile_profileApplication-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_appliedProfile_profileApplication-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_extension_metaclass" name="A_extension_metaclass" visibility="private" memberEnd="Class-extension Extension-metaclass" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_ownedEnd_extension" name="A_ownedEnd_extension" visibility="private" memberEnd="Extension-ownedEnd A_ownedEnd_extension-_ownedEnd.0">
<ownedEnd xmi:id="A_ownedEnd_extension-_ownedEnd.0" type="Extension" association="A_ownedEnd_extension">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_ownedEnd_extension-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedEnd_extension-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_type_extensionEnd" name="A_type_extensionEnd" visibility="private" memberEnd="ExtensionEnd-type A_type_extensionEnd-_ownedEnd.0">
<ownedEnd xmi:id="A_type_extensionEnd-_ownedEnd.0" type="ExtensionEnd" association="A_type_extensionEnd">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_extensionEnd-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_extensionEnd-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_metaclassReference_profile" name="A_metaclassReference_profile" visibility="private" memberEnd="Profile-metaclassReference A_metaclassReference_profile-_ownedEnd.0">
<ownedEnd xmi:id="A_metaclassReference_profile-_ownedEnd.0" type="Profile" association="A_metaclassReference_profile">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_metaclassReference_profile-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_metaclassReference_profile-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_metamodelReference_profile" name="A_metamodelReference_profile" visibility="private" memberEnd="Profile-metamodelReference A_metamodelReference_profile-_ownedEnd.0">
<ownedEnd xmi:id="A_metamodelReference_profile-_ownedEnd.0" type="Profile" association="A_metamodelReference_profile">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_metamodelReference_profile-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_metamodelReference_profile-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_icon_stereotype" name="A_icon_stereotype" visibility="private" memberEnd="Stereotype-icon A_icon_stereotype-_ownedEnd.0">
<ownedEnd xmi:id="A_icon_stereotype-_ownedEnd.0" type="Stereotype" association="A_icon_stereotype">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_icon_stereotype-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_icon_stereotype-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ExtensionEnd" name="ExtensionEnd">
<ownedComment xmi:id="ExtensionEnd-_ownedComment.0" annotatedElement="ExtensionEnd">
<body>An extension end is used to tie an extension to a stereotype when extending a metaclass.</body>
</ownedComment>
<ownedComment xmi:id="ExtensionEnd-_ownedComment.1" annotatedElement="ExtensionEnd">
<body>The default multiplicity of an extension end is 0..1.</body>
</ownedComment>
<ownedRule xmi:id="ExtensionEnd-multiplicity" name="multiplicity" constrainedElement="ExtensionEnd">
<ownedComment xmi:id="ExtensionEnd-multiplicity-_ownedComment.0" annotatedElement="ExtensionEnd-multiplicity">
<body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-multiplicity-_specification">
<language>OCL</language>
<body>(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ExtensionEnd-aggregation" name="aggregation" constrainedElement="ExtensionEnd">
<ownedComment xmi:id="ExtensionEnd-aggregation-_ownedComment.0" annotatedElement="ExtensionEnd-aggregation">
<body>The aggregation of an ExtensionEnd is composite.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-aggregation-_specification">
<language>OCL</language>
<body>self.aggregation = #composite</body>
</specification>
</ownedRule>
<generalization xmi:id="ExtensionEnd-_generalization.0" general="Property"/>
<ownedAttribute xmi:id="ExtensionEnd-type" name="type" type="Stereotype" redefinedProperty="TypedElement-type" association="A_type_extensionEnd">
<ownedComment xmi:id="ExtensionEnd-type-_ownedComment.0" annotatedElement="ExtensionEnd-type">
<body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExtensionEnd-type-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionEnd-type-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ExtensionEnd-lower" name="lower" type="Integer" isDerived="true" redefinedProperty="MultiplicityElement-lower">
<ownedComment xmi:id="ExtensionEnd-lower-_ownedComment.0" annotatedElement="ExtensionEnd-lower">
<body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExtensionEnd-lower-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionEnd-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionEnd-lower-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:id="ExtensionEnd-getLower" name="getLower" visibility="protected" isQuery="true">
<ownedParameter xmi:id="ExtensionEnd-getLower-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="ExtensionEnd-setLower" name="setLower" visibility="protected">
<ownedParameter xmi:id="ExtensionEnd-setLower-newLower" name="newLower" visibility="protected" type="Integer" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="ExtensionEnd-lowerBound" name="lowerBound" isQuery="true" redefinedOperation="MultiplicityElement-lowerBound" bodyCondition="ExtensionEnd-lowerBound-spec">
<ownedComment xmi:id="ExtensionEnd-lowerBound-_ownedComment.0" annotatedElement="ExtensionEnd-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;
lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
</ownedComment>
<ownedRule xmi:id="ExtensionEnd-lowerBound-spec" name="spec" constrainedElement="ExtensionEnd-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="ExtensionEnd-lowerBound-_ownedParameter.0" type="Integer" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="VariableAction" name="VariableAction" isAbstract="true">
<ownedComment xmi:id="VariableAction-_ownedComment.0" annotatedElement="VariableAction">
<body>VariableAction is an abstract class for actions that operate on a statically specified variable.</body>
</ownedComment>
<ownedRule xmi:id="VariableAction-scope_of_variable" name="scope_of_variable" constrainedElement="VariableAction">
<ownedComment xmi:id="VariableAction-scope_of_variable-_ownedComment.0" annotatedElement="VariableAction-scope_of_variable">
<body>The action must be in the scope of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="VariableAction-scope_of_variable-_specification">
<language>OCL</language>
<body>self.variable.isAccessibleBy(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="VariableAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="VariableAction-variable" name="variable" type="Variable" association="A_variable_variableAction">
<ownedComment xmi:id="VariableAction-variable-_ownedComment.0" annotatedElement="VariableAction-variable">
<body>Variable to be read.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="VariableAction-variable-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="VariableAction-variable-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadVariableAction" name="ReadVariableAction">
<ownedComment xmi:id="ReadVariableAction-_ownedComment.0" annotatedElement="ReadVariableAction">
<body>A read variable action is a variable action that retrieves the values of a variable.</body>
</ownedComment>
<ownedRule xmi:id="ReadVariableAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadVariableAction">
<ownedComment xmi:id="ReadVariableAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadVariableAction-type_and_ordering">
<body>The type and ordering of the result output pin of a read-variable action are the same as the type and ordering of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadVariableAction-type_and_ordering-_specification">
<language>OCL</language>
<body>self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadVariableAction-compatible_multiplicity" name="compatible_multiplicity" constrainedElement="ReadVariableAction">
<ownedComment xmi:id="ReadVariableAction-compatible_multiplicity-_ownedComment.0" annotatedElement="ReadVariableAction-compatible_multiplicity">
<body>The multiplicity of the variable must be compatible with the multiplicity of the output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadVariableAction-compatible_multiplicity-_specification">
<language>OCL</language>
<body>self.variable.multiplicity.compatibleWith(self.result.multiplicity)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadVariableAction-_generalization.0" general="VariableAction"/>
<ownedAttribute xmi:id="ReadVariableAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readVariableAction">
<ownedComment xmi:id="ReadVariableAction-result-_ownedComment.0" annotatedElement="ReadVariableAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadVariableAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadVariableAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="WriteVariableAction" name="WriteVariableAction" isAbstract="true">
<ownedComment xmi:id="WriteVariableAction-_ownedComment.0" annotatedElement="WriteVariableAction">
<body>WriteVariableAction is an abstract class for variable actions that change variable values.</body>
</ownedComment>
<ownedRule xmi:id="WriteVariableAction-same_type" name="same_type" constrainedElement="WriteVariableAction">
<ownedComment xmi:id="WriteVariableAction-same_type-_ownedComment.0" annotatedElement="WriteVariableAction-same_type">
<body>The type input pin is the same as the type of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="WriteVariableAction-same_type-_specification">
<language>OCL</language>
<body>self.value.type = self.variable.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="WriteVariableAction-multiplicity" name="multiplicity" constrainedElement="WriteVariableAction">
<ownedComment xmi:id="WriteVariableAction-multiplicity-_ownedComment.0" annotatedElement="WriteVariableAction-multiplicity">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="WriteVariableAction-multiplicity-_specification">
<language>OCL</language>
<body>self.value.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="WriteVariableAction-_generalization.0" general="VariableAction"/>
<ownedAttribute xmi:id="WriteVariableAction-value" name="value" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_value_writeVariableAction">
<ownedComment xmi:id="WriteVariableAction-value-_ownedComment.0" annotatedElement="WriteVariableAction-value">
<body>Value to be added or removed from the variable.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="WriteVariableAction-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="WriteVariableAction-value-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ClearVariableAction" name="ClearVariableAction">
<ownedComment xmi:id="ClearVariableAction-_ownedComment.0" annotatedElement="ClearVariableAction">
<body>A clear variable action is a variable action that removes all values of a variable.</body>
</ownedComment>
<generalization xmi:id="ClearVariableAction-_generalization.0" general="VariableAction"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="AddVariableValueAction" name="AddVariableValueAction">
<ownedComment xmi:id="AddVariableValueAction-_ownedComment.0" annotatedElement="AddVariableValueAction">
<body>An add variable value action is a write variable action for adding values to a variable.</body>
</ownedComment>
<ownedRule xmi:id="AddVariableValueAction-single_input_pin" name="single_input_pin" constrainedElement="AddVariableValueAction">
<ownedComment xmi:id="AddVariableValueAction-single_input_pin-_ownedComment.0" annotatedElement="AddVariableValueAction-single_input_pin">
<body>Actions adding values to ordered variables must have a single input pin for the insertion point with type UnlimtedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AddVariableValueAction-single_input_pin-_specification">
<language>OCL</language>
<body>let insertAtPins : Collection = self.insertAt in&#xA;if self.variable.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
</specification>
</ownedRule>
<generalization xmi:id="AddVariableValueAction-_generalization.0" general="WriteVariableAction"/>
<ownedAttribute xmi:id="AddVariableValueAction-isReplaceAll" name="isReplaceAll" type="Boolean">
<ownedComment xmi:id="AddVariableValueAction-isReplaceAll-_ownedComment.0" annotatedElement="AddVariableValueAction-isReplaceAll">
<body>Specifies whether existing values of the variable should be removed before adding the new value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AddVariableValueAction-isReplaceAll-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="AddVariableValueAction-insertAt" name="insertAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_insertAt_addVariableValueAction">
<ownedComment xmi:id="AddVariableValueAction-insertAt-_ownedComment.0" annotatedElement="AddVariableValueAction-insertAt">
<body>Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AddVariableValueAction-insertAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="AddVariableValueAction-insertAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="RemoveVariableValueAction" name="RemoveVariableValueAction">
<ownedComment xmi:id="RemoveVariableValueAction-_ownedComment.0" annotatedElement="RemoveVariableValueAction">
<body>A remove variable value action is a write variable action that removes values from variables.</body>
</ownedComment>
<ownedRule xmi:id="RemoveVariableValueAction-unlimited_natural" name="unlimited_natural" constrainedElement="RemoveVariableValueAction">
<ownedComment xmi:id="RemoveVariableValueAction-unlimited_natural-_ownedComment.0" annotatedElement="RemoveVariableValueAction-unlimited_natural">
<body>Actions removing a value from ordered nonunique variables must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type UnlimitedNatural with multiplicity of 1..1, otherwise the action has no removeAt input pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="RemoveVariableValueAction-unlimited_natural-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="RemoveVariableValueAction-_generalization.0" general="WriteVariableAction"/>
<ownedAttribute xmi:id="RemoveVariableValueAction-isRemoveDuplicates" name="isRemoveDuplicates" type="Boolean">
<ownedComment xmi:id="RemoveVariableValueAction-isRemoveDuplicates-_ownedComment.0" annotatedElement="RemoveVariableValueAction-isRemoveDuplicates">
<body>Specifies whether to remove duplicates of the value in nonunique variables.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RemoveVariableValueAction-isRemoveDuplicates-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="RemoveVariableValueAction-removeAt" name="removeAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_removeAt_removeVariableValueAction">
<ownedComment xmi:id="RemoveVariableValueAction-removeAt-_ownedComment.0" annotatedElement="RemoveVariableValueAction-removeAt">
<body>Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RemoveVariableValueAction-removeAt-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="RemoveVariableValueAction-removeAt-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="RaiseExceptionAction" name="RaiseExceptionAction">
<ownedComment xmi:id="RaiseExceptionAction-_ownedComment.0" annotatedElement="RaiseExceptionAction">
<body>A raise exception action is an action that causes an exception to occur. The input value becomes the exception object.</body>
</ownedComment>
<generalization xmi:id="RaiseExceptionAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="RaiseExceptionAction-exception" name="exception" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_exception_raiseExceptionAction">
<ownedComment xmi:id="RaiseExceptionAction-exception-_ownedComment.0" annotatedElement="RaiseExceptionAction-exception">
<body>An input pin whose value becomes an exception object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RaiseExceptionAction-exception-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="RaiseExceptionAction-exception-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ActionInputPin" name="ActionInputPin">
<ownedComment xmi:id="ActionInputPin-_ownedComment.0" annotatedElement="ActionInputPin">
<body>An action input pin is a kind of pin that executes an action to determine the values to input to another.</body>
</ownedComment>
<ownedRule xmi:id="ActionInputPin-one_output_pin" name="one_output_pin" constrainedElement="ActionInputPin">
<ownedComment xmi:id="ActionInputPin-one_output_pin-_ownedComment.0" annotatedElement="ActionInputPin-one_output_pin">
<body>The fromAction of an action input pin must have exactly one output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-one_output_pin-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActionInputPin-input_pin" name="input_pin" constrainedElement="ActionInputPin">
<ownedComment xmi:id="ActionInputPin-input_pin-_ownedComment.0" annotatedElement="ActionInputPin-input_pin">
<body>The fromAction of an action input pin must only have action input pins as input pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-input_pin-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ActionInputPin-no_control_or_data_flow" name="no_control_or_data_flow" constrainedElement="ActionInputPin">
<ownedComment xmi:id="ActionInputPin-no_control_or_data_flow-_ownedComment.0" annotatedElement="ActionInputPin-no_control_or_data_flow">
<body>The fromAction of an action input pin cannot have control or data flows coming into or out of it or its pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-no_control_or_data_flow-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ActionInputPin-_generalization.0" general="InputPin"/>
<ownedAttribute xmi:id="ActionInputPin-fromAction" name="fromAction" type="Action" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_fromAction_actionInputPin">
<ownedComment xmi:id="ActionInputPin-fromAction-_ownedComment.0" annotatedElement="ActionInputPin-fromAction">
<body>The action used to provide values.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActionInputPin-fromAction-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActionInputPin-fromAction-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_variable_variableAction" name="A_variable_variableAction" visibility="private" memberEnd="VariableAction-variable A_variable_variableAction-_ownedEnd.0">
<ownedEnd xmi:id="A_variable_variableAction-_ownedEnd.0" type="VariableAction" association="A_variable_variableAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_variable_variableAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_variable_variableAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readVariableAction" name="A_result_readVariableAction" visibility="private" memberEnd="ReadVariableAction-result A_result_readVariableAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readVariableAction-_ownedEnd.0" type="ReadVariableAction" association="A_result_readVariableAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readVariableAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readVariableAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_writeVariableAction" name="A_value_writeVariableAction" visibility="private" memberEnd="WriteVariableAction-value A_value_writeVariableAction-_ownedEnd.0">
<ownedEnd xmi:id="A_value_writeVariableAction-_ownedEnd.0" type="WriteVariableAction" association="A_value_writeVariableAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_writeVariableAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_writeVariableAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_addVariableValueAction" name="A_insertAt_addVariableValueAction" visibility="private" memberEnd="AddVariableValueAction-insertAt A_insertAt_addVariableValueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_insertAt_addVariableValueAction-_ownedEnd.0" type="AddVariableValueAction" association="A_insertAt_addVariableValueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_insertAt_addVariableValueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_addVariableValueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_removeAt_removeVariableValueAction" name="A_removeAt_removeVariableValueAction" visibility="private" memberEnd="RemoveVariableValueAction-removeAt A_removeAt_removeVariableValueAction-_ownedEnd.0">
<ownedEnd xmi:id="A_removeAt_removeVariableValueAction-_ownedEnd.0" type="RemoveVariableValueAction" association="A_removeAt_removeVariableValueAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_removeAt_removeVariableValueAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_removeAt_removeVariableValueAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_fromAction_actionInputPin" name="A_fromAction_actionInputPin" visibility="private" memberEnd="ActionInputPin-fromAction A_fromAction_actionInputPin-_ownedEnd.0">
<ownedEnd xmi:id="A_fromAction_actionInputPin-_ownedEnd.0" type="ActionInputPin" association="A_fromAction_actionInputPin">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_fromAction_actionInputPin-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_fromAction_actionInputPin-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_exception_raiseExceptionAction" name="A_exception_raiseExceptionAction" visibility="private" memberEnd="RaiseExceptionAction-exception A_exception_raiseExceptionAction-_ownedEnd.0">
<ownedEnd xmi:id="A_exception_raiseExceptionAction-_ownedEnd.0" type="RaiseExceptionAction" association="A_exception_raiseExceptionAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_exception_raiseExceptionAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exception_raiseExceptionAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="GeneralizationSet" name="GeneralizationSet">
<ownedComment xmi:id="GeneralizationSet-_ownedComment.0" annotatedElement="GeneralizationSet">
<body>A generalization set is a packageable element whose instances define collections of subsets of generalization relationships.</body>
</ownedComment>
<ownedRule xmi:id="GeneralizationSet-generalization_same_classifier" name="generalization_same_classifier" constrainedElement="GeneralizationSet">
<ownedComment xmi:id="GeneralizationSet-generalization_same_classifier-_ownedComment.0" annotatedElement="GeneralizationSet-generalization_same_classifier">
<body>Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralizationSet-generalization_same_classifier-_specification">
<language>OCL</language>
<body>generalization->collect(g | g.general)->asSet()->size() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="GeneralizationSet-maps_to_generalization_set" name="maps_to_generalization_set" constrainedElement="GeneralizationSet">
<ownedComment xmi:id="GeneralizationSet-maps_to_generalization_set-_ownedComment.0" annotatedElement="GeneralizationSet-maps_to_generalization_set">
<body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralizationSet-maps_to_generalization_set-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="GeneralizationSet-_generalization.0" general="PackageableElement"/>
<ownedAttribute xmi:id="GeneralizationSet-isCovering" name="isCovering" type="Boolean">
<ownedComment xmi:id="GeneralizationSet-isCovering-_ownedComment.0" annotatedElement="GeneralizationSet-isCovering">
<body>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.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="GeneralizationSet-isCovering-_defaultValue" type="Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="GeneralizationSet-isDisjoint" name="isDisjoint" type="Boolean">
<ownedComment xmi:id="GeneralizationSet-isDisjoint-_ownedComment.0" annotatedElement="GeneralizationSet-isDisjoint">
<body>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. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="GeneralizationSet-isDisjoint-_defaultValue" type="Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="GeneralizationSet-powertype" name="powertype" type="Classifier" association="A_powertypeExtent_powertype">
<ownedComment xmi:id="GeneralizationSet-powertype-_ownedComment.0" annotatedElement="GeneralizationSet-powertype">
<body>Designates the Classifier that is defined as the power type for the associated GeneralizationSet.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="GeneralizationSet-powertype-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralizationSet-powertype-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="GeneralizationSet-generalization" name="generalization" type="Generalization" association="A_generalizationSet_generalization">
<ownedComment xmi:id="GeneralizationSet-generalization-_ownedComment.0" annotatedElement="GeneralizationSet-generalization">
<body>Designates the instances of Generalization which are members of a given GeneralizationSet.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="GeneralizationSet-generalization-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralizationSet-generalization-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Generalization" name="Generalization">
<ownedComment xmi:id="Generalization-_ownedComment.0" annotatedElement="Generalization">
<body>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 indirect instance of the general classifier. Thus, the specific classifier inherits the features of the more general classifier.</body>
</ownedComment>
<ownedComment xmi:id="Generalization-_ownedComment.1" annotatedElement="Generalization">
<body>A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier.</body>
</ownedComment>
<ownedRule xmi:id="Generalization-generalization_same_classifier" name="generalization_same_classifier" constrainedElement="Generalization">
<ownedComment xmi:id="Generalization-generalization_same_classifier-_ownedComment.0" annotatedElement="Generalization-generalization_same_classifier">
<body>Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Generalization-generalization_same_classifier-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="Generalization-_generalization.0" general="DirectedRelationship"/>
<ownedAttribute xmi:id="Generalization-isSubstitutable" name="isSubstitutable" type="Boolean">
<ownedComment xmi:id="Generalization-isSubstitutable-_ownedComment.0" annotatedElement="Generalization-isSubstitutable">
<body>Indicates whether the specific classifier can be used wherever the general classifier can be used. If true, the execution traces of the specific classifier will be a superset of the execution traces of the general classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Generalization-isSubstitutable-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-isSubstitutable-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="Generalization-specific" name="specific" type="Classifier" subsettedProperty="DirectedRelationship-source Element-owner" association="A_generalization_specific">
<ownedComment xmi:id="Generalization-specific-_ownedComment.0" annotatedElement="Generalization-specific">
<body>References the specializing classifier in the Generalization relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Generalization-specific-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-specific-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Generalization-general" name="general" type="Classifier" subsettedProperty="DirectedRelationship-target" association="A_general_generalization">
<ownedComment xmi:id="Generalization-general-_ownedComment.0" annotatedElement="Generalization-general">
<body>References the general classifier in the Generalization relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Generalization-general-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-general-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="Generalization-generalizationSet" name="generalizationSet" type="GeneralizationSet" association="A_generalizationSet_generalization">
<ownedComment xmi:id="Generalization-generalizationSet-_ownedComment.0" annotatedElement="Generalization-generalizationSet">
<body>Designates a set in which instances of Generalization is considered members.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Generalization-generalizationSet-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-generalizationSet-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_powertypeExtent_powertype" name="A_powertypeExtent_powertype" visibility="private" memberEnd="Classifier-powertypeExtent GeneralizationSet-powertype"/>
<packagedElement xmi:type="uml:Association" xmi:id="A_generalizationSet_generalization" name="A_generalizationSet_generalization" visibility="private" memberEnd="Generalization-generalizationSet GeneralizationSet-generalization"/>
<packagedElement xmi:type="uml:Class" xmi:id="InformationItem" name="InformationItem">
<ownedComment xmi:id="InformationItem-_ownedComment.0" annotatedElement="InformationItem">
<body>An information item is an abstraction of all kinds of information that can be exchanged between objects. It is a kind of classifier intended for representing information in a very abstract way, one which cannot be instantiated.</body>
</ownedComment>
<ownedRule xmi:id="InformationItem-sources_and_targets" name="sources_and_targets" constrainedElement="InformationItem">
<ownedComment xmi:id="InformationItem-sources_and_targets-_ownedComment.0" annotatedElement="InformationItem-sources_and_targets">
<body>The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any.The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-sources_and_targets-_specification">
<language>OCL</language>
<body>(self.represented->select(p | p->oclIsKindOf(InformationItem))->forAll(p |&#xD;&#xA; p.informationFlow.source->forAll(q | self.informationFlow.source->include(q)) and&#xD;&#xA; p.informationFlow.target->forAll(q | self.informationFlow.target->include(q)))) and&#xD;&#xA; (self.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;&#xA; oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InformationItem-has_no" name="has_no" constrainedElement="InformationItem">
<ownedComment xmi:id="InformationItem-has_no-_ownedComment.0" annotatedElement="InformationItem-has_no">
<body>An informationItem has no feature, no generalization, and no associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-has_no-_specification">
<language>OCL</language>
<body>self.generalization->isEmpty() and self.feature->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InformationItem-not_instantiable" name="not_instantiable" constrainedElement="InformationItem">
<ownedComment xmi:id="InformationItem-not_instantiable-_ownedComment.0" annotatedElement="InformationItem-not_instantiable">
<body>It is not instantiable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-not_instantiable-_specification">
<language>OCL</language>
<body>isAbstract</body>
</specification>
</ownedRule>
<generalization xmi:id="InformationItem-_generalization.0" general="Classifier"/>
<ownedAttribute xmi:id="InformationItem-represented" name="represented" type="Classifier" association="A_represented_representation">
<ownedComment xmi:id="InformationItem-represented-_ownedComment.0" annotatedElement="InformationItem-represented">
<body>Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationItem-represented-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationItem-represented-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="InformationFlow" name="InformationFlow">
<ownedComment xmi:id="InformationFlow-_ownedComment.0" annotatedElement="InformationFlow">
<body>An information flow specifies that one or more information items circulates from its sources to its targets. Information flows require some kind of information channel for transmitting information items from the source to the destination. An information channel is represented in various ways depending on the nature of its sources and targets. It may be represented by connectors, links, associations, or even dependencies. For example, if the source and destination are parts in some composite structure such as a collaboration, then the information channel is likely to be represented by a connector between them. Or, if the source and target are objects (which are a kind of instance specification), they may be represented by a link that joins the two, and so on.</body>
</ownedComment>
<ownedRule xmi:id="InformationFlow-sources_and_targets_kind" name="sources_and_targets_kind" constrainedElement="InformationFlow">
<ownedComment xmi:id="InformationFlow-sources_and_targets_kind-_ownedComment.0" annotatedElement="InformationFlow-sources_and_targets_kind">
<body>The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-sources_and_targets_kind-_specification">
<language>OCL</language>
<body>(self.source->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) and&#xD;&#xA; (self.target->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InformationFlow-must_conform" name="must_conform" constrainedElement="InformationFlow">
<ownedComment xmi:id="InformationFlow-must_conform-_ownedComment.0" annotatedElement="InformationFlow-must_conform">
<body>The sources and targets of the information flow must conform with the sources and targets or conversely the targets and sources of the realization relationships.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-must_conform-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="InformationFlow-convey_classifiers" name="convey_classifiers" constrainedElement="InformationFlow">
<ownedComment xmi:id="InformationFlow-convey_classifiers-_ownedComment.0" annotatedElement="InformationFlow-convey_classifiers">
<body>An information flow can only convey classifiers that are allowed to represent an information item.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-convey_classifiers-_specification">
<language>OCL</language>
<body>self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))</body>
</specification>
</ownedRule>
<generalization xmi:id="InformationFlow-_generalization.0" general="DirectedRelationship"/>
<generalization xmi:id="InformationFlow-_generalization.1" general="PackageableElement"/>
<ownedAttribute xmi:id="InformationFlow-realization" name="realization" type="Relationship" association="A_realization_abstraction.1">
<ownedComment xmi:id="InformationFlow-realization-_ownedComment.0" annotatedElement="InformationFlow-realization">
<body>Determines which Relationship will realize the specified flow</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realization-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realization-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-conveyed" name="conveyed" type="Classifier" association="A_conveyed_informationFlow">
<ownedComment xmi:id="InformationFlow-conveyed-_ownedComment.0" annotatedElement="InformationFlow-conveyed">
<body>Specifies the information items that may circulate on this information flow.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-conveyed-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-conveyed-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-informationSource" name="informationSource" type="NamedElement" subsettedProperty="DirectedRelationship-source" association="A_informationSource_informationFlow">
<ownedComment xmi:id="InformationFlow-informationSource-_ownedComment.0" annotatedElement="InformationFlow-informationSource">
<body>Defines from which source the conveyed InformationItems are initiated.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-informationSource-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-informationSource-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-informationTarget" name="informationTarget" type="NamedElement" subsettedProperty="DirectedRelationship-target" association="A_informationTarget_informationFlow">
<ownedComment xmi:id="InformationFlow-informationTarget-_ownedComment.0" annotatedElement="InformationFlow-informationTarget">
<body>Defines to which target the conveyed InformationItems are directed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-informationTarget-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-informationTarget-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-realizingActivityEdge" name="realizingActivityEdge" type="ActivityEdge" association="A_realizingActivityEdge_informationFlow">
<ownedComment xmi:id="InformationFlow-realizingActivityEdge-_ownedComment.0" annotatedElement="InformationFlow-realizingActivityEdge">
<body>Determines which ActivityEdges will realize the specified flow.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingActivityEdge-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingActivityEdge-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-realizingConnector" name="realizingConnector" type="Connector" association="A_realizingConnector_informationFlow">
<ownedComment xmi:id="InformationFlow-realizingConnector-_ownedComment.0" annotatedElement="InformationFlow-realizingConnector">
<body>Determines which Connectors will realize the specified flow.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingConnector-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingConnector-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="InformationFlow-realizingMessage" name="realizingMessage" type="Message" association="A_realizingMessage_informationFlow">
<ownedComment xmi:id="InformationFlow-realizingMessage-_ownedComment.0" annotatedElement="InformationFlow-realizingMessage">
<body>Determines which Messages will realize the specified flow.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingMessage-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingMessage-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_realization_abstraction.1" name="A_realization_abstraction" visibility="private" memberEnd="InformationFlow-realization A_realization_abstraction.1-abstraction">
<ownedEnd xmi:id="A_realization_abstraction.1-abstraction" name="abstraction" type="InformationFlow" association="A_realization_abstraction.1">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realization_abstraction.1-abstraction-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realization_abstraction.1-abstraction-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_represented_representation" name="A_represented_representation" visibility="private" memberEnd="InformationItem-represented A_represented_representation-representation">
<ownedEnd xmi:id="A_represented_representation-representation" name="representation" type="InformationItem" association="A_represented_representation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represented_representation-representation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represented_representation-representation-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_conveyed_informationFlow" name="A_conveyed_informationFlow" visibility="private" memberEnd="InformationFlow-conveyed A_conveyed_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_conveyed_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_conveyed_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_conveyed_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_conveyed_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_informationSource_informationFlow" name="A_informationSource_informationFlow" visibility="private" memberEnd="InformationFlow-informationSource A_informationSource_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_informationSource_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_informationSource_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_informationSource_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_informationSource_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_informationTarget_informationFlow" name="A_informationTarget_informationFlow" visibility="private" memberEnd="InformationFlow-informationTarget A_informationTarget_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_informationTarget_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_informationTarget_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_informationTarget_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_informationTarget_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_realizingActivityEdge_informationFlow" name="A_realizingActivityEdge_informationFlow" visibility="private" memberEnd="InformationFlow-realizingActivityEdge A_realizingActivityEdge_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_realizingActivityEdge_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_realizingActivityEdge_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingActivityEdge_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingActivityEdge_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_realizingConnector_informationFlow" name="A_realizingConnector_informationFlow" visibility="private" memberEnd="InformationFlow-realizingConnector A_realizingConnector_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_realizingConnector_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_realizingConnector_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingConnector_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingConnector_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_realizingMessage_informationFlow" name="A_realizingMessage_informationFlow" visibility="private" memberEnd="InformationFlow-realizingMessage A_realizingMessage_informationFlow-_ownedEnd.0">
<ownedEnd xmi:id="A_realizingMessage_informationFlow-_ownedEnd.0" type="InformationFlow" association="A_realizingMessage_informationFlow">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingMessage_informationFlow-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingMessage_informationFlow-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Model" name="Model">
<ownedComment xmi:id="Model-_ownedComment.0" annotatedElement="Model">
<body>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.</body>
</ownedComment>
<generalization xmi:id="Model-_generalization.0" general="Package"/>
<ownedAttribute xmi:id="Model-viewpoint" name="viewpoint" type="String">
<ownedComment xmi:id="Model-viewpoint-_ownedComment.0" annotatedElement="Model-viewpoint">
<body>The name of the viewpoint that is expressed by a model (This name may refer to a profile definition).</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Model-viewpoint-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Model-viewpoint-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:id="Model-isMetamodel" name="isMetamodel" isQuery="true">
<ownedComment xmi:id="Model-isMetamodel-_ownedComment.0" annotatedElement="Model-isMetamodel">
<body>Determines whether this model is a metamodel.</body>
</ownedComment>
<ownedParameter xmi:id="Model-isMetamodel-_ownedParameter.0" type="Boolean" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadExtentAction" name="ReadExtentAction">
<ownedComment xmi:id="ReadExtentAction-_ownedComment.0" annotatedElement="ReadExtentAction">
<body>A read extent action is an action that retrieves the current instances of a classifier.</body>
</ownedComment>
<ownedRule xmi:id="ReadExtentAction-type_is_classifier" name="type_is_classifier" constrainedElement="ReadExtentAction">
<ownedComment xmi:id="ReadExtentAction-type_is_classifier-_ownedComment.0" annotatedElement="ReadExtentAction-type_is_classifier">
<body>The type of the result output pin is the classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadExtentAction-type_is_classifier-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadExtentAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadExtentAction">
<ownedComment xmi:id="ReadExtentAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadExtentAction-multiplicity_of_result">
<body>The multiplicity of the result output pin is 0..*.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadExtentAction-multiplicity_of_result-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(0,#null)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadExtentAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReadExtentAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readExtentAction">
<ownedComment xmi:id="ReadExtentAction-result-_ownedComment.0" annotatedElement="ReadExtentAction-result">
<body>The runtime instances of the classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadExtentAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadExtentAction-result-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadExtentAction-classifier" name="classifier" type="Classifier" association="A_classifier_readExtentAction">
<ownedComment xmi:id="ReadExtentAction-classifier-_ownedComment.0" annotatedElement="ReadExtentAction-classifier">
<body>The classifier whose instances are to be retrieved.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadExtentAction-classifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadExtentAction-classifier-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReclassifyObjectAction" name="ReclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-_ownedComment.0" annotatedElement="ReclassifyObjectAction">
<body>A reclassify object action is an action that changes which classifiers classify an object.</body>
</ownedComment>
<ownedRule xmi:id="ReclassifyObjectAction-classifier_not_abstract" name="classifier_not_abstract" constrainedElement="ReclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-classifier_not_abstract-_ownedComment.0" annotatedElement="ReclassifyObjectAction-classifier_not_abstract">
<body>None of the new classifiers may be abstract.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-classifier_not_abstract-_specification">
<language>OCL</language>
<body>not self.newClassifier->exists(isAbstract = true)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReclassifyObjectAction-multiplicity" name="multiplicity" constrainedElement="ReclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-multiplicity-_ownedComment.0" annotatedElement="ReclassifyObjectAction-multiplicity">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-multiplicity-_specification">
<language>OCL</language>
<body>self.argument.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReclassifyObjectAction-input_pin" name="input_pin" constrainedElement="ReclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-input_pin-_ownedComment.0" annotatedElement="ReclassifyObjectAction-input_pin">
<body>The input pin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-input_pin-_specification">
<language>OCL</language>
<body>self.argument.type->size() = 0</body>
</specification>
</ownedRule>
<generalization xmi:id="ReclassifyObjectAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReclassifyObjectAction-isReplaceAll" name="isReplaceAll" type="Boolean">
<ownedComment xmi:id="ReclassifyObjectAction-isReplaceAll-_ownedComment.0" annotatedElement="ReclassifyObjectAction-isReplaceAll">
<body>Specifies whether existing classifiers should be removed before adding the new classifiers.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReclassifyObjectAction-isReplaceAll-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReclassifyObjectAction-oldClassifier" name="oldClassifier" type="Classifier" association="A_oldClassifier_reclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-oldClassifier-_ownedComment.0" annotatedElement="ReclassifyObjectAction-oldClassifier">
<body>A set of classifiers to be removed from the classifiers of the object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReclassifyObjectAction-oldClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReclassifyObjectAction-oldClassifier-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReclassifyObjectAction-newClassifier" name="newClassifier" type="Classifier" association="A_newClassifier_reclassifyObjectAction">
<ownedComment xmi:id="ReclassifyObjectAction-newClassifier-_ownedComment.0" annotatedElement="ReclassifyObjectAction-newClassifier">
<body>A set of classifiers to be added to the classifiers of the object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReclassifyObjectAction-newClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReclassifyObjectAction-newClassifier-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReclassifyObjectAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_reclassifyObjectAction_object">
<ownedComment xmi:id="ReclassifyObjectAction-object-_ownedComment.0" annotatedElement="ReclassifyObjectAction-object">
<body>Holds the object to be reclassified.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReclassifyObjectAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReclassifyObjectAction-object-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadIsClassifiedObjectAction" name="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction">
<body>A read is classified object action is an action that determines whether a runtime object is classified by a given classifier.</body>
</ownedComment>
<ownedRule xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input" name="multiplicity_of_input" constrainedElement="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-multiplicity_of_input">
<body>The multiplicity of the input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input-_specification">
<language>OCL</language>
<body>self.object.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadIsClassifiedObjectAction-no_type" name="no_type" constrainedElement="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-no_type-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-no_type">
<body>The input pin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-no_type-_specification">
<language>OCL</language>
<body>self.object.type->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output" name="multiplicity_of_output" constrainedElement="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-multiplicity_of_output">
<body>The multiplicity of the output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadIsClassifiedObjectAction-boolean_result" name="boolean_result" constrainedElement="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-boolean_result-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-boolean_result">
<body>The type of the output pin is Boolean</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-boolean_result-_specification">
<language>OCL</language>
<body>self.result.type = Boolean</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadIsClassifiedObjectAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReadIsClassifiedObjectAction-isDirect" name="isDirect" type="Boolean">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-isDirect-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-isDirect">
<body>Indicates whether the classifier must directly classify the input object.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReadIsClassifiedObjectAction-isDirect-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadIsClassifiedObjectAction-classifier" name="classifier" type="Classifier" association="A_classifier_readIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-classifier-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-classifier">
<body>The classifier against which the classification of the input object is tested.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadIsClassifiedObjectAction-classifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadIsClassifiedObjectAction-classifier-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadIsClassifiedObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-result-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-result">
<body>After termination of the action, will hold the result of the test.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadIsClassifiedObjectAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadIsClassifiedObjectAction-result-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadIsClassifiedObjectAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readIsClassifiedObjectAction">
<ownedComment xmi:id="ReadIsClassifiedObjectAction-object-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-object">
<body>Holds the object whose classification is to be tested.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadIsClassifiedObjectAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadIsClassifiedObjectAction-object-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="StartClassifierBehaviorAction" name="StartClassifierBehaviorAction">
<ownedComment xmi:id="StartClassifierBehaviorAction-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction">
<body>A start classifier behavior action is an action that starts the classifier behavior of the input.</body>
</ownedComment>
<ownedRule xmi:id="StartClassifierBehaviorAction-multiplicity" name="multiplicity" constrainedElement="StartClassifierBehaviorAction">
<ownedComment xmi:id="StartClassifierBehaviorAction-multiplicity-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-multiplicity">
<body>The multiplicity of the input pin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StartClassifierBehaviorAction-multiplicity-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="StartClassifierBehaviorAction-type_has_classifier" name="type_has_classifier" constrainedElement="StartClassifierBehaviorAction">
<ownedComment xmi:id="StartClassifierBehaviorAction-type_has_classifier-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-type_has_classifier">
<body>If the input pin has a type, then the type must have a classifier behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="StartClassifierBehaviorAction-type_has_classifier-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="StartClassifierBehaviorAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="StartClassifierBehaviorAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_startClassifierBehaviorAction">
<ownedComment xmi:id="StartClassifierBehaviorAction-object-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-object">
<body>Holds the object on which to start the owned behavior.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StartClassifierBehaviorAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="StartClassifierBehaviorAction-object-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="QualifierValue" name="QualifierValue">
<ownedComment xmi:id="QualifierValue-_ownedComment.0" annotatedElement="QualifierValue">
<body>A qualifier value is not an action. It is an element that identifies links. It gives a single qualifier within a link end data specification.</body>
</ownedComment>
<ownedRule xmi:id="QualifierValue-qualifier_attribute" name="qualifier_attribute" constrainedElement="QualifierValue">
<ownedComment xmi:id="QualifierValue-qualifier_attribute-_ownedComment.0" annotatedElement="QualifierValue-qualifier_attribute">
<body>The qualifier attribute must be a qualifier of the association end of the link-end data.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-qualifier_attribute-_specification">
<language>OCL</language>
<body>self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="QualifierValue-type_of_qualifier" name="type_of_qualifier" constrainedElement="QualifierValue">
<ownedComment xmi:id="QualifierValue-type_of_qualifier-_ownedComment.0" annotatedElement="QualifierValue-type_of_qualifier">
<body>The type of the qualifier value input pin is the same as the type of the qualifier attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-type_of_qualifier-_specification">
<language>OCL</language>
<body>self.value.type = self.qualifier.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="QualifierValue-multiplicity_of_qualifier" name="multiplicity_of_qualifier" constrainedElement="QualifierValue">
<ownedComment xmi:id="QualifierValue-multiplicity_of_qualifier-_ownedComment.0" annotatedElement="QualifierValue-multiplicity_of_qualifier">
<body>The multiplicity of the qualifier value input pin is &quot;1..1&quot;.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-multiplicity_of_qualifier-_specification">
<language>OCL</language>
<body>self.value.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="QualifierValue-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="QualifierValue-qualifier" name="qualifier" type="Property" association="A_qualifier_qualifierValue">
<ownedComment xmi:id="QualifierValue-qualifier-_ownedComment.0" annotatedElement="QualifierValue-qualifier">
<body>Attribute representing the qualifier for which the value is to be specified.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="QualifierValue-qualifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="QualifierValue-qualifier-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="QualifierValue-value" name="value" type="InputPin" association="A_value_qualifierValue">
<ownedComment xmi:id="QualifierValue-value-_ownedComment.0" annotatedElement="QualifierValue-value">
<body>Input pin from which the specified value for the qualifier is taken.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="QualifierValue-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="QualifierValue-value-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="LinkEndData" name="LinkEndData">
<ownedComment xmi:id="LinkEndData-_ownedComment.0" annotatedElement="LinkEndData">
<body>A link end data is not an action. It is an element that identifies links. It identifies one end of a link to be read or written by the children of a link action. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, if any. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end, if any. These pieces are brought together around a link end data. Each association end is identified separately with an instance of the LinkEndData class.</body>
</ownedComment>
<ownedRule xmi:id="LinkEndData-property_is_association_end" name="property_is_association_end" constrainedElement="LinkEndData">
<ownedComment xmi:id="LinkEndData-property_is_association_end-_ownedComment.0" annotatedElement="LinkEndData-property_is_association_end">
<body>The property must be an association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-property_is_association_end-_specification">
<language>OCL</language>
<body>self.end.association->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndData-same_type" name="same_type" constrainedElement="LinkEndData">
<ownedComment xmi:id="LinkEndData-same_type-_ownedComment.0" annotatedElement="LinkEndData-same_type">
<body>The type of the end object input pin is the same as the type of the association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-same_type-_specification">
<language>OCL</language>
<body>self.value.type = self.end.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndData-multiplicity" name="multiplicity" constrainedElement="LinkEndData">
<ownedComment xmi:id="LinkEndData-multiplicity-_ownedComment.0" annotatedElement="LinkEndData-multiplicity">
<body>The multiplicity of the end object input pin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-multiplicity-_specification">
<language>OCL</language>
<body>self.value.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndData-qualifiers" name="qualifiers" constrainedElement="LinkEndData">
<ownedComment xmi:id="LinkEndData-qualifiers-_ownedComment.0" annotatedElement="LinkEndData-qualifiers">
<body>The qualifiers include all and only the qualifiers of the association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-qualifiers-_specification">
<language>OCL</language>
<body>self.qualifier->collect(qualifier) = self.end.qualifier</body>
</specification>
</ownedRule>
<ownedRule xmi:id="LinkEndData-end_object_input_pin" name="end_object_input_pin" constrainedElement="LinkEndData">
<ownedComment xmi:id="LinkEndData-end_object_input_pin-_ownedComment.0" annotatedElement="LinkEndData-end_object_input_pin">
<body>The end object input pin is not also a qualifier value input pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-end_object_input_pin-_specification">
<language>OCL</language>
<body>self.value->excludesAll(self.qualifier.value)</body>
</specification>
</ownedRule>
<generalization xmi:id="LinkEndData-_generalization.0" general="Element"/>
<ownedAttribute xmi:id="LinkEndData-value" name="value" type="InputPin" association="A_value_linkEndData">
<ownedComment xmi:id="LinkEndData-value-_ownedComment.0" annotatedElement="LinkEndData-value">
<body>Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndData-value-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-value-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="LinkEndData-end" name="end" type="Property" association="A_end_linkEndData">
<ownedComment xmi:id="LinkEndData-end-_ownedComment.0" annotatedElement="LinkEndData-end">
<body>Association end for which this link-end data specifies values.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndData-end-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-end-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="LinkEndData-qualifier" name="qualifier" type="QualifierValue" aggregation="composite" association="A_qualifier_linkEndData">
<ownedComment xmi:id="LinkEndData-qualifier-_ownedComment.0" annotatedElement="LinkEndData-qualifier">
<body>List of qualifier values</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndData-qualifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-qualifier-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadLinkObjectEndAction" name="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction">
<body>A read link object end action is an action that retrieves an end object from a link object.</body>
</ownedComment>
<ownedRule xmi:id="ReadLinkObjectEndAction-property" name="property" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-property-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-property">
<body>The property must be an association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-property-_specification">
<language>OCL</language>
<body>self.end.association.notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-association_of_association" name="association_of_association" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-association_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-association_of_association">
<body>The association of the association end must be an association class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-association_of_association-_specification">
<language>OCL</language>
<body>self.end.Association.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-ends_of_association" name="ends_of_association" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-ends_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-ends_of_association">
<body>The ends of the association must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-ends_of_association-_specification">
<language>OCL</language>
<body>self.end.association.memberEnd->forall(e | not e.isStatic)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-type_of_object" name="type_of_object" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-type_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-type_of_object">
<body>The type of the object input pin is the association class that owns the association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-type_of_object-_specification">
<language>OCL</language>
<body>self.object.type = self.end.association</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-multiplicity_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-multiplicity_of_object">
<body>The multiplicity of the object input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-multiplicity_of_object-_specification">
<language>OCL</language>
<body>self.object.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-type_of_result" name="type_of_result" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-type_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-type_of_result">
<body>The type of the result output pin is the same as the type of the association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-type_of_result-_specification">
<language>OCL</language>
<body>self.result.type = self.end.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-multiplicity_of_result">
<body>The multiplicity of the result output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-multiplicity_of_result-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadLinkObjectEndAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReadLinkObjectEndAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-object">
<body>Gives the input pin from which the link object is obtained.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndAction-object-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadLinkObjectEndAction-end" name="end" type="Property" association="A_end_readLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-end-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-end">
<body>Link end to be read.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndAction-end-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndAction-end-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadLinkObjectEndAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkObjectEndAction">
<ownedComment xmi:id="ReadLinkObjectEndAction-result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-result">
<body>Pin where the result value is placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReadLinkObjectEndQualifierAction" name="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction">
<body>A read link object end qualifier action is an action that retrieves a qualifier end value from a link object.</body>
</ownedComment>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute" name="qualifier_attribute" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-qualifier_attribute">
<body>The qualifier attribute must be a qualifier attribute of an association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute-_specification">
<language>OCL</language>
<body>self.qualifier.associationEnd->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-association_of_association" name="association_of_association" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-association_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-association_of_association">
<body>The association of the association end of the qualifier attribute must be an association class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-association_of_association-_specification">
<language>OCL</language>
<body>self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association" name="ends_of_association" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-ends_of_association">
<body>The ends of the association must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association-_specification">
<language>OCL</language>
<body>self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-type_of_object" name="type_of_object" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-type_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-type_of_object">
<body>The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-type_of_object-_specification">
<language>OCL</language>
<body>self.object.type = self.qualifier.associationEnd.association</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier" name="multiplicity_of_qualifier" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier">
<body>The multiplicity of the qualifier attribute is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier-_specification">
<language>OCL</language>
<body>self.qualifier.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_object">
<body>The multiplicity of the object input pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object-_specification">
<language>OCL</language>
<body>self.object.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-same_type" name="same_type" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-same_type-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-same_type">
<body>The type of the result output pin is the same as the type of the qualifier attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-same_type-_specification">
<language>OCL</language>
<body>self.result.type = self.qualifier.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_result">
<body>The multiplicity of the result output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReadLinkObjectEndQualifierAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-object">
<body>Gives the input pin from which the link object is obtained.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndQualifierAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndQualifierAction-object-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-result-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-result">
<body>Pin where the result value is placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndQualifierAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndQualifierAction-result-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-qualifier" name="qualifier" type="Property" association="A_qualifier_readLinkObjectEndQualifierAction">
<ownedComment xmi:id="ReadLinkObjectEndQualifierAction-qualifier-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-qualifier">
<body>The attribute representing the qualifier to be read.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkObjectEndQualifierAction-qualifier-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkObjectEndQualifierAction-qualifier-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="CreateLinkObjectAction" name="CreateLinkObjectAction">
<ownedComment xmi:id="CreateLinkObjectAction-_ownedComment.0" annotatedElement="CreateLinkObjectAction">
<body>A create link object action creates a link object.</body>
</ownedComment>
<ownedRule xmi:id="CreateLinkObjectAction-association_class" name="association_class" constrainedElement="CreateLinkObjectAction">
<ownedComment xmi:id="CreateLinkObjectAction-association_class-_ownedComment.0" annotatedElement="CreateLinkObjectAction-association_class">
<body>The association must be an association class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-association_class-_specification">
<language>OCL</language>
<body>self.association().oclIsKindOf(Class)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CreateLinkObjectAction-type_of_result" name="type_of_result" constrainedElement="CreateLinkObjectAction">
<ownedComment xmi:id="CreateLinkObjectAction-type_of_result-_ownedComment.0" annotatedElement="CreateLinkObjectAction-type_of_result">
<body>The type of the result pin must be the same as the association of the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-type_of_result-_specification">
<language>OCL</language>
<body>self.result.type = self.association()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="CreateLinkObjectAction-multiplicity" name="multiplicity" constrainedElement="CreateLinkObjectAction">
<ownedComment xmi:id="CreateLinkObjectAction-multiplicity-_ownedComment.0" annotatedElement="CreateLinkObjectAction-multiplicity">
<body>The multiplicity of the output pin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-multiplicity-_specification">
<language>OCL</language>
<body>self.result.multiplicity.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="CreateLinkObjectAction-_generalization.0" general="CreateLinkAction"/>
<ownedAttribute xmi:id="CreateLinkObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_createLinkObjectAction">
<ownedComment xmi:id="CreateLinkObjectAction-result-_ownedComment.0" annotatedElement="CreateLinkObjectAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CreateLinkObjectAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="CreateLinkObjectAction-result-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="AcceptEventAction" name="AcceptEventAction">
<ownedComment xmi:id="AcceptEventAction-_ownedComment.0" annotatedElement="AcceptEventAction">
<body>A accept event action is an action that waits for the occurrence of an event meeting specified conditions.</body>
</ownedComment>
<ownedRule xmi:id="AcceptEventAction-no_input_pins" name="no_input_pins" constrainedElement="AcceptEventAction">
<ownedComment xmi:id="AcceptEventAction-no_input_pins-_ownedComment.0" annotatedElement="AcceptEventAction-no_input_pins">
<body>AcceptEventActions may have no input pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-no_input_pins-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="AcceptEventAction-no_output_pins" name="no_output_pins" constrainedElement="AcceptEventAction">
<ownedComment xmi:id="AcceptEventAction-no_output_pins-_ownedComment.0" annotatedElement="AcceptEventAction-no_output_pins">
<body>There are no output pins if the trigger events are only ChangeEvents, or if they are only CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-no_output_pins-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="AcceptEventAction-trigger_events" name="trigger_events" constrainedElement="AcceptEventAction">
<ownedComment xmi:id="AcceptEventAction-trigger_events-_ownedComment.0" annotatedElement="AcceptEventAction-trigger_events">
<body>If the trigger events are all TimeEvents, there is exactly one output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-trigger_events-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="AcceptEventAction-unmarshall_signal_events" name="unmarshall_signal_events" constrainedElement="AcceptEventAction">
<ownedComment xmi:id="AcceptEventAction-unmarshall_signal_events-_ownedComment.0" annotatedElement="AcceptEventAction-unmarshall_signal_events">
<body>If isUnmarshall is true, there must be exactly one trigger for events of type SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-unmarshall_signal_events-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="AcceptEventAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="AcceptEventAction-isUnmarshall" name="isUnmarshall" type="Boolean">
<ownedComment xmi:id="AcceptEventAction-isUnmarshall-_ownedComment.0" annotatedElement="AcceptEventAction-isUnmarshall">
<body>Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AcceptEventAction-isUnmarshall-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="AcceptEventAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_acceptEventAction">
<ownedComment xmi:id="AcceptEventAction-result-_ownedComment.0" annotatedElement="AcceptEventAction-result">
<body>Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AcceptEventAction-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="AcceptEventAction-result-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:id="AcceptEventAction-trigger" name="trigger" type="Trigger" aggregation="composite" association="A_trigger_acceptEventAction">
<ownedComment xmi:id="AcceptEventAction-trigger-_ownedComment.0" annotatedElement="AcceptEventAction-trigger">
<body>The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AcceptEventAction-trigger-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="AcceptEventAction-trigger-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="AcceptCallAction" name="AcceptCallAction">
<ownedComment xmi:id="AcceptCallAction-_ownedComment.0" annotatedElement="AcceptCallAction">
<body>An accept call action is an accept event action representing the receipt of a synchronous call request. In addition to the normal operation parameters, the action produces an output that is needed later to supply the information to the reply action necessary to return control to the caller. This action is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent reply action will complete immediately with no effects.</body>
</ownedComment>
<ownedRule xmi:id="AcceptCallAction-result_pins" name="result_pins" constrainedElement="AcceptCallAction">
<ownedComment xmi:id="AcceptCallAction-result_pins-_ownedComment.0" annotatedElement="AcceptCallAction-result_pins">
<body>The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-result_pins-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="AcceptCallAction-trigger_call_event" name="trigger_call_event" constrainedElement="AcceptCallAction">
<ownedComment xmi:id="AcceptCallAction-trigger_call_event-_ownedComment.0" annotatedElement="AcceptCallAction-trigger_call_event">
<body>The trigger event must be a CallEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-trigger_call_event-_specification">
<language>OCL</language>
<body>trigger.event.oclIsKindOf(CallEvent)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="AcceptCallAction-unmarshall" name="unmarshall" constrainedElement="AcceptCallAction">
<ownedComment xmi:id="AcceptCallAction-unmarshall-_ownedComment.0" annotatedElement="AcceptCallAction-unmarshall">
<body>isUnmrashall must be true for an AcceptCallAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-unmarshall-_specification">
<language>OCL</language>
<body>isUnmarshall = true</body>
</specification>
</ownedRule>
<generalization xmi:id="AcceptCallAction-_generalization.0" general="AcceptEventAction"/>
<ownedAttribute xmi:id="AcceptCallAction-returnInformation" name="returnInformation" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_returnInformation_acceptCallAction">
<ownedComment xmi:id="AcceptCallAction-returnInformation-_ownedComment.0" annotatedElement="AcceptCallAction-returnInformation">
<body>Pin where a value is placed containing sufficient information to perform a subsequent reply 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.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AcceptCallAction-returnInformation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="AcceptCallAction-returnInformation-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReplyAction" name="ReplyAction">
<ownedComment xmi:id="ReplyAction-_ownedComment.0" annotatedElement="ReplyAction">
<body>A reply action is an action that accepts a set of return values and a value containing return information produced by a previous accept call action. The reply action returns the values to the caller of the previous call, completing execution of the call.</body>
</ownedComment>
<ownedRule xmi:id="ReplyAction-pins_match_parameter" name="pins_match_parameter" constrainedElement="ReplyAction">
<ownedComment xmi:id="ReplyAction-pins_match_parameter-_ownedComment.0" annotatedElement="ReplyAction-pins_match_parameter">
<body>The reply value pins must match the return, out, and inout parameters of the operation on the event on the trigger in number, type, and order.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReplyAction-pins_match_parameter-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReplyAction-event_on_reply_to_call_trigger" name="event_on_reply_to_call_trigger" constrainedElement="ReplyAction">
<ownedComment xmi:id="ReplyAction-event_on_reply_to_call_trigger-_ownedComment.0" annotatedElement="ReplyAction-event_on_reply_to_call_trigger">
<body>The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReplyAction-event_on_reply_to_call_trigger-_specification">
<language>OCL</language>
<body>replyToCallEvent.oclIsKindOf(CallEvent)</body>
</specification>
</ownedRule>
<generalization xmi:id="ReplyAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReplyAction-replyToCall" name="replyToCall" type="Trigger" association="A_replyToCall_replyAction">
<ownedComment xmi:id="ReplyAction-replyToCall-_ownedComment.0" annotatedElement="ReplyAction-replyToCall">
<body>The trigger specifying the operation whose call is being replied to.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReplyAction-replyToCall-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReplyAction-replyToCall-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReplyAction-returnInformation" name="returnInformation" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_returnInformation_replyAction">
<ownedComment xmi:id="ReplyAction-returnInformation-_ownedComment.0" annotatedElement="ReplyAction-returnInformation">
<body>A pin containing the return information value produced by an earlier AcceptCallAction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReplyAction-returnInformation-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReplyAction-returnInformation-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReplyAction-replyValue" name="replyValue" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_replyValue_replyAction">
<ownedComment xmi:id="ReplyAction-replyValue-_ownedComment.0" annotatedElement="ReplyAction-replyValue">
<body>A list of pins containing the reply values of the operation. These values are returned to the caller.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReplyAction-replyValue-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReplyAction-replyValue-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="UnmarshallAction" name="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-_ownedComment.0" annotatedElement="UnmarshallAction">
<body>An unmarshall action is an action that breaks an object of a known type into outputs each of which is equal to a value from a structural feature of the object.</body>
</ownedComment>
<ownedRule xmi:id="UnmarshallAction-same_type" name="same_type" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-same_type-_ownedComment.0" annotatedElement="UnmarshallAction-same_type">
<body>The type of the object input pin must be the same as the unmarshall classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-same_type-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-multiplicity_of_object-_ownedComment.0" annotatedElement="UnmarshallAction-multiplicity_of_object">
<body>The multiplicity of the object input pin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-multiplicity_of_object-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-number_of_result" name="number_of_result" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-number_of_result-_ownedComment.0" annotatedElement="UnmarshallAction-number_of_result">
<body>The number of result output pins must be the same as the number of structural features of the unmarshall classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-number_of_result-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-type_and_ordering" name="type_and_ordering" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-type_and_ordering-_ownedComment.0" annotatedElement="UnmarshallAction-type_and_ordering">
<body>The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-type_and_ordering-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-multiplicity_of_result-_ownedComment.0" annotatedElement="UnmarshallAction-multiplicity_of_result">
<body>The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-multiplicity_of_result-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-structural_feature" name="structural_feature" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-structural_feature-_ownedComment.0" annotatedElement="UnmarshallAction-structural_feature">
<body>The unmarshall classifier must have at least one structural feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-structural_feature-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="UnmarshallAction-unmarshallType_is_classifier" name="unmarshallType_is_classifier" constrainedElement="UnmarshallAction">
<ownedComment xmi:id="UnmarshallAction-unmarshallType_is_classifier-_ownedComment.0" annotatedElement="UnmarshallAction-unmarshallType_is_classifier">
<body>unmarshallType must be a Classifier with ordered attributes</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-unmarshallType_is_classifier-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="UnmarshallAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="UnmarshallAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_unmarshallAction">
<ownedComment xmi:id="UnmarshallAction-result-_ownedComment.0" annotatedElement="UnmarshallAction-result">
<body>The values of the structural features of the input object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UnmarshallAction-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UnmarshallAction-result-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="UnmarshallAction-unmarshallType" name="unmarshallType" type="Classifier" association="A_unmarshallType_unmarshallAction">
<ownedComment xmi:id="UnmarshallAction-unmarshallType-_ownedComment.0" annotatedElement="UnmarshallAction-unmarshallType">
<body>The type of the object to be unmarshalled.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UnmarshallAction-unmarshallType-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UnmarshallAction-unmarshallType-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="UnmarshallAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_unmarshallAction">
<ownedComment xmi:id="UnmarshallAction-object-_ownedComment.0" annotatedElement="UnmarshallAction-object">
<body>The object to be unmarshalled.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UnmarshallAction-object-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="UnmarshallAction-object-_lowerValue" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="ReduceAction" name="ReduceAction">
<ownedComment xmi:id="ReduceAction-_ownedComment.0" annotatedElement="ReduceAction">
<body>A reduce action is an action that reduces a collection to a single value by combining the elements of the collection.</body>
</ownedComment>
<ownedRule xmi:id="ReduceAction-input_type_is_collection" name="input_type_is_collection" constrainedElement="ReduceAction">
<ownedComment xmi:id="ReduceAction-input_type_is_collection-_ownedComment.0" annotatedElement="ReduceAction-input_type_is_collection">
<body>The type of the input must be a collection.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-input_type_is_collection-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReduceAction-output_types_are_compatible" name="output_types_are_compatible" constrainedElement="ReduceAction">
<ownedComment xmi:id="ReduceAction-output_types_are_compatible-_ownedComment.0" annotatedElement="ReduceAction-output_types_are_compatible">
<body>The type of the output must be compatible with the type of the output of the reducer behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-output_types_are_compatible-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="ReduceAction-reducer_inputs_output" name="reducer_inputs_output" constrainedElement="ReduceAction">
<ownedComment xmi:id="ReduceAction-reducer_inputs_output-_ownedComment.0" annotatedElement="ReduceAction-reducer_inputs_output">
<body>The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-reducer_inputs_output-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="ReduceAction-_generalization.0" general="Action"/>
<ownedAttribute xmi:id="ReduceAction-reducer" name="reducer" type="Behavior" association="A_reducer_reduceAction">
<ownedComment xmi:id="ReduceAction-reducer-_ownedComment.0" annotatedElement="ReduceAction-reducer">
<body>Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReduceAction-reducer-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReduceAction-reducer-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReduceAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_reduceAction">
<ownedComment xmi:id="ReduceAction-result-_ownedComment.0" annotatedElement="ReduceAction-result">
<body>Gives the output pin on which the result is put.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReduceAction-result-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReduceAction-result-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReduceAction-collection" name="collection" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_collection_reduceAction">
<ownedComment xmi:id="ReduceAction-collection-_ownedComment.0" annotatedElement="ReduceAction-collection">
<body>The collection to be reduced.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReduceAction-collection-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReduceAction-collection-_lowerValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="ReduceAction-isOrdered" name="isOrdered" type="Boolean">
<ownedComment xmi:id="ReduceAction-isOrdered-_ownedComment.0" annotatedElement="ReduceAction-isOrdered">
<body>Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReduceAction-isOrdered-_defaultValue" type="Boolean"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readExtentAction" name="A_result_readExtentAction" visibility="private" memberEnd="ReadExtentAction-result A_result_readExtentAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readExtentAction-_ownedEnd.0" type="ReadExtentAction" association="A_result_readExtentAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readExtentAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readExtentAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifier_readExtentAction" name="A_classifier_readExtentAction" visibility="private" memberEnd="ReadExtentAction-classifier A_classifier_readExtentAction-_ownedEnd.0">
<ownedEnd xmi:id="A_classifier_readExtentAction-_ownedEnd.0" type="ReadExtentAction" association="A_classifier_readExtentAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_readExtentAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_readExtentAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_oldClassifier_reclassifyObjectAction" name="A_oldClassifier_reclassifyObjectAction" visibility="private" memberEnd="ReclassifyObjectAction-oldClassifier A_oldClassifier_reclassifyObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_oldClassifier_reclassifyObjectAction-_ownedEnd.0" type="ReclassifyObjectAction" association="A_oldClassifier_reclassifyObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_oldClassifier_reclassifyObjectAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_oldClassifier_reclassifyObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_newClassifier_reclassifyObjectAction" name="A_newClassifier_reclassifyObjectAction" visibility="private" memberEnd="ReclassifyObjectAction-newClassifier A_newClassifier_reclassifyObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_newClassifier_reclassifyObjectAction-_ownedEnd.0" type="ReclassifyObjectAction" association="A_newClassifier_reclassifyObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_newClassifier_reclassifyObjectAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_newClassifier_reclassifyObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_classifier_readIsClassifiedObjectAction" name="A_classifier_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-classifier A_classifier_readIsClassifiedObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_classifier_readIsClassifiedObjectAction-_ownedEnd.0" type="ReadIsClassifiedObjectAction" association="A_classifier_readIsClassifiedObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_readIsClassifiedObjectAction-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_readIsClassifiedObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readIsClassifiedObjectAction" name="A_result_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-result A_result_readIsClassifiedObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readIsClassifiedObjectAction-_ownedEnd.0" type="ReadIsClassifiedObjectAction" association="A_result_readIsClassifiedObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readIsClassifiedObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readIsClassifiedObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_readIsClassifiedObjectAction" name="A_object_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-object A_object_readIsClassifiedObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_readIsClassifiedObjectAction-_ownedEnd.0" type="ReadIsClassifiedObjectAction" association="A_object_readIsClassifiedObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_readIsClassifiedObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readIsClassifiedObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_startClassifierBehaviorAction" name="A_object_startClassifierBehaviorAction" visibility="private" memberEnd="StartClassifierBehaviorAction-object A_object_startClassifierBehaviorAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_startClassifierBehaviorAction-_ownedEnd.0" type="StartClassifierBehaviorAction" association="A_object_startClassifierBehaviorAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_startClassifierBehaviorAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_startClassifierBehaviorAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_linkEndData" name="A_qualifier_linkEndData" visibility="private" memberEnd="LinkEndData-qualifier A_qualifier_linkEndData-_ownedEnd.0">
<ownedEnd xmi:id="A_qualifier_linkEndData-_ownedEnd.0" type="LinkEndData" association="A_qualifier_linkEndData">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_qualifier_linkEndData-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_qualifier_linkEndData-_ownedEnd.0-_lowerValue" value="1"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_qualifierValue" name="A_qualifier_qualifierValue" visibility="private" memberEnd="QualifierValue-qualifier A_qualifier_qualifierValue-_ownedEnd.0">
<ownedEnd xmi:id="A_qualifier_qualifierValue-_ownedEnd.0" type="QualifierValue" association="A_qualifier_qualifierValue">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_qualifier_qualifierValue-_ownedEnd.0-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_qualifier_qualifierValue-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_value_qualifierValue" name="A_value_qualifierValue" visibility="private" memberEnd="QualifierValue-value A_value_qualifierValue-_ownedEnd.0">
<ownedEnd xmi:id="A_value_qualifierValue-_ownedEnd.0" type="QualifierValue" association="A_value_qualifierValue">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_value_qualifierValue-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_qualifierValue-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_readLinkObjectEndAction" name="A_object_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-object A_object_readLinkObjectEndAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_readLinkObjectEndAction-_ownedEnd.0" type="ReadLinkObjectEndAction" association="A_object_readLinkObjectEndAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_readLinkObjectEndAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readLinkObjectEndAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_end_readLinkObjectEndAction" name="A_end_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-end A_end_readLinkObjectEndAction-_ownedEnd.0">
<ownedEnd xmi:id="A_end_readLinkObjectEndAction-_ownedEnd.0" type="ReadLinkObjectEndAction" association="A_end_readLinkObjectEndAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_end_readLinkObjectEndAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_readLinkObjectEndAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkObjectEndAction" name="A_result_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-result A_result_readLinkObjectEndAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readLinkObjectEndAction-_ownedEnd.0" type="ReadLinkObjectEndAction" association="A_result_readLinkObjectEndAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readLinkObjectEndAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkObjectEndAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_object_readLinkObjectEndQualifierAction" name="A_object_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-object A_object_readLinkObjectEndQualifierAction-_ownedEnd.0">
<ownedEnd xmi:id="A_object_readLinkObjectEndQualifierAction-_ownedEnd.0" type="ReadLinkObjectEndQualifierAction" association="A_object_readLinkObjectEndQualifierAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_object_readLinkObjectEndQualifierAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readLinkObjectEndQualifierAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkObjectEndQualifierAction" name="A_result_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-result A_result_readLinkObjectEndQualifierAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_readLinkObjectEndQualifierAction-_ownedEnd.0" type="ReadLinkObjectEndQualifierAction" association="A_result_readLinkObjectEndQualifierAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_readLinkObjectEndQualifierAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkObjectEndQualifierAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_readLinkObjectEndQualifierAction" name="A_qualifier_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-qualifier A_qualifier_readLinkObjectEndQualifierAction-_ownedEnd.0">
<ownedEnd xmi:id="A_qualifier_readLinkObjectEndQualifierAction-_ownedEnd.0" type="ReadLinkObjectEndQualifierAction" association="A_qualifier_readLinkObjectEndQualifierAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_qualifier_readLinkObjectEndQualifierAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_qualifier_readLinkObjectEndQualifierAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_createLinkObjectAction" name="A_result_createLinkObjectAction" visibility="private" memberEnd="CreateLinkObjectAction-result A_result_createLinkObjectAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_createLinkObjectAction-_ownedEnd.0" type="CreateLinkObjectAction" association="A_result_createLinkObjectAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_createLinkObjectAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_createLinkObjectAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_reclassifyObjectAction_object" name="A_reclassifyObjectAction_object" visibility="private" memberEnd="A_reclassifyObjectAction_object-_ownedEnd.0 ReclassifyObjectAction-object">
<ownedEnd xmi:id="A_reclassifyObjectAction_object-_ownedEnd.0" type="ReclassifyObjectAction" association="A_reclassifyObjectAction_object">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_reclassifyObjectAction_object-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_reclassifyObjectAction_object-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_acceptEventAction" name="A_result_acceptEventAction" visibility="private" memberEnd="AcceptEventAction-result A_result_acceptEventAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_acceptEventAction-_ownedEnd.0" type="AcceptEventAction" association="A_result_acceptEventAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_acceptEventAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_acceptEventAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_returnInformation_acceptCallAction" name="A_returnInformation_acceptCallAction" visibility="private" memberEnd="AcceptCallAction-returnInformation A_returnInformation_acceptCallAction-_ownedEnd.0">
<ownedEnd xmi:id="A_returnInformation_acceptCallAction-_ownedEnd.0" type="AcceptCallAction" association="A_returnInformation_acceptCallAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_returnInformation_acceptCallAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_returnInformation_acceptCallAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_replyToCall_replyAction" name="A_replyToCall_replyAction" visibility="private" memberEnd="ReplyAction-replyToCall A_replyToCall_replyAction-_ownedEnd.0">
<ownedEnd xmi:id="A_replyToCall_replyAction-_ownedEnd.0" type="ReplyAction" association="A_replyToCall_replyAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_replyToCall_replyAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_replyToCall_replyAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="A_result_unmarshallAction" name="A_result_unmarshallAction" visibility="private" memberEnd="UnmarshallAction-result A_result_unmarshallAction-_ownedEnd.0">
<ownedEnd xmi:id="A_result_unmarshallAction-_ownedEnd.0" type="UnmarshallAction" association="A_result_unmarshallAction">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_unmarshallAction-_ownedEnd.0-_upperValue" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_unmarshallAction-_ownedEnd.0-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="