blob: e61ca51eb71debbee218711e91dd40fc0e303c05 [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: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">
<uml:Model xmi:id="_o8I_sGvaEdq4DLWZOhbdEA" name="UML">
<packageImport xmi:id="__as3cGvaEdq4DLWZOhbdEA">
<importedPackage xmi:type="uml:Model" href="Ecore.uml#_SeWiQMX_EduPJbEsMYXjUQ"/>
</packageImport>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_XqvEIGvsEdqG6fBIPwe-mw" name="Integer" visibility="private">
<ownedComment xmi:id="_QcIAKscBEdyrC427ygySag" annotatedElement="_XqvEIGvsEdqG6fBIPwe-mw">
<body>An integer is a primitive type representing integer values.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_UdivYGvsEdqG6fBIPwe-mw" name="Boolean" visibility="private">
<ownedComment xmi:id="_QcIAK8cBEdyrC427ygySag" annotatedElement="_UdivYGvsEdqG6fBIPwe-mw">
<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="_aAyVgGvsEdqG6fBIPwe-mw" name="String" visibility="private">
<ownedComment xmi:id="_QcIALMcBEdyrC427ygySag" annotatedElement="_aAyVgGvsEdqG6fBIPwe-mw">
<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="_dRZxsGvsEdqG6fBIPwe-mw" name="UnlimitedNatural" visibility="private">
<ownedComment xmi:id="_QcIALccBEdyrC427ygySag" annotatedElement="_dRZxsGvsEdqG6fBIPwe-mw">
<body>An unlimited natural is a primitive type representing unlimited natural values.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Qb-2F8cBEdyrC427ygySag" name="Comment">
<ownedComment xmi:id="_Qb-2GMcBEdyrC427ygySag" annotatedElement="_Qb-2F8cBEdyrC427ygySag">
<body>A comment is a textual annotation that can be attached to a set of elements.</body>
</ownedComment>
<generalization xmi:id="_Qb-2GccBEdyrC427ygySag" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_Qb-2GscBEdyrC427ygySag" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_Qb-2G8cBEdyrC427ygySag" annotatedElement="_Qb-2GscBEdyrC427ygySag">
<body>Specifies a string that is the comment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qca69McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qca69ccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb-2HscBEdyrC427ygySag" name="annotatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" association="_Qb-2jscBEdyrC427ygySag">
<ownedComment xmi:id="_Qb-2H8cBEdyrC427ygySag" annotatedElement="_Qb-2HscBEdyrC427ygySag">
<body>References the Element(s) being commented.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qca69scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qca698cBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_JBgfoKPAEdqi_5gqUMOQtA" name="DirectedRelationship" isAbstract="true">
<ownedComment xmi:id="_QbOofccBEdyrC427ygySag" annotatedElement="_JBgfoKPAEdqi_5gqUMOQtA">
<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="_QbOofscBEdyrC427ygySag" general="_DH62EKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_QbOof8cBEdyrC427ygySag" name="source" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_QbiKP8cBEdyrC427ygySag" association="_Qb-2lscBEdyrC427ygySag">
<ownedComment xmi:id="_QbOogMcBEdyrC427ygySag" annotatedElement="_QbOof8cBEdyrC427ygySag">
<body>Specifies the sources of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qckr8McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qckr8ccBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbOog8cBEdyrC427ygySag" name="target" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_QbiKP8cBEdyrC427ygySag" association="_Qb-2mscBEdyrC427ygySag">
<ownedComment xmi:id="_QbOohMcBEdyrC427ygySag" annotatedElement="_QbOog8cBEdyrC427ygySag">
<body>Specifies the targets of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qckr8scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qckr88cBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Qcuc8McBEdyrC427ygySag" name="LiteralSpecification" isAbstract="true">
<ownedComment xmi:id="_Qcuc8ccBEdyrC427ygySag" annotatedElement="_Qcuc8McBEdyrC427ygySag">
<body>A literal specification identifies a literal constant being modeled.</body>
</ownedComment>
<generalization xmi:id="_Qcuc8scBEdyrC427ygySag" general="_QbiKT8cBEdyrC427ygySag"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Dy77oGveEdq4DLWZOhbdEA" name="LiteralInteger">
<ownedComment xmi:id="_Qcuc88cBEdyrC427ygySag" annotatedElement="_Dy77oGveEdq4DLWZOhbdEA">
<body>A literal integer is a specification of an integer value.</body>
</ownedComment>
<generalization xmi:id="_Qcuc9McBEdyrC427ygySag" general="_Qcuc8McBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_Qcuc9ccBEdyrC427ygySag" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_Qcuc9scBEdyrC427ygySag" annotatedElement="_Qcuc9ccBEdyrC427ygySag">
<body>The specified Integer value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Qcuc98cBEdyrC427ygySag" type="_XqvEIGvsEdqG6fBIPwe-mw"/>
</ownedAttribute>
<ownedOperation xmi:id="_e2SLUGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_hAkRkGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_Qcuc-McBEdyrC427ygySag" name="isComputable" isQuery="true" redefinedOperation="_QbiKU8cBEdyrC427ygySag" bodyCondition="_Qcuc-scBEdyrC427ygySag">
<ownedComment xmi:id="_Qcuc-ccBEdyrC427ygySag" annotatedElement="_Qcuc-McBEdyrC427ygySag">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_Qcuc-scBEdyrC427ygySag" name="spec" constrainedElement="_Qcuc-McBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qcuc-8cBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Qcuc_McBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_Qcuc_ccBEdyrC427ygySag" name="integerValue" isQuery="true" redefinedOperation="_QbiKWMcBEdyrC427ygySag" bodyCondition="_Qcuc_8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qcuc_scBEdyrC427ygySag" annotatedElement="_Qcuc_ccBEdyrC427ygySag">
<body>The query integerValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_Qcuc_8cBEdyrC427ygySag" name="spec" constrainedElement="_Qcuc_ccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudAMcBEdyrC427ygySag">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudAccBEdyrC427ygySag" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_5jXJsTEkEdu9VoNTbEBQkQ" name="LiteralString">
<ownedComment xmi:id="_QcudAscBEdyrC427ygySag" annotatedElement="_5jXJsTEkEdu9VoNTbEBQkQ">
<body>A literal string is a specification of a string value.</body>
</ownedComment>
<generalization xmi:id="_QcudA8cBEdyrC427ygySag" general="_Qcuc8McBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QcudBMcBEdyrC427ygySag" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QcudBccBEdyrC427ygySag" annotatedElement="_QcudBMcBEdyrC427ygySag">
<body>The specified String value.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudBscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudB8cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_-SmgADEkEdu9VoNTbEBQkQ" name="integerValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_-SmgATEkEdu9VoNTbEBQkQ" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_FbLFMDElEdu9VoNTbEBQkQ" name="unlimitedValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_FbLFMTElEdu9VoNTbEBQkQ" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcudCMcBEdyrC427ygySag" name="isComputable" isQuery="true" redefinedOperation="_QbiKU8cBEdyrC427ygySag" bodyCondition="_QcudCscBEdyrC427ygySag">
<ownedComment xmi:id="_QcudCccBEdyrC427ygySag" annotatedElement="_QcudCMcBEdyrC427ygySag">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_QcudCscBEdyrC427ygySag" name="spec" constrainedElement="_QcudCMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudC8cBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudDMcBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcudDccBEdyrC427ygySag" name="stringValue" isQuery="true" redefinedOperation="_QbiKYscBEdyrC427ygySag" bodyCondition="_QcudD8cBEdyrC427ygySag">
<ownedComment xmi:id="_QcudDscBEdyrC427ygySag" annotatedElement="_QcudDccBEdyrC427ygySag">
<body>The query stringValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_QcudD8cBEdyrC427ygySag" name="spec" constrainedElement="_QcudDccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudEMcBEdyrC427ygySag">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudEccBEdyrC427ygySag" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_FFMNsGveEdq4DLWZOhbdEA" name="LiteralBoolean">
<ownedComment xmi:id="_QcudEscBEdyrC427ygySag" annotatedElement="_FFMNsGveEdq4DLWZOhbdEA">
<body>A literal Boolean is a specification of a Boolean value.</body>
</ownedComment>
<generalization xmi:id="_QcudE8cBEdyrC427ygySag" general="_Qcuc8McBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QcudFMcBEdyrC427ygySag" name="value" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QcudFccBEdyrC427ygySag" annotatedElement="_QcudFMcBEdyrC427ygySag">
<body>The specified Boolean value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_QcudFscBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw"/>
</ownedAttribute>
<ownedOperation xmi:id="_aXS3gGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_cFthIGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcudF8cBEdyrC427ygySag" name="isComputable" isQuery="true" redefinedOperation="_QbiKU8cBEdyrC427ygySag" bodyCondition="_QcudGccBEdyrC427ygySag">
<ownedComment xmi:id="_QcudGMcBEdyrC427ygySag" annotatedElement="_QcudF8cBEdyrC427ygySag">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_QcudGccBEdyrC427ygySag" name="spec" constrainedElement="_QcudF8cBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudGscBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudG8cBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcudHMcBEdyrC427ygySag" name="booleanValue" isQuery="true" redefinedOperation="_QbiKXccBEdyrC427ygySag" bodyCondition="_QcudHscBEdyrC427ygySag">
<ownedComment xmi:id="_QcudHccBEdyrC427ygySag" annotatedElement="_QcudHMcBEdyrC427ygySag">
<body>The query booleanValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_QcudHscBEdyrC427ygySag" name="spec" constrainedElement="_QcudHMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudH8cBEdyrC427ygySag">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudIMcBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QcudIccBEdyrC427ygySag" name="LiteralNull">
<ownedComment xmi:id="_QcudIscBEdyrC427ygySag" annotatedElement="_QcudIccBEdyrC427ygySag">
<body>A literal null specifies the lack of a value.</body>
</ownedComment>
<generalization xmi:id="_QcudI8cBEdyrC427ygySag" general="_Qcuc8McBEdyrC427ygySag"/>
<ownedOperation xmi:id="_QcudJMcBEdyrC427ygySag" name="isComputable" isQuery="true" redefinedOperation="_QbiKU8cBEdyrC427ygySag" bodyCondition="_QcudJscBEdyrC427ygySag">
<ownedComment xmi:id="_QcudJccBEdyrC427ygySag" annotatedElement="_QcudJMcBEdyrC427ygySag">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_QcudJscBEdyrC427ygySag" name="spec" constrainedElement="_QcudJMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudJ8cBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudKMcBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcudKccBEdyrC427ygySag" name="isNull" isQuery="true" redefinedOperation="_QbiKbMcBEdyrC427ygySag" bodyCondition="_QcudK8cBEdyrC427ygySag">
<ownedComment xmi:id="_QcudKscBEdyrC427ygySag" annotatedElement="_QcudKccBEdyrC427ygySag">
<body>The query isNull() returns true.</body>
</ownedComment>
<ownedRule xmi:id="_QcudK8cBEdyrC427ygySag" name="spec" constrainedElement="_QcudKccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudLMcBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcudLccBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QbrUXccBEdyrC427ygySag" name="Constraint">
<ownedComment xmi:id="_QbrUXscBEdyrC427ygySag" annotatedElement="_QbrUXccBEdyrC427ygySag">
<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="_QbrUX8cBEdyrC427ygySag" name="not_apply_to_self" constrainedElement="_QbrUXccBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUYMcBEdyrC427ygySag" annotatedElement="_QbrUX8cBEdyrC427ygySag">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QbrUYccBEdyrC427ygySag">
<language>OCL</language>
<body>not constrainedElement->includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbrUYscBEdyrC427ygySag" name="value_specification_boolean" constrainedElement="_QbrUXccBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUY8cBEdyrC427ygySag" annotatedElement="_QbrUYscBEdyrC427ygySag">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QbrUZMcBEdyrC427ygySag">
<language>OCL</language>
<body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcudLscBEdyrC427ygySag" name="boolean_value" constrainedElement="_QbrUXccBEdyrC427ygySag">
<ownedComment xmi:id="_QcudL8cBEdyrC427ygySag" annotatedElement="_QcudLscBEdyrC427ygySag">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudMMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcudMccBEdyrC427ygySag" name="no_side_effects" constrainedElement="_QbrUXccBEdyrC427ygySag">
<ownedComment xmi:id="_QcudMscBEdyrC427ygySag" annotatedElement="_QcudMccBEdyrC427ygySag">
<body>Evaluating the value specification for a constraint must not have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudM8cBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcudNMcBEdyrC427ygySag" name="not_applied_to_self" constrainedElement="_QbrUXccBEdyrC427ygySag">
<ownedComment xmi:id="_QcudNccBEdyrC427ygySag" annotatedElement="_QcudNMcBEdyrC427ygySag">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudNscBEdyrC427ygySag">
<language>OCL</language>
<body>not constrainedElement->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="_QbrUZccBEdyrC427ygySag" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_QbrUZscBEdyrC427ygySag" name="constrainedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isOrdered="true" association="_Qb-2p8cBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUZ8cBEdyrC427ygySag" annotatedElement="_QbrUZscBEdyrC427ygySag">
<body>The ordered set of Elements referenced by this Constraint.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudN8cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudOMcBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbrUascBEdyrC427ygySag" name="specification" type="_QbiKT8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_QbOojscBEdyrC427ygySag" association="_Qb-2q8cBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUa8cBEdyrC427ygySag" annotatedElement="_QbrUascBEdyrC427ygySag">
<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="_QcudOccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudOscBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbrUbscBEdyrC427ygySag" name="context" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag" association="_Qb-21ccBEdyrC427ygySag">
<ownedComment xmi:id="_QcudO8cBEdyrC427ygySag" annotatedElement="_QbrUbscBEdyrC427ygySag">
<body>Specifies the namespace that owns the NamedElement.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudPMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudPccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_RPl78GwIEdq7X4sGURiZYA" name="ElementImport">
<ownedComment xmi:id="_Qb1FNscBEdyrC427ygySag" annotatedElement="_RPl78GwIEdq7X4sGURiZYA">
<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="_Qb1FN8cBEdyrC427ygySag" name="visibility_public_or_private" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_Qb1FOMcBEdyrC427ygySag" annotatedElement="_Qb1FN8cBEdyrC427ygySag">
<body>The visibility of an ElementImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudPscBEdyrC427ygySag">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Qb1FOscBEdyrC427ygySag" name="imported_element_is_public" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_Qb1FO8cBEdyrC427ygySag" annotatedElement="_Qb1FOscBEdyrC427ygySag">
<body>An importedElement has either public visibility or no visibility at all.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudP8cBEdyrC427ygySag">
<language>OCL</language>
<body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
</specification>
</ownedRule>
<generalization xmi:id="_Qb1FPccBEdyrC427ygySag" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_Qb1FPscBEdyrC427ygySag" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
<ownedComment xmi:id="_Qb1FP8cBEdyrC427ygySag" annotatedElement="_Qb1FPscBEdyrC427ygySag">
<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="_QcudQMcBEdyrC427ygySag" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_Qb-2NccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1FQccBEdyrC427ygySag" name="alias" type="_aAyVgGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_Qb1FQscBEdyrC427ygySag" annotatedElement="_Qb1FQccBEdyrC427ygySag">
<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="_QcudQccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudQscBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1FRccBEdyrC427ygySag" name="importedElement" type="_jKxnwGwLEdq7X4sGURiZYA" subsettedProperty="_QbOog8cBEdyrC427ygySag" association="_Qb-2d8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FRscBEdyrC427ygySag" annotatedElement="_Qb1FRccBEdyrC427ygySag">
<body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudQ8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudRMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1FSccBEdyrC427ygySag" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_QbOof8cBEdyrC427ygySag _QbOokscBEdyrC427ygySag" association="_Qb-2e8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FSscBEdyrC427ygySag" annotatedElement="_Qb1FSccBEdyrC427ygySag">
<body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudRccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudRscBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="_Qb1FTccBEdyrC427ygySag" name="getName" isQuery="true" bodyCondition="_Qb1FT8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FTscBEdyrC427ygySag" annotatedElement="_Qb1FTccBEdyrC427ygySag">
<body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
</ownedComment>
<ownedRule xmi:id="_Qb1FT8cBEdyrC427ygySag" name="spec" constrainedElement="_Qb1FTccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudR8cBEdyrC427ygySag">
<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="_Qb1FUccBEdyrC427ygySag" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QbiKSMcBEdyrC427ygySag" name="TypedElement" isAbstract="true">
<ownedComment xmi:id="_QbiKSccBEdyrC427ygySag" annotatedElement="_QbiKSMcBEdyrC427ygySag">
<body>A typed element is a kind of named element that represents an element with a type.</body>
</ownedComment>
<ownedComment xmi:id="_Qc3m8scBEdyrC427ygySag" annotatedElement="_QbiKSMcBEdyrC427ygySag">
<body>A typed element has a type.</body>
</ownedComment>
<generalization xmi:id="_QbiKSscBEdyrC427ygySag" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_QbiKS8cBEdyrC427ygySag" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" association="_Qb-2PccBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKTMcBEdyrC427ygySag" annotatedElement="_QbiKS8cBEdyrC427ygySag">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<ownedComment xmi:id="_Qc3m88cBEdyrC427ygySag" annotatedElement="_QbiKS8cBEdyrC427ygySag">
<body>The type of the TypedElement.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qc3m9McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qc3m9ccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QbOopscBEdyrC427ygySag" name="Feature" isAbstract="true">
<ownedComment xmi:id="_QbOop8cBEdyrC427ygySag" annotatedElement="_QbOopscBEdyrC427ygySag">
<body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
</ownedComment>
<generalization xmi:id="_QbOoqMcBEdyrC427ygySag" general="_QbiKIMcBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QdBX7ccBEdyrC427ygySag" name="isStatic" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QdBX7scBEdyrC427ygySag" annotatedElement="_QdBX7ccBEdyrC427ygySag">
<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="_QdBX78cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbOoqccBEdyrC427ygySag" name="featuringClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_Qb-2pscBEdyrC427ygySag">
<ownedComment xmi:id="_QbOoqscBEdyrC427ygySag" annotatedElement="_QbOoqccBEdyrC427ygySag">
<body>The Classifiers that have this Feature as a feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdBX8McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdBX8ccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QbiKIMcBEdyrC427ygySag" name="RedefinableElement" isAbstract="true">
<ownedComment xmi:id="_QbiKIccBEdyrC427ygySag" annotatedElement="_QbiKIMcBEdyrC427ygySag">
<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="_QbiKIscBEdyrC427ygySag" name="redefinition_context_valid" constrainedElement="_QbiKIMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKI8cBEdyrC427ygySag" annotatedElement="_QbiKIscBEdyrC427ygySag">
<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="_QdBX8scBEdyrC427ygySag">
<language>OCL</language>
<body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbiKJccBEdyrC427ygySag" name="redefinition_consistent" constrainedElement="_QbiKIMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKJscBEdyrC427ygySag" annotatedElement="_QbiKJccBEdyrC427ygySag">
<body>A redefining element must be consistent with each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdBX88cBEdyrC427ygySag">
<language>OCL</language>
<body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
</specification>
</ownedRule>
<generalization xmi:id="_QbiKKMcBEdyrC427ygySag" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_QdBX9McBEdyrC427ygySag" name="isLeaf" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QdBX9ccBEdyrC427ygySag" annotatedElement="_QdBX9McBEdyrC427ygySag">
<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="_QdBX9scBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKLccBEdyrC427ygySag" name="redefinedElement" type="_QbiKIMcBEdyrC427ygySag" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_Qb-2oscBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKLscBEdyrC427ygySag" annotatedElement="_QbiKLccBEdyrC427ygySag">
<body>The redefinable element that is being redefined by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdBX98cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdBX-McBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKKccBEdyrC427ygySag" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_Qb-2nscBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKKscBEdyrC427ygySag" annotatedElement="_QbiKKccBEdyrC427ygySag">
<body>References the contexts that this element may be redefined from.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdBX-ccBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdBX-scBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_QbiKMccBEdyrC427ygySag" name="isConsistentWith" isQuery="true" precondition="_QdBX-8cBEdyrC427ygySag" bodyCondition="_QbiKM8cBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKMscBEdyrC427ygySag" annotatedElement="_QbiKMccBEdyrC427ygySag">
<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="_QdBX-8cBEdyrC427ygySag" constrainedElement="_QbiKMccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdBX_McBEdyrC427ygySag">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbiKM8cBEdyrC427ygySag" name="spec" constrainedElement="_QbiKMccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdBX_ccBEdyrC427ygySag">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QbiKNccBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_QbiKNscBEdyrC427ygySag" name="redefinee" type="_QbiKIMcBEdyrC427ygySag"/>
</ownedOperation>
<ownedOperation xmi:id="_QbiKN8cBEdyrC427ygySag" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_QbiKOccBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKOMcBEdyrC427ygySag" annotatedElement="_QbiKN8cBEdyrC427ygySag">
<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="_QbiKOccBEdyrC427ygySag" name="spec" constrainedElement="_QbiKN8cBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdBX_scBEdyrC427ygySag">
<language>OCL</language>
<body>result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QbiKO8cBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_QbiKPMcBEdyrC427ygySag" name="redefined" type="_QbiKIMcBEdyrC427ygySag" effect="read"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QbiKQ8cBEdyrC427ygySag" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:id="_QbiKRMcBEdyrC427ygySag" annotatedElement="_QbiKQ8cBEdyrC427ygySag">
<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="_QdLI6scBEdyrC427ygySag" annotatedElement="_QbiKQ8cBEdyrC427ygySag">
<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="_QbiKRccBEdyrC427ygySag" general="_QbOopscBEdyrC427ygySag"/>
<generalization xmi:id="_QbiKRscBEdyrC427ygySag" general="_QbiKSMcBEdyrC427ygySag"/>
<generalization xmi:id="_QbiKR8cBEdyrC427ygySag" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_QdLI68cBEdyrC427ygySag" name="isReadOnly" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QdLI7McBEdyrC427ygySag" annotatedElement="_QdLI68cBEdyrC427ygySag">
<body>States whether the feature's value may be modified by a client.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_QdLI7ccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QdLJA8cBEdyrC427ygySag" name="Slot">
<ownedComment xmi:id="_QdLJBMcBEdyrC427ygySag" annotatedElement="_QdLJA8cBEdyrC427ygySag">
<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="_QdLJBccBEdyrC427ygySag" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_QdLJBscBEdyrC427ygySag" name="owningInstance" type="_QdLI7scBEdyrC427ygySag" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qd6v1ccBEdyrC427ygySag">
<ownedComment xmi:id="_QdLJB8cBEdyrC427ygySag" annotatedElement="_QdLJBscBEdyrC427ygySag">
<body>The instance specification that owns this slot.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdLJCMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdLJCccBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QdLJCscBEdyrC427ygySag" name="definingFeature" type="_QbiKQ8cBEdyrC427ygySag" association="_Qd6v1scBEdyrC427ygySag">
<ownedComment xmi:id="_QdLJC8cBEdyrC427ygySag" annotatedElement="_QdLJCscBEdyrC427ygySag">
<body>The structural feature that specifies the values that may be held by the slot.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdLJDMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdLJDccBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QdLJDscBEdyrC427ygySag" name="value" type="_QbiKT8cBEdyrC427ygySag" isOrdered="true" aggregation="composite" subsettedProperty="_QbOojscBEdyrC427ygySag" association="_QeD5sMcBEdyrC427ygySag">
<ownedComment xmi:id="_QdLJD8cBEdyrC427ygySag" annotatedElement="_QdLJDscBEdyrC427ygySag">
<body>The value or values corresponding to the defining feature for the owning instance specification.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdLJEMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdLJEccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_SnNPIGwIEdq7X4sGURiZYA" name="PackageImport">
<ownedComment xmi:id="_Qb1FgMcBEdyrC427ygySag" annotatedElement="_SnNPIGwIEdq7X4sGURiZYA">
<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="_Qb1FgccBEdyrC427ygySag" name="public_or_private" constrainedElement="_SnNPIGwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_Qb1FgscBEdyrC427ygySag" annotatedElement="_Qb1FgccBEdyrC427ygySag">
<body>The visibility of a PackageImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdLJI8cBEdyrC427ygySag">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<generalization xmi:id="_Qb1FhMcBEdyrC427ygySag" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_Qb1FhccBEdyrC427ygySag" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
<ownedComment xmi:id="_Qb1FhscBEdyrC427ygySag" annotatedElement="_Qb1FhccBEdyrC427ygySag">
<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="_QdLJJMcBEdyrC427ygySag" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_Qb-2NccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1FjMcBEdyrC427ygySag" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_QbOof8cBEdyrC427ygySag _QbOokscBEdyrC427ygySag" association="_Qb-2fMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FjccBEdyrC427ygySag" annotatedElement="_Qb1FjMcBEdyrC427ygySag">
<body>Specifies the Namespace that imports the members from a Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdLJJccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdLJJscBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1FiMcBEdyrC427ygySag" name="importedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_QbOog8cBEdyrC427ygySag" association="_Qb-2c8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FiccBEdyrC427ygySag" annotatedElement="_Qb1FiMcBEdyrC427ygySag">
<body>Specifies the Package whose members are imported into a Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdLJJ8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdLJKMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="__1ap4HLzEdqziYxiZo0YtA" name="DataType">
<ownedComment xmi:id="_QbrUO8cBEdyrC427ygySag" annotatedElement="__1ap4HLzEdqziYxiZo0YtA">
<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="_QbrUPMcBEdyrC427ygySag" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_QbrUPccBEdyrC427ygySag" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_QbOoIscBEdyrC427ygySag _QbYZaccBEdyrC427ygySag" association="_Qb-2XccBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUPscBEdyrC427ygySag" annotatedElement="_QbrUPccBEdyrC427ygySag">
<body>The Attributes owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnNwMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnNwccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbrUQccBEdyrC427ygySag" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_QbOoJscBEdyrC427ygySag _QbYZaccBEdyrC427ygySag" association="_Qb-2XscBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUQscBEdyrC427ygySag" annotatedElement="_QbrUQccBEdyrC427ygySag">
<body>The Operations owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnNwscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnNw8cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_FDM9YHL0EdqziYxiZo0YtA" name="createOwnedOperation">
<ownedComment xmi:id="_GrDVwOwmEdqYHf-imTcTdw" annotatedElement="_FDM9YHL0EdqziYxiZo0YtA">
<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="_FDM9YXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_FDM9YnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_qJiAUPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9YnL0EdqziYxiZo0YtA">
<body>The name for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wfr4AaOxEdqi_5gqUMOQtA" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfr4AKOxEdqi_5gqUMOQtA"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9ZHL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_sw2n4PIAEdulR8T2OJRyFQ" annotatedElement="_FDM9ZHL0EdqziYxiZo0YtA">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9ZXL0EdqziYxiZo0YtA" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9ZnL0EdqziYxiZo0YtA"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9Z3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_uKsvsPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Z3L0EdqziYxiZo0YtA">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9aHL0EdqziYxiZo0YtA" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9aXL0EdqziYxiZo0YtA"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9Y3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_wCpIwPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Y3L0EdqziYxiZo0YtA">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yc2vUaOxEdqi_5gqUMOQtA" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yc2vUKOxEdqi_5gqUMOQtA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_WJZCQHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="_I4T3gOwmEdqYHf-imTcTdw" annotatedElement="_WJZCQHL0EdqziYxiZo0YtA">
<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="_WJZCQXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_WJZCQnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_kDvt0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0pOgQaOxEdqi_5gqUMOQtA" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0pOgQKOxEdqi_5gqUMOQtA"/>
</ownedParameter>
<ownedParameter xmi:id="_WJZCQ3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_lgIMQPIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQ3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bXMQaOxEdqi_5gqUMOQtA" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bXMQKOxEdqi_5gqUMOQtA"/>
</ownedParameter>
<ownedParameter xmi:id="_WJZCRHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_iw5l4PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_WJZCRXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_nuRe0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_QbrURccBEdyrC427ygySag" name="inherit" isQuery="true" redefinedOperation="_QbOobccBEdyrC427ygySag" bodyCondition="_QbrUR8cBEdyrC427ygySag">
<ownedComment xmi:id="_QbrURscBEdyrC427ygySag" annotatedElement="_QbrURccBEdyrC427ygySag">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:id="_QbrUR8cBEdyrC427ygySag" name="spec" constrainedElement="_QbrURccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QbrUSMcBEdyrC427ygySag">
<language>OCL</language>
<body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QbrUSccBEdyrC427ygySag" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QbrUSscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QbrUS8cBEdyrC427ygySag"/>
</ownedParameter>
<ownedParameter xmi:id="_QbrUTMcBEdyrC427ygySag" name="inhs" type="_csVgUGvtEdqG6fBIPwe-mw">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QbrUTccBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QbrUTscBEdyrC427ygySag"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_I6N3UGwGEdq7X4sGURiZYA" name="Enumeration">
<ownedComment xmi:id="_QbrUT8cBEdyrC427ygySag" annotatedElement="_I6N3UGwGEdq7X4sGURiZYA">
<body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
</ownedComment>
<generalization xmi:id="_QbrUUMcBEdyrC427ygySag" general="__1ap4HLzEdqziYxiZo0YtA"/>
<ownedAttribute xmi:id="_QbrUUccBEdyrC427ygySag" name="ownedLiteral" type="_OQcbgGwOEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_QbYZaccBEdyrC427ygySag" association="_Qb-2XMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUUscBEdyrC427ygySag" annotatedElement="_QbrUUccBEdyrC427ygySag">
<body>The ordered set of literals for this Enumeration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnNxMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnNxccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_OQcbgGwOEdq7X4sGURiZYA" name="EnumerationLiteral">
<ownedComment xmi:id="_QbrUVccBEdyrC427ygySag" annotatedElement="_OQcbgGwOEdq7X4sGURiZYA">
<body>An enumeration literal is a user-defined data value for an enumeration.</body>
</ownedComment>
<generalization xmi:id="_QdnNxscBEdyrC427ygySag" general="_QdLI7scBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QbrUV8cBEdyrC427ygySag" name="enumeration" type="_I6N3UGwGEdq7X4sGURiZYA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag" association="_Qb-2XMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbrUWMcBEdyrC427ygySag" annotatedElement="_QbrUV8cBEdyrC427ygySag">
<body>The Enumeration that this EnumerationLiteral is a member of.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnNx8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnNyMcBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_V6vuYGwGEdq7X4sGURiZYA" name="PrimitiveType">
<ownedComment xmi:id="_QbrUW8cBEdyrC427ygySag" annotatedElement="_V6vuYGwGEdq7X4sGURiZYA">
<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="_QbrUXMcBEdyrC427ygySag" general="__1ap4HLzEdqziYxiZo0YtA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_AwvxoGwNEdq7X4sGURiZYA" name="Association">
<ownedComment xmi:id="_QbiKcccBEdyrC427ygySag" annotatedElement="_AwvxoGwNEdq7X4sGURiZYA">
<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="_QdnNyccBEdyrC427ygySag" name="specialized_end_number" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_QdnNyscBEdyrC427ygySag" annotatedElement="_QdnNyccBEdyrC427ygySag">
<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="_QdnNy8cBEdyrC427ygySag">
<language>OCL</language>
<body>self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QdnNzMcBEdyrC427ygySag" name="specialized_end_types" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_QdnNzccBEdyrC427ygySag" annotatedElement="_QdnNzMcBEdyrC427ygySag">
<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="_QdnNzscBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QdnNz8cBEdyrC427ygySag" name="binary_associations" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_QdnN0McBEdyrC427ygySag" annotatedElement="_QdnNz8cBEdyrC427ygySag">
<body>Only binary associations can be aggregations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdnN0ccBEdyrC427ygySag">
<language>OCL</language>
<body>self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbiKcscBEdyrC427ygySag" name="association_ends" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_QbiKc8cBEdyrC427ygySag" annotatedElement="_QbiKcscBEdyrC427ygySag">
<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="_QdnN0scBEdyrC427ygySag">
<language>OCL</language>
<body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
</specification>
</ownedRule>
<generalization xmi:id="_QbiKdscBEdyrC427ygySag" general="_DH62EKPAEdqi_5gqUMOQtA"/>
<generalization xmi:id="_QbiKdccBEdyrC427ygySag" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_QbiKd8cBEdyrC427ygySag" name="isDerived" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QbiKeMcBEdyrC427ygySag" annotatedElement="_QbiKd8cBEdyrC427ygySag">
<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="_QdnN08cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKescBEdyrC427ygySag" name="ownedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_QbiKgscBEdyrC427ygySag _QbOoJscBEdyrC427ygySag _QbYZaccBEdyrC427ygySag" association="_Qb-2Q8cBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKe8cBEdyrC427ygySag" annotatedElement="_QbiKescBEdyrC427ygySag">
<body>The ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnN1McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnN1ccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKfscBEdyrC427ygySag" name="endType" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" isReadOnly="true" isDerived="true" subsettedProperty="_QbiKP8cBEdyrC427ygySag" association="_Qb-2WMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKf8cBEdyrC427ygySag" annotatedElement="_QbiKfscBEdyrC427ygySag">
<body>References the classifiers that are used as types of the ends of the association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnN1scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnN18cBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKgscBEdyrC427ygySag" name="memberEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" subsettedProperty="_QbYZbccBEdyrC427ygySag" association="_Qb-2gscBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKg8cBEdyrC427ygySag" annotatedElement="_QbiKgscBEdyrC427ygySag">
<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="_QdnN2McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnN2ccBEdyrC427ygySag" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbiKhscBEdyrC427ygySag" name="navigableOwnedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_QbiKescBEdyrC427ygySag" association="_Qb-2vMcBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKh8cBEdyrC427ygySag" annotatedElement="_QbiKhscBEdyrC427ygySag">
<body>The navigable ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnN2scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnN28cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_WSPusK69EdqjppZik4kD8A" name="isBinary">
<ownedComment xmi:id="_4TWQYOwlEdqYHf-imTcTdw" annotatedElement="_WSPusK69EdqjppZik4kD8A">
<body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
</ownedComment>
<ownedParameter xmi:id="_YmN8cK69EdqjppZik4kD8A" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QdnN3McBEdyrC427ygySag" name="endType" isQuery="true" bodyCondition="_QdnN3scBEdyrC427ygySag">
<ownedComment xmi:id="_QdnN3ccBEdyrC427ygySag" annotatedElement="_QdnN3McBEdyrC427ygySag">
<body>endType is derived from the types of the member ends.</body>
</ownedComment>
<ownedRule xmi:id="_QdnN3scBEdyrC427ygySag" name="spec" constrainedElement="_QdnN3McBEdyrC427ygySag _QbiKfscBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QdnN38cBEdyrC427ygySag">
<language>OCL</language>
<body>result = self.memberEnd->collect(e | e.type)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QdnN4McBEdyrC427ygySag" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QdnN4ccBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QdnN4scBEdyrC427ygySag"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_DH62EKPAEdqi_5gqUMOQtA" name="Relationship" isAbstract="true">
<ownedComment xmi:id="_QbiKPccBEdyrC427ygySag" annotatedElement="_DH62EKPAEdqi_5gqUMOQtA">
<body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
</ownedComment>
<generalization xmi:id="_QbiKPscBEdyrC427ygySag" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_QbiKP8cBEdyrC427ygySag" name="relatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_Qb-2kscBEdyrC427ygySag">
<ownedComment xmi:id="_QbiKQMcBEdyrC427ygySag" annotatedElement="_QbiKP8cBEdyrC427ygySag">
<body>Specifies the elements related by the Relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-y8cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-zMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Qb1FkMcBEdyrC427ygySag" name="PackageMerge">
<ownedComment xmi:id="_Qb1FkccBEdyrC427ygySag" annotatedElement="_Qb1FkMcBEdyrC427ygySag">
<body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
</ownedComment>
<generalization xmi:id="_Qb1FkscBEdyrC427ygySag" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_Qb1Fk8cBEdyrC427ygySag" name="receivingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_QbOof8cBEdyrC427ygySag _QbOokscBEdyrC427ygySag" association="_Qb-2iMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FlMcBEdyrC427ygySag" annotatedElement="_Qb1Fk8cBEdyrC427ygySag">
<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="_Qdw-zccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-zscBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb1Fl8cBEdyrC427ygySag" name="mergedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_QbOog8cBEdyrC427ygySag" association="_Qb-2iccBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1FmMcBEdyrC427ygySag" annotatedElement="_Qb1Fl8cBEdyrC427ygySag">
<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="_Qdw-z8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-0McBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_PyCx8GveEdq4DLWZOhbdEA" name="InstanceValue">
<ownedComment xmi:id="_Qdw-0ccBEdyrC427ygySag" annotatedElement="_PyCx8GveEdq4DLWZOhbdEA">
<body>An instance value is a value specification that identifies an instance.</body>
</ownedComment>
<generalization xmi:id="_Qdw-0scBEdyrC427ygySag" general="_QbiKT8cBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_Qdw-08cBEdyrC427ygySag" name="instance" type="_QdLI7scBEdyrC427ygySag" association="_Qd6wEMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qdw-1McBEdyrC427ygySag" annotatedElement="_Qdw-08cBEdyrC427ygySag">
<body>The instance that is the specified value.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-1ccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-1scBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="_QUJ-oWWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_T0RPYGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Q-yR4GveEdq4DLWZOhbdEA" name="LiteralUnlimitedNatural">
<ownedComment xmi:id="_Qdw-18cBEdyrC427ygySag" annotatedElement="_Q-yR4GveEdq4DLWZOhbdEA">
<body>A literal unlimited natural is a specification of an unlimited natural number.</body>
</ownedComment>
<generalization xmi:id="_Qdw-2McBEdyrC427ygySag" general="_Qcuc8McBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_Qdw-2ccBEdyrC427ygySag" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_Qdw-2scBEdyrC427ygySag" annotatedElement="_Qdw-2ccBEdyrC427ygySag">
<body>The specified UnlimitedNatural value.</body>
</ownedComment>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-28cBEdyrC427ygySag" type="_dRZxsGvsEdqG6fBIPwe-mw"/>
</ownedAttribute>
<ownedOperation xmi:id="_lSARkGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_nyfRUGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_Qdw-3McBEdyrC427ygySag" name="isComputable" isQuery="true" redefinedOperation="_QbiKU8cBEdyrC427ygySag" bodyCondition="_Qdw-3scBEdyrC427ygySag">
<ownedComment xmi:id="_Qdw-3ccBEdyrC427ygySag" annotatedElement="_Qdw-3McBEdyrC427ygySag">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_Qdw-3scBEdyrC427ygySag" name="spec" constrainedElement="_Qdw-3McBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qdw-38cBEdyrC427ygySag">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Qdw-4McBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_Qdw-4ccBEdyrC427ygySag" name="unlimitedValue" isQuery="true" redefinedOperation="_QbiKZ8cBEdyrC427ygySag" bodyCondition="_Qdw-48cBEdyrC427ygySag">
<ownedComment xmi:id="_Qdw-4scBEdyrC427ygySag" annotatedElement="_Qdw-4ccBEdyrC427ygySag">
<body>The query unlimitedValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_Qdw-48cBEdyrC427ygySag" name="spec" constrainedElement="_Qdw-4ccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qdw-5McBEdyrC427ygySag">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Qdw-5ccBEdyrC427ygySag" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ynRtoGvtEdqG6fBIPwe-mw" name="Type" isAbstract="true">
<ownedComment xmi:id="_Qb1Fm8cBEdyrC427ygySag" annotatedElement="_ynRtoGvtEdqG6fBIPwe-mw">
<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="_Qdw-5scBEdyrC427ygySag" annotatedElement="_ynRtoGvtEdqG6fBIPwe-mw">
<body>A type constrains the values represented by a typed element.</body>
</ownedComment>
<generalization xmi:id="_Qb1FnccBEdyrC427ygySag" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_Qb1FnscBEdyrC427ygySag" name="package" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag" association="_Qb-2gccBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1Fn8cBEdyrC427ygySag" annotatedElement="_Qb1FnscBEdyrC427ygySag">
<body>Specifies the owning package of this classifier, if any.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-58cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-6McBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_RNEaIGwNEdq7X4sGURiZYA" name="createAssociation">
<ownedComment xmi:id="_w29JkOwgEdqYHf-imTcTdw" annotatedElement="_RNEaIGwNEdq7X4sGURiZYA">
<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="_URUOQGwNEdq7X4sGURiZYA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_AEONYGwOEdq7X4sGURiZYA" name="end1IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_QiftAPIGEdulR8T2OJRyFQ" annotatedElement="_AEONYGwOEdq7X4sGURiZYA">
<body>The navigability for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_7HueMGwNEdq7X4sGURiZYA" name="end1Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_OnjqUPIGEdulR8T2OJRyFQ" annotatedElement="_7HueMGwNEdq7X4sGURiZYA">
<body>The aggregation for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_2TaaoGwNEdq7X4sGURiZYA" name="end1Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_Se69cPIGEdulR8T2OJRyFQ" annotatedElement="_2TaaoGwNEdq7X4sGURiZYA">
<body>The name for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_x-QYQGwNEdq7X4sGURiZYA" name="end1Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_RpH94PIGEdulR8T2OJRyFQ" annotatedElement="_x-QYQGwNEdq7X4sGURiZYA">
<body>The lower bound for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_uL9yYGwNEdq7X4sGURiZYA" name="end1Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_UmXyIPIGEdulR8T2OJRyFQ" annotatedElement="_uL9yYGwNEdq7X4sGURiZYA">
<body>The upper bound for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_qFQbsGwNEdq7X4sGURiZYA" name="end1Type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_TTX5MPIGEdulR8T2OJRyFQ" annotatedElement="_qFQbsGwNEdq7X4sGURiZYA">
<body>The type for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_mB-McGwNEdq7X4sGURiZYA" name="end2IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_YRNsMPIGEdulR8T2OJRyFQ" annotatedElement="_mB-McGwNEdq7X4sGURiZYA">
<body>The navigability for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_hm2sAGwNEdq7X4sGURiZYA" name="end2Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_VjBAkPIGEdulR8T2OJRyFQ" annotatedElement="_hm2sAGwNEdq7X4sGURiZYA">
<body>The aggregation for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_eK6JkGwNEdq7X4sGURiZYA" name="end2Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_cTJ3oPIGEdulR8T2OJRyFQ" annotatedElement="_eK6JkGwNEdq7X4sGURiZYA">
<body>The name for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_auE2UGwNEdq7X4sGURiZYA" name="end2Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_aGo8wPIGEdulR8T2OJRyFQ" annotatedElement="_auE2UGwNEdq7X4sGURiZYA">
<body>The lower bound for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_VprIUGwNEdq7X4sGURiZYA" name="end2Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_eBbXUPIGEdulR8T2OJRyFQ" annotatedElement="_VprIUGwNEdq7X4sGURiZYA">
<body>The upper bound for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_10fbsKPAEdqi_5gqUMOQtA" name="getAssociations">
<ownedComment xmi:id="_2pskQOwgEdqYHf-imTcTdw" annotatedElement="_10fbsKPAEdqi_5gqUMOQtA">
<body>Retrieves the associations in which this type is involved.</body>
</ownedComment>
<ownedParameter xmi:id="_5F3F0KPAEdqi_5gqUMOQtA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7CRvMaPAEdqi_5gqUMOQtA" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7CRvMKPAEdqi_5gqUMOQtA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Qb1FoscBEdyrC427ygySag" name="conformsTo" isQuery="true" bodyCondition="_Qb1FpMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qb1Fo8cBEdyrC427ygySag" annotatedElement="_Qb1FoscBEdyrC427ygySag">
<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="_Qb1FpMcBEdyrC427ygySag" name="spec" constrainedElement="_Qb1FoscBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qdw-6ccBEdyrC427ygySag">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Qb1FpscBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_Qb1Fp8cBEdyrC427ygySag" name="other" type="_ynRtoGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Qb-2EMcBEdyrC427ygySag" name="Expression">
<ownedComment xmi:id="_Qb-2EccBEdyrC427ygySag" annotatedElement="_Qb-2EMcBEdyrC427ygySag">
<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="_Qdw-6scBEdyrC427ygySag" annotatedElement="_Qb-2EMcBEdyrC427ygySag">
<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="_Qb-2EscBEdyrC427ygySag" general="_QbiKT8cBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_Qdw-68cBEdyrC427ygySag" name="symbol" type="_aAyVgGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_Qdw-7McBEdyrC427ygySag" annotatedElement="_Qdw-68cBEdyrC427ygySag">
<body>The symbol associated with the node in the expression tree.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-7ccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-7scBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Qb-2E8cBEdyrC427ygySag" name="operand" type="_QbiKT8cBEdyrC427ygySag" isOrdered="true" aggregation="composite" subsettedProperty="_QbOojscBEdyrC427ygySag" association="_Qb-2uMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qb-2FMcBEdyrC427ygySag" annotatedElement="_Qb-2E8cBEdyrC427ygySag">
<body>Specifies a sequence of operands.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qdw-78cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qdw-8McBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_B3q9cGwNEdq7X4sGURiZYA" name="AggregationKind" visibility="private">
<ownedComment xmi:id="_Qdw-8ccBEdyrC427ygySag" annotatedElement="_B3q9cGwNEdq7X4sGURiZYA">
<body>AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property.</body>
</ownedComment>
<ownedLiteral xmi:id="_Qdw-8scBEdyrC427ygySag" name="none">
<ownedComment xmi:id="_Qdw-88cBEdyrC427ygySag" annotatedElement="_Qdw-8scBEdyrC427ygySag">
<body>Indicates that the property has no aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_Qdw-9McBEdyrC427ygySag" name="shared">
<ownedComment xmi:id="_Qdw-9ccBEdyrC427ygySag" annotatedElement="_Qdw-9McBEdyrC427ygySag">
<body>Indicates that the property has a shared aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_Qdw-9scBEdyrC427ygySag" name="composite">
<ownedComment xmi:id="_Qdw-98cBEdyrC427ygySag" annotatedElement="_Qdw-9scBEdyrC427ygySag">
<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="_Qb-2IscBEdyrC427ygySag" name="ParameterDirectionKind" visibility="private">
<ownedComment xmi:id="_Qb-2I8cBEdyrC427ygySag" annotatedElement="_Qb-2IscBEdyrC427ygySag">
<body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
</ownedComment>
<ownedLiteral xmi:id="_Qb-2JMcBEdyrC427ygySag" name="in">
<ownedComment xmi:id="_Qb-2JccBEdyrC427ygySag" annotatedElement="_Qb-2JMcBEdyrC427ygySag">
<body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_Qb-2JscBEdyrC427ygySag" name="inout">
<ownedComment xmi:id="_Qb-2J8cBEdyrC427ygySag" annotatedElement="_Qb-2JscBEdyrC427ygySag">
<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="_Qb-2KMcBEdyrC427ygySag" name="out">
<ownedComment xmi:id="_Qb-2KccBEdyrC427ygySag" annotatedElement="_Qb-2KMcBEdyrC427ygySag">
<body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_Qb-2KscBEdyrC427ygySag" name="return">
<ownedComment xmi:id="_Qb-2K8cBEdyrC427ygySag" annotatedElement="_Qb-2KscBEdyrC427ygySag">
<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="_AyM_oGwMEdq7X4sGURiZYA" name="VisibilityKind" visibility="private">
<ownedComment xmi:id="_Qb-2LMcBEdyrC427ygySag" annotatedElement="_AyM_oGwMEdq7X4sGURiZYA">
<body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
</ownedComment>
<ownedOperation xmi:id="_Qb-2LccBEdyrC427ygySag" name="bestVisibility" isQuery="true" precondition="_Qdw--McBEdyrC427ygySag" bodyCondition="_Qb-2L8cBEdyrC427ygySag">
<ownedComment xmi:id="_Qb-2LscBEdyrC427ygySag" annotatedElement="_Qb-2LccBEdyrC427ygySag">
<body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
</ownedComment>
<ownedRule xmi:id="_Qdw--McBEdyrC427ygySag" constrainedElement="_Qb-2LccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qdw--ccBEdyrC427ygySag">
<language>OCL</language>
<body>pre: not vis->includes(#protected) and not vis->includes(#package)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Qb-2L8cBEdyrC427ygySag" name="spec" constrainedElement="_Qb-2LccBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Qdw--scBEdyrC427ygySag">
<language>OCL</language>
<body>result = if vis->includes(#public) then #public else #private endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Qb-2MccBEdyrC427ygySag" type="_AyM_oGwMEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_Qb-2MscBEdyrC427ygySag" name="vis" type="_AyM_oGwMEdq7X4sGURiZYA">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vwMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vwccBEdyrC427ygySag"/>
</ownedParameter>
</ownedOperation>
<ownedLiteral xmi:id="_Qb-2NccBEdyrC427ygySag" name="public">
<ownedComment xmi:id="_Qb-2NscBEdyrC427ygySag" annotatedElement="_Qb-2NccBEdyrC427ygySag">
<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="_Qb-2N8cBEdyrC427ygySag" name="private">
<ownedComment xmi:id="_Qb-2OMcBEdyrC427ygySag" annotatedElement="_Qb-2N8cBEdyrC427ygySag">
<body>A private element is only visible inside the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_Qb-2OccBEdyrC427ygySag" name="protected">
<ownedComment xmi:id="_Qb-2OscBEdyrC427ygySag" annotatedElement="_Qb-2OccBEdyrC427ygySag">
<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="_Qb-2O8cBEdyrC427ygySag" name="package">
<ownedComment xmi:id="_Qb-2PMcBEdyrC427ygySag" annotatedElement="_Qb-2O8cBEdyrC427ygySag">
<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="_Qb-2jccBEdyrC427ygySag" name="A_ownedElement_owner" memberEnd="_QbOojscBEdyrC427ygySag _QbOokscBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2lscBEdyrC427ygySag" name="A_source_directedRelationship" memberEnd="_QbOof8cBEdyrC427ygySag _Qb-2l8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2l8cBEdyrC427ygySag" type="_JBgfoKPAEdqi_5gqUMOQtA" association="_Qb-2lscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vwscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vw8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2mscBEdyrC427ygySag" name="A_target_directedRelationship" memberEnd="_QbOog8cBEdyrC427ygySag _Qb-2m8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2m8cBEdyrC427ygySag" type="_JBgfoKPAEdqi_5gqUMOQtA" association="_Qb-2mscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vxMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vxccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2p8cBEdyrC427ygySag" name="A_constrainedElement_constraint" memberEnd="_QbrUZscBEdyrC427ygySag _Qb-2qMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2qMcBEdyrC427ygySag" type="_QbrUXccBEdyrC427ygySag" association="_Qb-2p8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vxscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vx8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2PccBEdyrC427ygySag" name="A_type_typedElement" memberEnd="_QbiKS8cBEdyrC427ygySag _Qb-2PscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2PscBEdyrC427ygySag" type="_QbiKSMcBEdyrC427ygySag" association="_Qb-2PccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vyMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vyccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6vyscBEdyrC427ygySag" name="A_generalization_specific" memberEnd="_Qc3m_scBEdyrC427ygySag _QdBYBccBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6vy8cBEdyrC427ygySag" name="A_general_generalization" memberEnd="_QdBYCccBEdyrC427ygySag _Qd6vzMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6vzMcBEdyrC427ygySag" type="_C7AF4GwREdq14q0ETb1t3g" association="_Qd6vy8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vzccBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6vzscBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2pscBEdyrC427ygySag" name="A_feature_featuringClassifier" memberEnd="_QbOoJscBEdyrC427ygySag _QbOoqccBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2Z8cBEdyrC427ygySag" name="A_ownedParameter_ownerFormalParam" memberEnd="_Qb1FJ8cBEdyrC427ygySag _Qb-2aMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2aMcBEdyrC427ygySag" name="ownerFormalParam" type="_rHT3YKOsEdqi_5gqUMOQtA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag" association="_Qb-2Z8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6vz8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v0McBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v0ccBEdyrC427ygySag" name="A_classifier_instanceSpecification" memberEnd="_QdLI98cBEdyrC427ygySag _Qd6v0scBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v0scBEdyrC427ygySag" type="_QdLI7scBEdyrC427ygySag" association="_Qd6v0ccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v08cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v1McBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v1ccBEdyrC427ygySag" name="A_slot_owningInstance" memberEnd="_QdLI-8cBEdyrC427ygySag _QdLJBscBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v1scBEdyrC427ygySag" name="A_definingFeature_slot" memberEnd="_QdLJCscBEdyrC427ygySag _Qd6v18cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v18cBEdyrC427ygySag" type="_QdLJA8cBEdyrC427ygySag" association="_Qd6v1scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v2McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v2ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2jscBEdyrC427ygySag" name="A_annotatedElement_comment" memberEnd="_Qb-2HscBEdyrC427ygySag _Qb-2j8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2j8cBEdyrC427ygySag" type="_Qb-2F8cBEdyrC427ygySag" association="_Qb-2jscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v2scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v28cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2wccBEdyrC427ygySag" name="A_ownedComment_owningElement" memberEnd="_QbOolscBEdyrC427ygySag _Qb-2wscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2wscBEdyrC427ygySag" name="owningElement" type="_kl90MGvbEdq4DLWZOhbdEA" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qb-2wccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v3McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v3ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2d8cBEdyrC427ygySag" name="A_importedElement_elementImport" memberEnd="_Qb1FRccBEdyrC427ygySag _Qb-2eMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2eMcBEdyrC427ygySag" type="_RPl78GwIEdq7X4sGURiZYA" association="_Qb-2d8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qb-2eccBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qb-2escBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2xccBEdyrC427ygySag" name="A_inheritedMember_classifier" memberEnd="_QbOoLscBEdyrC427ygySag _Qb-2xscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2xscBEdyrC427ygySag" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Qb-2xccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v3scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v38cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v4McBEdyrC427ygySag" name="A_nestedClassifier_class" memberEnd="_QdLJK8cBEdyrC427ygySag _Qd6v4ccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v4ccBEdyrC427ygySag" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag _QbiKKccBEdyrC427ygySag" association="_Qd6v4McBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v4scBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v48cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2QccBEdyrC427ygySag" name="A_ownedAttribute_class" memberEnd="_QbiKj8cBEdyrC427ygySag _QbiKzMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2QscBEdyrC427ygySag" name="A_ownedOperation_class" memberEnd="_QbiKk8cBEdyrC427ygySag _QbrUmMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2yccBEdyrC427ygySag" name="A_precondition_preContext" memberEnd="_QbrUsMcBEdyrC427ygySag _Qb-2yscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2yscBEdyrC427ygySag" name="preContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_QbrUbscBEdyrC427ygySag" association="_Qb-2yccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v5scBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v58cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2zccBEdyrC427ygySag" name="A_postcondition_postContext" memberEnd="_QbrUs8cBEdyrC427ygySag _Qb-2zscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2zscBEdyrC427ygySag" name="postContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_QbrUbscBEdyrC427ygySag" association="_Qb-2zccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v6McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v6ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2Y8cBEdyrC427ygySag" name="A_redefinedOperation_operation" memberEnd="_QbrUpMcBEdyrC427ygySag _Qb-2ZMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2ZMcBEdyrC427ygySag" type="_M4X2IGveEdq4DLWZOhbdEA" association="_Qb-2Y8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v6scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v68cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2SMcBEdyrC427ygySag" name="A_redefinedProperty_property" memberEnd="_QbiK1McBEdyrC427ygySag _Qb-2SccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2SccBEdyrC427ygySag" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Qb-2SMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v7McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v7ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2Q8cBEdyrC427ygySag" name="A_ownedEnd_owningAssociation" memberEnd="_QbiKescBEdyrC427ygySag _QbiK0McBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2XccBEdyrC427ygySag" name="A_ownedAttribute_datatype" memberEnd="_QbrUPccBEdyrC427ygySag _QbrUFMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2XscBEdyrC427ygySag" name="A_ownedOperation_datatype" memberEnd="_QbrUQccBEdyrC427ygySag _QbrUnMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2XMcBEdyrC427ygySag" name="A_ownedLiteral_enumeration" memberEnd="_QbrUUccBEdyrC427ygySag _QbrUV8cBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2e8cBEdyrC427ygySag" name="A_elementImport_importingNamespace" memberEnd="_QbYZYccBEdyrC427ygySag _Qb1FSccBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2fMcBEdyrC427ygySag" name="A_packageImport_importingNamespace" memberEnd="_QbYZZccBEdyrC427ygySag _Qb1FjMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2c8cBEdyrC427ygySag" name="A_importedPackage_packageImport" memberEnd="_Qb1FiMcBEdyrC427ygySag _Qb-2dMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2dMcBEdyrC427ygySag" type="_SnNPIGwIEdq7X4sGURiZYA" association="_Qb-2c8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v7scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v78cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v8McBEdyrC427ygySag" name="A_redefinedClassifier_classifier" memberEnd="_Qc3nCccBEdyrC427ygySag _Qd6v8ccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v8ccBEdyrC427ygySag" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Qd6v8McBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v8scBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v88cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2q8cBEdyrC427ygySag" name="A_specification_owningConstraint" memberEnd="_QbrUascBEdyrC427ygySag _Qb-2rMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2rMcBEdyrC427ygySag" name="owningConstraint" type="_QbrUXccBEdyrC427ygySag" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qb-2q8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v9McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v9ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v9scBEdyrC427ygySag" name="A_defaultValue_owningParameter" memberEnd="_QdLI5McBEdyrC427ygySag _Qd6v98cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v98cBEdyrC427ygySag" name="owningParameter" type="_KyaPMGveEdq4DLWZOhbdEA" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qd6v9scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v-McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v-ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6v-scBEdyrC427ygySag" name="A_defaultValue_owningProperty" memberEnd="_QdUS98cBEdyrC427ygySag _Qd6v-8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6v-8cBEdyrC427ygySag" name="owningProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qd6v-scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6v_McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6v_ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-21ccBEdyrC427ygySag" name="A_ownedRule_context" memberEnd="_QbYZcccBEdyrC427ygySag _QbrUbscBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2tMcBEdyrC427ygySag" name="A_member_namespace" memberEnd="_QbYZbccBEdyrC427ygySag _Qb-2tccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2tccBEdyrC427ygySag" type="_ZiwkoGwLEdq7X4sGURiZYA" association="_Qb-2tMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wAMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wAccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2kscBEdyrC427ygySag" name="A_relatedElement_relationship" memberEnd="_QbiKP8cBEdyrC427ygySag _Qb-2k8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2k8cBEdyrC427ygySag" type="_DH62EKPAEdqi_5gqUMOQtA" association="_Qb-2kscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wAscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wA8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2WMcBEdyrC427ygySag" name="A_endType_association" memberEnd="_QbiKfscBEdyrC427ygySag _Qb-2WccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2WccBEdyrC427ygySag" type="_AwvxoGwNEdq7X4sGURiZYA" association="_Qb-2WMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wBMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wBccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6wBscBEdyrC427ygySag" name="A_upperValue_owningUpper" memberEnd="_QcudWccBEdyrC427ygySag _Qd6wB8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6wB8cBEdyrC427ygySag" name="owningUpper" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qd6wBscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wCMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wCccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6wCscBEdyrC427ygySag" name="A_lowerValue_owningLower" memberEnd="_QcudXccBEdyrC427ygySag _Qd6wC8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6wC8cBEdyrC427ygySag" name="owningLower" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qd6wCscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wDMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wDccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2iMcBEdyrC427ygySag" name="A_receivingPackage_packageMerge" memberEnd="_Qb1Fk8cBEdyrC427ygySag _Qb1FaMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2iccBEdyrC427ygySag" name="A_mergedPackage_packageMerge" memberEnd="_Qb1Fl8cBEdyrC427ygySag _Qb-2iscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2iscBEdyrC427ygySag" type="_Qb1FkMcBEdyrC427ygySag" association="_Qb-2iccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wDscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wD8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qd6wEMcBEdyrC427ygySag" name="A_instance_instanceValue" memberEnd="_Qdw-08cBEdyrC427ygySag _Qd6wEccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qd6wEccBEdyrC427ygySag" type="_PyCx8GveEdq4DLWZOhbdEA" association="_Qd6wEMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qd6wEscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qd6wE8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeD5sMcBEdyrC427ygySag" name="A_value_owningSlot" memberEnd="_QdLJDscBEdyrC427ygySag _QeD5sccBEdyrC427ygySag">
<ownedEnd xmi:id="_QeD5sccBEdyrC427ygySag" name="owningSlot" type="_QdLJA8cBEdyrC427ygySag" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_QeD5sMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5sscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5s8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeD5tMcBEdyrC427ygySag" name="A_specification_owningInstanceSpec" memberEnd="_QdLI_8cBEdyrC427ygySag _QeD5tccBEdyrC427ygySag">
<ownedEnd xmi:id="_QeD5tccBEdyrC427ygySag" name="owningInstanceSpec" type="_QdLI7scBEdyrC427ygySag" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_QeD5tMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5tscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5t8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2fccBEdyrC427ygySag" name="A_packagedElement_owningPackage" memberEnd="_Qb1FWMcBEdyrC427ygySag _Qb-2fscBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2fscBEdyrC427ygySag" name="owningPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_Qb1Fu8cBEdyrC427ygySag" association="_Qb-2fccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5uMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5uccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2b8cBEdyrC427ygySag" name="A_importedMember_namespace" memberEnd="_QbYZXccBEdyrC427ygySag _Qb-2cMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2cMcBEdyrC427ygySag" type="_ZiwkoGwLEdq7X4sGURiZYA" association="_Qb-2b8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5uscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5u8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2UMcBEdyrC427ygySag" name="A_opposite_property" memberEnd="_QbrUEMcBEdyrC427ygySag _Qb-2UccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2UccBEdyrC427ygySag" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Qb-2UMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5vMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5vccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2TMcBEdyrC427ygySag" name="A_subsettedProperty_property" memberEnd="_QbiK2McBEdyrC427ygySag _Qb-2TccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2TccBEdyrC427ygySag" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Qb-2TMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5vscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5v8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2gscBEdyrC427ygySag" name="A_memberEnd_association" memberEnd="_QbiKgscBEdyrC427ygySag _QbrUGMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2gccBEdyrC427ygySag" name="A_ownedType_package" memberEnd="_Qb1FXMcBEdyrC427ygySag _Qb1FnscBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2g8cBEdyrC427ygySag" name="A_nestedPackage_nestingPackage" memberEnd="_Qb1FYMcBEdyrC427ygySag _Qb1FZMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2oscBEdyrC427ygySag" name="A_redefinedElement_redefinableElement" memberEnd="_QbiKLccBEdyrC427ygySag _Qb-2o8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2o8cBEdyrC427ygySag" type="_QbiKIMcBEdyrC427ygySag" association="_Qb-2oscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5wMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5wccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2nscBEdyrC427ygySag" name="A_redefinitionContext_redefinableElement" memberEnd="_QbiKKccBEdyrC427ygySag _Qb-2n8cBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2n8cBEdyrC427ygySag" type="_QbiKIMcBEdyrC427ygySag" association="_Qb-2nscBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5wscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5w8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2r8cBEdyrC427ygySag" name="A_general_classifier" memberEnd="_QbOoKscBEdyrC427ygySag _Qb-2sMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2sMcBEdyrC427ygySag" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Qb-2r8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5xMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5xccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2VMcBEdyrC427ygySag" name="A_superClass_class" memberEnd="_QbiKl8cBEdyrC427ygySag _Qb-2VccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2VccBEdyrC427ygySag" type="_00owUGvdEdq4DLWZOhbdEA" association="_Qb-2VMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5xscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5x8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-20ccBEdyrC427ygySag" name="A_bodyCondition_bodyContext" memberEnd="_QbrUtscBEdyrC427ygySag _Qb-20scBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-20scBEdyrC427ygySag" name="bodyContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_QbrUbscBEdyrC427ygySag" association="_Qb-20ccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5yMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5yccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2hMcBEdyrC427ygySag" name="A_type_operation" memberEnd="_QbrUqMcBEdyrC427ygySag _Qb-2hccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2hccBEdyrC427ygySag" type="_M4X2IGveEdq4DLWZOhbdEA" association="_Qb-2hMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5yscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5y8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2wMcBEdyrC427ygySag" name="A_ownedParameter_operation" memberEnd="_QbrUrMcBEdyrC427ygySag _Qb1FIMcBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2uMcBEdyrC427ygySag" name="A_operand_expression" memberEnd="_Qb-2E8cBEdyrC427ygySag _Qb-2uccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2uccBEdyrC427ygySag" name="expression" type="_Qb-2EMcBEdyrC427ygySag" subsettedProperty="_QbOokscBEdyrC427ygySag" association="_Qb-2uMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5zMcBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5zccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2X8cBEdyrC427ygySag" name="A_raisedException_operation" memberEnd="_QbrUoMcBEdyrC427ygySag _Qb-2YMcBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2YMcBEdyrC427ygySag" type="_M4X2IGveEdq4DLWZOhbdEA" association="_Qb-2X8cBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD5zscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD5z8cBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_Qb-2vMcBEdyrC427ygySag" name="A_navigableOwnedEnd_association" memberEnd="_QbiKhscBEdyrC427ygySag _Qb-2vccBEdyrC427ygySag">
<ownedEnd xmi:id="_Qb-2vccBEdyrC427ygySag" type="_AwvxoGwNEdq7X4sGURiZYA" association="_Qb-2vMcBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeD50McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeD50ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ChRfcGveEdq4DLWZOhbdEA" name="OpaqueExpression">
<ownedComment xmi:id="_QbrUcccBEdyrC427ygySag" annotatedElement="_ChRfcGveEdq4DLWZOhbdEA">
<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="_QeNq6McBEdyrC427ygySag" annotatedElement="_ChRfcGveEdq4DLWZOhbdEA">
<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="_QbrUcscBEdyrC427ygySag" name="language_body_size" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QbrUc8cBEdyrC427ygySag" annotatedElement="_QbrUcscBEdyrC427ygySag">
<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="_QcksB8cBEdyrC427ygySag">
<language>OCL</language>
<body>language->notEmpty() implies (body->size() = language->size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeNq6ccBEdyrC427ygySag" name="only_return_result_parameters" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QeNq6scBEdyrC427ygySag" annotatedElement="_QeNq6ccBEdyrC427ygySag">
<body>The behavior may only have return result parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QeNq68cBEdyrC427ygySag">
<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="_QeNq7McBEdyrC427ygySag" name="one_return_result_parameter" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QeNq7ccBEdyrC427ygySag" annotatedElement="_QeNq7McBEdyrC427ygySag">
<body>The behavior must have exactly one return result parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QeNq7scBEdyrC427ygySag">
<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="_QbrUdccBEdyrC427ygySag" general="_QbiKT8cBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_EOZfkC4xEduBJv9HKGdiyg" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="_QbrUdscBEdyrC427ygySag" annotatedElement="_EOZfkC4xEduBJv9HKGdiyg">
<body>The text of the expression, possibly in multiple languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcksCMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcksCccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbrUeccBEdyrC427ygySag" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="_QbrUescBEdyrC427ygySag" annotatedElement="_QbrUeccBEdyrC427ygySag">
<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="_QcksCscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcksC8cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeNq78cBEdyrC427ygySag" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_QeXb2scBEdyrC427ygySag">
<ownedComment xmi:id="_QeNq8McBEdyrC427ygySag" annotatedElement="_QeNq78cBEdyrC427ygySag">
<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="_QeNq8ccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeNq8scBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeNq88cBEdyrC427ygySag" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_QeXb3scBEdyrC427ygySag">
<ownedComment xmi:id="_QeNq9McBEdyrC427ygySag" annotatedElement="_QeNq88cBEdyrC427ygySag">
<body>Specifies the behavior of the opaque expression.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeNq9ccBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeNq9scBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_mv9LcFYiEdqB6vblk3tuMA" name="getResult" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_vXTbwFYiEdqB6vblk3tuMA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JhNkVYiEdqB6vblk3tuMA" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0JhNkFYiEdqB6vblk3tuMA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_qQchgGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_sRo9MGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcksDMcBEdyrC427ygySag" name="value" isQuery="true" precondition="_QcksDscBEdyrC427ygySag" bodyCondition="_QcksEMcBEdyrC427ygySag">
<ownedComment xmi:id="_QcksDccBEdyrC427ygySag" annotatedElement="_QcksDMcBEdyrC427ygySag">
<body>The query value() gives an integer value for an expression intended to produce one.</body>
</ownedComment>
<ownedRule xmi:id="_QcksDscBEdyrC427ygySag" constrainedElement="_QcksDMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksD8cBEdyrC427ygySag">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcksEMcBEdyrC427ygySag" name="spec" constrainedElement="_QcksDMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksEccBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcksEscBEdyrC427ygySag" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcksE8cBEdyrC427ygySag" name="isIntegral" isQuery="true" bodyCondition="_QcksFccBEdyrC427ygySag">
<ownedComment xmi:id="_QcksFMcBEdyrC427ygySag" annotatedElement="_QcksE8cBEdyrC427ygySag">
<body>The query isIntegral() tells whether an expression is intended to produce an integer.</body>
</ownedComment>
<ownedRule xmi:id="_QcksFccBEdyrC427ygySag" name="spec" constrainedElement="_QcksE8cBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksFscBEdyrC427ygySag">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcksF8cBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcksGMcBEdyrC427ygySag" name="isPositive" isQuery="true" precondition="_QcksGscBEdyrC427ygySag" bodyCondition="_QcksHMcBEdyrC427ygySag">
<ownedComment xmi:id="_QcksGccBEdyrC427ygySag" annotatedElement="_QcksGMcBEdyrC427ygySag">
<body>The query isPositive() tells whether an integer expression has a positive value.</body>
</ownedComment>
<ownedRule xmi:id="_QcksGscBEdyrC427ygySag" constrainedElement="_QcksGMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksG8cBEdyrC427ygySag">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcksHMcBEdyrC427ygySag" name="spec" constrainedElement="_QcksGMcBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksHccBEdyrC427ygySag">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcksHscBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_QcksH8cBEdyrC427ygySag" name="isNonNegative" isQuery="true" precondition="_QcksIccBEdyrC427ygySag" bodyCondition="_QcksI8cBEdyrC427ygySag">
<ownedComment xmi:id="_QcksIMcBEdyrC427ygySag" annotatedElement="_QcksH8cBEdyrC427ygySag">
<body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
</ownedComment>
<ownedRule xmi:id="_QcksIccBEdyrC427ygySag" constrainedElement="_QcksH8cBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksIscBEdyrC427ygySag">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcksI8cBEdyrC427ygySag" name="spec" constrainedElement="_QcksH8cBEdyrC427ygySag">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcksJMcBEdyrC427ygySag">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QcksJccBEdyrC427ygySag" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ldWYsC7qEdutFcse1QllAQ" name="OpaqueBehavior">
<ownedComment xmi:id="_QeXbt8cBEdyrC427ygySag" annotatedElement="_ldWYsC7qEdutFcse1QllAQ">
<body>An behavior with implementation-specific semantics.</body>
</ownedComment>
<generalization xmi:id="_QeXbuMcBEdyrC427ygySag" general="_TUPtYGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_ldWYsS7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="_QeXbuccBEdyrC427ygySag" annotatedElement="_ldWYsS7qEdutFcse1QllAQ">
<body>Specifies the behavior in one or more languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXbuscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXbu8cBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXbvMcBEdyrC427ygySag" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="_QeXbvccBEdyrC427ygySag" annotatedElement="_QeXbvMcBEdyrC427ygySag">
<body>Languages the body strings use in the same order as the body strings.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXbvscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXbv8cBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QeXbwMcBEdyrC427ygySag" name="FunctionBehavior">
<ownedComment xmi:id="_QeXbwccBEdyrC427ygySag" annotatedElement="_QeXbwMcBEdyrC427ygySag">
<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="_QeXbwscBEdyrC427ygySag" name="one_output_parameter" constrainedElement="_QeXbwMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeXbw8cBEdyrC427ygySag" annotatedElement="_QeXbwscBEdyrC427ygySag">
<body>A function behavior has at least one output parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QeXbxMcBEdyrC427ygySag">
<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="_QeXbxccBEdyrC427ygySag" name="types_of_parameters" constrainedElement="_QeXbwMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeXbxscBEdyrC427ygySag" annotatedElement="_QeXbxccBEdyrC427ygySag">
<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="_QeXbx8cBEdyrC427ygySag">
<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="_QeXbyMcBEdyrC427ygySag" general="_ldWYsC7qEdutFcse1QllAQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXbyccBEdyrC427ygySag" name="A_behavioredClassifier_ownedBehavior" memberEnd="_QeXbyscBEdyrC427ygySag _QeNq4McBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXbyscBEdyrC427ygySag" type="_iY7sMGvsEdqG6fBIPwe-mw" association="_QeXbyccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXby8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXbzMcBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXbzccBEdyrC427ygySag" name="A_classifierBehavior_behavioredClassifier" memberEnd="_QeNq5McBEdyrC427ygySag _QeXbzscBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXbzscBEdyrC427ygySag" type="_iY7sMGvsEdqG6fBIPwe-mw" association="_QeXbzccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXbz8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb0McBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb0ccBEdyrC427ygySag" name="A_redefinedBehavior_behavior" memberEnd="_QeNqw8cBEdyrC427ygySag _QeXb0scBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb0scBEdyrC427ygySag" type="_TUPtYGveEdq4DLWZOhbdEA" association="_QeXb0ccBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb08cBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb1McBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb1ccBEdyrC427ygySag" name="A_method_specification" memberEnd="_QeXbs8cBEdyrC427ygySag _QeNqx8cBEdyrC427ygySag"/>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb1scBEdyrC427ygySag" name="A_behavior_ownedParameter" memberEnd="_QeXb18cBEdyrC427ygySag _QeNqy8cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb18cBEdyrC427ygySag" type="_TUPtYGveEdq4DLWZOhbdEA" association="_QeXb1scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb2McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb2ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb2scBEdyrC427ygySag" name="A_result_opaqueExpression" memberEnd="_QeNq78cBEdyrC427ygySag _QeXb28cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb28cBEdyrC427ygySag" type="_ChRfcGveEdq4DLWZOhbdEA" association="_QeXb2scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb3McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb3ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb3scBEdyrC427ygySag" name="A_behavior_opaqueExpression" memberEnd="_QeNq88cBEdyrC427ygySag _QeXb38cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb38cBEdyrC427ygySag" type="_ChRfcGveEdq4DLWZOhbdEA" association="_QeXb3scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb4McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb4ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb4scBEdyrC427ygySag" name="A_context_behavior" memberEnd="_QeNqz8cBEdyrC427ygySag _QeXb48cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb48cBEdyrC427ygySag" type="_TUPtYGveEdq4DLWZOhbdEA" association="_QeXb4scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb5McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb5ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb5scBEdyrC427ygySag" name="A_precondition_behavior" memberEnd="_QeNq08cBEdyrC427ygySag _QeXb58cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb58cBEdyrC427ygySag" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_QbrUbscBEdyrC427ygySag" association="_QeXb5scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb6McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb6ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_QeXb6scBEdyrC427ygySag" name="A_postcondition_behavior" memberEnd="_QeNq18cBEdyrC427ygySag _QeXb68cBEdyrC427ygySag">
<ownedEnd xmi:id="_QeXb68cBEdyrC427ygySag" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_QbrUbscBEdyrC427ygySag" association="_QeXb6scBEdyrC427ygySag">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb7McBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb7ccBEdyrC427ygySag"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_OUnikC7qEdutFcse1QllAQ" name="OpaqueAction">
<ownedComment xmi:id="_QeXb8ccBEdyrC427ygySag" annotatedElement="_OUnikC7qEdutFcse1QllAQ">
<body>An action with implementation-specific semantics.</body>
</ownedComment>
<generalization xmi:id="_QeXb8scBEdyrC427ygySag" general="_QeglsMcBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_c_GaAC7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
<ownedComment xmi:id="_QeXb88cBEdyrC427ygySag" annotatedElement="_c_GaAC7qEdutFcse1QllAQ">
<body>Specifies the action in one or more languages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb9McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb9ccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXb9scBEdyrC427ygySag" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
<ownedComment xmi:id="_QeXb98cBEdyrC427ygySag" annotatedElement="_QeXb9scBEdyrC427ygySag">
<body>Languages the body strings use, in the same order as the body strings</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb-McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb-ccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXb-scBEdyrC427ygySag" name="inputValue" type="_QeXcE8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_Qeglt8cBEdyrC427ygySag" association="_Qegl-McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXb-8cBEdyrC427ygySag" annotatedElement="_QeXb-scBEdyrC427ygySag">
<body>Provides input to the action.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXb_McBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXb_ccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXb_scBEdyrC427ygySag" name="outputValue" type="_QeXcEMcBEdyrC427ygySag" aggregation="composite" subsettedProperty="_Qegls8cBEdyrC427ygySag" association="_Qegl_McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXb_8cBEdyrC427ygySag" annotatedElement="_QeXb_scBEdyrC427ygySag">
<body>Takes output from the action.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXcAMcBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcAccBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QeXcHccBEdyrC427ygySag" name="CallAction" isAbstract="true">
<ownedComment xmi:id="_QeXcHscBEdyrC427ygySag" annotatedElement="_QeXcHccBEdyrC427ygySag">
<body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
</ownedComment>
<ownedRule xmi:id="_QeXcH8cBEdyrC427ygySag" name="synchronous_call" constrainedElement="_QeXcHccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcIMcBEdyrC427ygySag" annotatedElement="_QeXcH8cBEdyrC427ygySag">
<body>Only synchronous call actions can have result pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QeXcIccBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcIscBEdyrC427ygySag" name="number_and_order" constrainedElement="_QeXcHccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcI8cBEdyrC427ygySag" annotatedElement="_QeXcIscBEdyrC427ygySag">
<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="_QeXcJMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcJccBEdyrC427ygySag" name="type_ordering_multiplicity" constrainedElement="_QeXcHccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcJscBEdyrC427ygySag" annotatedElement="_QeXcJccBEdyrC427ygySag">
<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="_QeXcJ8cBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="_QeXcKMcBEdyrC427ygySag" general="_QeXcFscBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QeXcKccBEdyrC427ygySag" name="isSynchronous" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QeXcKscBEdyrC427ygySag" annotatedElement="_QeXcKccBEdyrC427ygySag">
<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="_QeXcK8cBEdyrC427ygySag" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXcLMcBEdyrC427ygySag" name="result" type="_QeXcEMcBEdyrC427ygySag" isOrdered="true" aggregation="composite" subsettedProperty="_Qegls8cBEdyrC427ygySag" association="_Qegl4McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcLccBEdyrC427ygySag" annotatedElement="_QeXcLMcBEdyrC427ygySag">
<body>A list of output pins where the results of performing the invocation are placed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXcLscBEdyrC427ygySag" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcL8cBEdyrC427ygySag"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QeXcMMcBEdyrC427ygySag" name="SendSignalAction">
<ownedComment xmi:id="_QeXcMccBEdyrC427ygySag" annotatedElement="_QeXcMMcBEdyrC427ygySag">
<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="_QeXcMscBEdyrC427ygySag" name="number_order" constrainedElement="_QeXcMMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcM8cBEdyrC427ygySag" annotatedElement="_QeXcMscBEdyrC427ygySag">
<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="_QeXcNMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcNccBEdyrC427ygySag" name="type_ordering_multiplicity" constrainedElement="_QeXcMMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcNscBEdyrC427ygySag" annotatedElement="_QeXcNccBEdyrC427ygySag">
<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="_QeXcN8cBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="_QeXcOMcBEdyrC427ygySag" general="_QeXcFscBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QeXcOccBEdyrC427ygySag" name="target" type="_QeXcE8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_Qeglt8cBEdyrC427ygySag" association="_Qegl2McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcOscBEdyrC427ygySag" annotatedElement="_QeXcOccBEdyrC427ygySag">
<body>The target object to which the signal is sent.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXcO8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcPMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXcPccBEdyrC427ygySag" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_Qegl3McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcPscBEdyrC427ygySag" annotatedElement="_QeXcPccBEdyrC427ygySag">
<body>The type of signal transmitted to the target object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXcP8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcQMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QeXcQccBEdyrC427ygySag" name="CallOperationAction">
<ownedComment xmi:id="_QeXcQscBEdyrC427ygySag" annotatedElement="_QeXcQccBEdyrC427ygySag">
<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="_QeXcQ8cBEdyrC427ygySag" name="argument_pin_equal_parameter" constrainedElement="_QeXcQccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcRMcBEdyrC427ygySag" annotatedElement="_QeXcQ8cBEdyrC427ygySag">
<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="_QeXcRccBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcRscBEdyrC427ygySag" name="result_pin_equal_parameter" constrainedElement="_QeXcQccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcR8cBEdyrC427ygySag" annotatedElement="_QeXcRscBEdyrC427ygySag">
<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="_QeXcSMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcSccBEdyrC427ygySag" name="type_ordering_multiplicity" constrainedElement="_QeXcQccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcSscBEdyrC427ygySag" annotatedElement="_QeXcSccBEdyrC427ygySag">
<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="_QeXcS8cBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeXcTMcBEdyrC427ygySag" name="type_target_pin" constrainedElement="_QeXcQccBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcTccBEdyrC427ygySag" annotatedElement="_QeXcTMcBEdyrC427ygySag">
<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="_QeXcTscBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="_QeXcT8cBEdyrC427ygySag" general="_QeXcHccBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QeXcUMcBEdyrC427ygySag" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_Qegl0McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcUccBEdyrC427ygySag" annotatedElement="_QeXcUMcBEdyrC427ygySag">
<body>The operation to be invoked by the action execution.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeXcUscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcU8cBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QeXcVMcBEdyrC427ygySag" name="target" type="_QeXcE8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_Qeglt8cBEdyrC427ygySag" association="_Qegl1McBEdyrC427ygySag">
<ownedComment xmi:id="_QeXcVccBEdyrC427ygySag" annotatedElement="_QeXcVMcBEdyrC427ygySag">
<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="_QeXcVscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QeXcV8cBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_QegloMcBEdyrC427ygySag" name="CallBehaviorAction">
<ownedComment xmi:id="_QegloccBEdyrC427ygySag" annotatedElement="_QegloMcBEdyrC427ygySag">
<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="_QegloscBEdyrC427ygySag" name="argument_pin_equal_parameter" constrainedElement="_QegloMcBEdyrC427ygySag">
<ownedComment xmi:id="_Qeglo8cBEdyrC427ygySag" annotatedElement="_QegloscBEdyrC427ygySag">
<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="_QeglpMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeglpccBEdyrC427ygySag" name="result_pin_equal_parameter" constrainedElement="_QegloMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeglpscBEdyrC427ygySag" annotatedElement="_QeglpccBEdyrC427ygySag">
<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="_Qeglp8cBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QeglqMcBEdyrC427ygySag" name="type_ordering_multiplicity" constrainedElement="_QegloMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeglqccBEdyrC427ygySag" annotatedElement="_QeglqMcBEdyrC427ygySag">
<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="_QeglqscBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="_Qeglq8cBEdyrC427ygySag" general="_QeXcHccBEdyrC427ygySag"/>
<ownedAttribute xmi:id="_QeglrMcBEdyrC427ygySag" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_QeglzMcBEdyrC427ygySag">
<ownedComment xmi:id="_QeglrccBEdyrC427ygySag" annotatedElement="_QeglrMcBEdyrC427ygySag">
<body>The invoked behavior. It must be capable of accepting and returning control.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeglrscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qeglr8cBEdyrC427ygySag" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Gjgl0GveEdq4DLWZOhbdEA" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:id="_QbOorccBEdyrC427ygySag" annotatedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<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="_QbOorscBEdyrC427ygySag" name="upper_gt_0" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QbOor8cBEdyrC427ygySag" annotatedElement="_QbOorscBEdyrC427ygySag">
<body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudSMcBEdyrC427ygySag">
<language>OCL</language>
<body>upperBound()->notEmpty() implies upperBound() > 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbYZI8cBEdyrC427ygySag" name="lower_ge_0" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QbYZJMcBEdyrC427ygySag" annotatedElement="_QbYZI8cBEdyrC427ygySag">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudSccBEdyrC427ygySag">
<language>OCL</language>
<body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QbYZIMcBEdyrC427ygySag" name="upper_ge_lower" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QbYZIccBEdyrC427ygySag" annotatedElement="_QbYZIMcBEdyrC427ygySag">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_QcudSscBEdyrC427ygySag">
<language>OCL</language>
<body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcudS8cBEdyrC427ygySag" name="value_specification_no_side_effects" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QcudTMcBEdyrC427ygySag" annotatedElement="_QcudS8cBEdyrC427ygySag">
<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="_QcudTccBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_QcudTscBEdyrC427ygySag" name="value_specification_constant" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_QcudT8cBEdyrC427ygySag" annotatedElement="_QcudTscBEdyrC427ygySag">
<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="_QcudUMcBEdyrC427ygySag">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:id="_QbYZJscBEdyrC427ygySag" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_QbYZJ8cBEdyrC427ygySag" name="isOrdered" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QbYZKMcBEdyrC427ygySag" annotatedElement="_QbYZJ8cBEdyrC427ygySag">
<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="_QcudUccBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbYZKscBEdyrC427ygySag" name="isUnique" type="_UdivYGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_QbYZK8cBEdyrC427ygySag" annotatedElement="_QbYZKscBEdyrC427ygySag">
<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="_QcudUscBEdyrC427ygySag" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbYZMscBEdyrC427ygySag" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" isDerived="true">
<ownedComment xmi:id="_QbYZM8cBEdyrC427ygySag" annotatedElement="_QbYZMscBEdyrC427ygySag">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudU8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudVMcBEdyrC427ygySag"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudVccBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QbYZLccBEdyrC427ygySag" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" isDerived="true">
<ownedComment xmi:id="_QbYZLscBEdyrC427ygySag" annotatedElement="_QbYZLccBEdyrC427ygySag">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudVscBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudV8cBEdyrC427ygySag"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_QcudWMcBEdyrC427ygySag" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QcudWccBEdyrC427ygySag" name="upperValue" type="_QbiKT8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_QbOojscBEdyrC427ygySag" association="_Qd6wBscBEdyrC427ygySag">
<ownedComment xmi:id="_QcudWscBEdyrC427ygySag" annotatedElement="_QcudWccBEdyrC427ygySag">
<body>The specification of the upper bound for this multiplicity.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudW8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudXMcBEdyrC427ygySag"/>
</ownedAttribute>
<ownedAttribute xmi:id="_QcudXccBEdyrC427ygySag" name="lowerValue" type="_QbiKT8cBEdyrC427ygySag" aggregation="composite" subsettedProperty="_QbOojscBEdyrC427ygySag" association="_Qd6wCscBEdyrC427ygySag">
<ownedComment xmi:id="_QcudXscBEdyrC427ygySag" annotatedElement="_QcudXccBEdyrC427ygySag">
<body>The specification of the lower bound for this multiplicity.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QcudX8cBEdyrC427ygySag" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QcudYMcBEdyrC427ygySag"/>
</ownedAttribute>
<ownedOperation xmi:id="_qtCaIFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
<ownedParameter xmi:id="_scWboFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
</ownedOperation>