blob: 0878de1645bd062c858b43db8307c12f78979fb2 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<pivot:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pivot="http://www.eclipse.org/ocl/2015/Pivot"
xsi:schemaLocation="http://www.eclipse.org/ocl/2015/Pivot java://org.eclipse.ocl.pivot.PivotPackage" xmi:id="AAAAA" externalURI="platform:/resource/org.eclipse.ocl.pivot/model/OCL-2.5.oclstdlib" name="OCL-2.5.oclstdlib" xmiidVersion="1">
<ownedPackages xsi:type="pivot:Library" xmi:id="S673I" URI="http://www.eclipse.org/ocl/2015/Library" name="ocl" nsPrefix="ocl">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="PackageRole">
<values>StandardLibrary</values>
</ownedDetails>
<ownedDetails name="ClassGroup_Collection">
<values>This sub clause defines the collection types and their operations. As defined in this sub clause, each collection type is actually a template type with one parameter. ‘T’ denotes the parameter. A concrete collection type is created by substituting a type for the T. So Set (Integer) and Bag (Person) are collection types.</values>
</ownedDetails>
<ownedDetails name="ClassGroup_PrimitiveTypes">
<values>The primitive types defined in the OCL standard library are UnlimitedNatural, Integer, Real, String, and Boolean. They are all instances of the metaclass Primitive from the UML core package.</values>
</ownedDetails>
</ownedAnnotations>
<ownedClasses xsi:type="pivot:BagType" xmi:id="yEcHF" instanceClassName="org.eclipse.ocl.pivot.values.Bag" name="Bag" superClasses="#Z+X23">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Collection</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="A bag is a collection with duplicates allowed. That is, one object can be an element of a bag many times.&#xA;There is no ordering defined on the elements in a bag.&#xA;Bag is itself an instance of the metatype BagType.&#xA;"/>
<ownedOperations xmi:id="qpz,+" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] unless oclText[self] and s contain the same elements.&#xA;"/>
<ownedParameters xmi:id="A3xlm" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="lMz,+" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="True if oclText[self] and bag contain the same elements, the same number of times.&#xA;"/>
<ownedParameters xmi:id="P+hem" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="70dcd" implementationClass="org.eclipse.ocl.pivot.library.iterator.ClosureIteration"
name="closure" type="#dkz0o">
<ownedComments body="The closure of applying body transitively to every distinct element of the source collection.&#xA;"/>
<ownedIterators xmi:id="YPiDW" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="BhAj2" isRequired="false" name="lambda" type="#xv1ql"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="qQrYi" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectIteration"
name="collect" type="#tNfy1">
<ownedIterators xmi:id="Ls1lK" isRequired="false" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="09TFr" isRequired="false" name="lambda" type="#8QuxN"/>
<ownedSignature>
<ownedParameters xmi:id="ehjJ6" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="BnvOK" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectNestedIteration"
name="collectNested" type="#kj8x0">
<ownedComments body="The Bag of elements which results from applying body to every member of the source nonordered collection.&#xA;"/>
<ownedIterators xmi:id="GZOJ0" isRequired="false" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="vqsoU" isRequired="false" name="lambda" type="#dKdmN"/>
<ownedSignature>
<ownedParameters xmi:id="tKoqz" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="X8DTO" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludingOperation" name="excluding"
type="#yEcHF">
<ownedComments body="The bag containing all elements of oclText[self] apart from all occurrences of object.&#xA;"/>
<ownedParameters xmi:id="lI6rS" isRequired="false" name="object" type="#k2OA6"/>
</ownedOperations>
<ownedOperations xmi:id="4,XWD" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludingAllOperation" name="excludingAll"
type="#yEcHF">
<ownedComments body="The bag containing all elements of oclText[self] apart from all occurrences of all objects.&#xA;"/>
<ownedParameters xmi:id="XVonC" name="objects" type="#Z+X23"/>
</ownedOperations>
<ownedOperations xmi:id="jS7X7" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionFlattenOperation" name="flatten"
type="#OLliK">
<ownedComments body="Redefines the Collection operation. If the element type is not a collection type, this results in the same bag as oclText[self].&#xA;If the element type is a collection type, the result is the bag containing all the elements of all the recursively flattened elements of oclText[self].&#xA;"/>
<ownedSignature>
<ownedParameters xmi:id="n6+jq" name="T2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="lpjkQ" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludingOperation" name="including"
type="#yEcHF">
<ownedComments body="The bag containing all elements of oclText[self] plus object.&#xA;"/>
<ownedParameters xmi:id="7guyj" isRequired="false" name="object" type="#k2OA6"/>
</ownedOperations>
<ownedOperations xmi:id="qnRMR" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludingAllOperation" name="includingAll"
type="#yEcHF">
<ownedComments body="The bag containing all elements of oclText[self] and objects.&#xA;"/>
<ownedParameters xmi:id="B+3f3" name="objects" type="#Z+X23"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="faMFy" implementationClass="org.eclipse.ocl.pivot.library.iterator.RejectIteration"
name="reject" type="#yEcHF">
<ownedComments body="The sub-bag of the source bag for which body is oclText[false].&#xA;&#xA;oclCode[self->reject(iterator | body) = self->select(iterator | not body)].&#xA;"/>
<ownedIterators xmi:id="sevyj" isRequired="false" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="VwNSE" name="lambda" type="#TVxB,"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="8foyz" implementationClass="org.eclipse.ocl.pivot.library.iterator.SelectIteration"
name="select" type="#yEcHF">
<ownedComments body="The sub-bag of the source bag for which body is oclText[true].&#xA;&#xA;oclCode[self->select(iterator | body) =&#xA;self->iterate(iterator; result : Bag(T) = Bag{} |&#xA;if body then result->including(iterator)&#xA;else result&#xA;endif)]&#xA;"/>
<ownedIterators xmi:id="Veyr1" isRequired="false" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="+vQLW" name="lambda" type="#TVxB,"/>
</ownedOperations>
<ownedOperations xmi:id="n+noG" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSelectByKindOperation" name="selectByKind"
type="#kYj3+">
<ownedComments body="The bag containing all elements of oclText[self] whose type conforms to oclText[type].&#xA;"/>
<ownedParameters xmi:id="wxQ5," isTypeof="true" name="type" type="#tHLI9"/>
<ownedSignature>
<ownedParameters xmi:id="tHLI9" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="NNtpG" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSelectByTypeOperation" name="selectByType"
type="#KCu19">
<ownedComments body="The bag containing all elements of oclText[self] whose type is oclText[type].&#xA;"/>
<ownedParameters xmi:id="+lqJR" isTypeof="true" name="type" type="#DLB0P"/>
<ownedSignature>
<ownedParameters xmi:id="DLB0P" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="0LL4M" implementationClass="org.eclipse.ocl.pivot.library.iterator.SortedByIteration"
name="sortedBy" type="#8CNH9">
<ownedComments body="Results in the Sequence containing all elements of the source collection.&#xA;The element for which body has the lowest value comes first, and so on.&#xA;The type of the body expression must have the &lt; operation defined.&#xA;The &lt; operation must return a Boolean value and must be transitive (i.e., if a &lt; b and b &lt; c then a &lt; c).&#xA;"/>
<ownedIterators xmi:id="taIGD" isRequired="false" name="i" type="#k2OA6"/>
<ownedParameters xmi:id="Wsmlj" isRequired="false" name="lambda" type="#H9NqH"/>
</ownedOperations>
<ownedSignature>
<ownedParameters xmi:id="k2OA6" name="T"/>
</ownedSignature>
</ownedClasses>
<ownedClasses xsi:type="pivot:BooleanType" xmi:id="XEMMs" instanceClassName="java.lang.Boolean" name="Boolean" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Primitive</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The standard type Boolean represents the common true/false values.&#xA;Boolean is itself an instance of the metatype PrimitiveType (from UML).&#xA;"/>
<ownedOperations xmi:id="76cxV" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="Returns oclText[true] if the logical value of oclText[self] is the not same as the numeric value of object2, oclText[false] otherwise."/>
<ownedParameters xmi:id="NTKl8" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="2dcxV" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="Returns oclText[true] if the logical value of oclText[self] is the same as the numeric value of object2, oclText[false] otherwise."/>
<ownedParameters xmi:id="ca6d8" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="kFkCu" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Returns oclText[Set{false, true}].&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="nCjNu" name="dummy" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="8sfYU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanAndOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="and" precedence="#VT87C" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self.oclIsInvalid() then&#xA;&#x9;&#x9;&#x9;&#x9;if b.oclIsInvalid() then self&#xA;&#x9;&#x9;&#x9;&#x9;elseif b = false then false&#xA;&#x9;&#x9;&#x9;&#x9;else self&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9; elseif self = false then false&#xA;&#x9;&#x9;&#x9; elseif b.oclIsInvalid() then b&#xA;&#x9;&#x9;&#x9; elseif b = false then false&#xA;&#x9;&#x9;&#x9; elseif self = null then null&#xA;&#x9;&#x9;&#x9; elseif b = null then null&#xA;&#x9;&#x9;&#x9; else true&#xA;&#x9;&#x9;&#x9; endif"
isRequired="false" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Ing82" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Ing82" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Ing82" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#jXcmC" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:VariableExp" name="self" referredVariable="#Ing82" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" name="self" referredVariable="#Ing82" type="#XEMMs"/>
</ownedThen>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="Ing82" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="jXcmC" isRequired="false" name="b" representedParameter="#Z7lXU"
type="#XEMMs"/>
</bodyExpression>
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Primitive</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="oclText[false] if either oclText[self] or oclText[b] is oclText[false].&#xA;Otherwise oclText[invalid] if either oclText[self] or oclText[b] is oclText[invalid] .&#xA;Otherwise oclText[null] if either oclText[self] or oclText[b] is oclText[null].&#xA;Otherwise oclText[true].&#xA;"/>
<ownedParameters xmi:id="Z7lXU" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="gKkjU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanAndOperation2" isValidating="true"
name="and2" precedence="#VT87C" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self = false then false&#xA;&#x9;&#x9;&#x9; elseif b = false then false&#xA;&#x9;&#x9;&#x9; else true&#xA;&#x9;&#x9;&#x9; endif"
type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#MxyDI" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="b" referredVariable="#nhutT" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="MxyDI" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="nhutT" name="b" representedParameter="#tix9E" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[false] if either oclText[self] or oclText[b] is oclText[false].&#xA;Otherwise oclText[true].&#xA;"/>
<ownedParameters xmi:id="tix9E" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="cIALH" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanImpliesOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="implies" precedence="#1Odhg" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self.oclIsInvalid() then&#xA;&#x9;&#x9;&#x9;&#x9;if b.oclIsInvalid() then self&#xA;&#x9;&#x9;&#x9;&#x9;elseif b = true then true&#xA;&#x9;&#x9;&#x9;&#x9;else self&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9; elseif self = false then true&#xA;&#x9;&#x9;&#x9; elseif b.oclIsInvalid() then b&#xA;&#x9;&#x9;&#x9; elseif b = true then true&#xA;&#x9;&#x9;&#x9; elseif self = null then null&#xA;&#x9;&#x9;&#x9; elseif b = null then b&#xA;&#x9;&#x9;&#x9; else false&#xA;&#x9;&#x9;&#x9; endif"
isRequired="false" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#oe0Z9" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#oe0Z9" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#oe0Z9" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedThen xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#DPwDJ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:VariableExp" name="self" referredVariable="#oe0Z9" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" name="self" referredVariable="#oe0Z9" type="#XEMMs"/>
</ownedThen>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="oe0Z9" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="DPwDJ" isRequired="false" name="b" representedParameter="#5o8Gk"
type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] is oclText[false], or if oclText[b] is oclText[true].&#xA;Otherwise oclText[invalid] if either oclText[self] or oclText[b] is oclText[invalid].&#xA;Otherwise oclText[null] if either oclText[self] or oclText[b] is oclText[null].&#xA;Otherwise oclText[false].&#xA;"/>
<ownedParameters xmi:id="5o8Gk" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="AfRB7" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanImpliesOperation2" isValidating="true"
name="implies2" precedence="#1Odhg" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self = false then true&#xA;&#x9;&#x9;&#x9; elseif b = true then true&#xA;&#x9;&#x9;&#x9; else false&#xA;&#x9;&#x9;&#x9; endif"
type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#spaQQ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="b" referredVariable="#HaW6b" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="spaQQ" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="HaW6b" name="b" representedParameter="#Nlx5s" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] is oclText[false], or if oclText[b] is oclText[true].&#xA;Otherwise oclText[false].&#xA;"/>
<ownedParameters xmi:id="Nlx5s" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="DH5kA" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanNotOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="not" precedence="#tgQwH" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self.oclIsInvalid() then self&#xA;&#x9;&#x9;&#x9; elseif self = null then null&#xA;&#x9;&#x9;&#x9; else self = false&#xA;&#x9;&#x9;&#x9; endif"
isRequired="false" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Hy6AH" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Hy6AH" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#Hy6AH" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" name="self" referredVariable="#Hy6AH" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="Hy6AH" name="self" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] is oclText[false].&#xA;oclText[false] if oclText[self] is oclText[true].&#xA;oclText[null] if oclText[self] is oclText[null].&#xA;Otherwise oclText[invalid].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="vaZxA" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanNotOperation2" name="not2" precedence="#tgQwH"
type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self then false else true endif" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:VariableExp" name="self" referredVariable="#Tj7Dn" type="#XEMMs"/>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="Tj7Dn" name="self" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] is oclText[false].&#xA;Otherwise oclText[false].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="I9IYU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanOrOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="or" precedence="#BEt7C" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self.oclIsInvalid() then&#xA;&#x9;&#x9;&#x9;&#x9;if b.oclIsInvalid() then self&#xA;&#x9;&#x9;&#x9;&#x9;elseif b = true then true&#xA;&#x9;&#x9;&#x9;&#x9;else self&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9; elseif self = true then true&#xA;&#x9;&#x9;&#x9; elseif b.oclIsInvalid() then b&#xA;&#x9;&#x9;&#x9; elseif b = true then true&#xA;&#x9;&#x9;&#x9; elseif self = null then null&#xA;&#x9;&#x9;&#x9; elseif b = null then null&#xA;&#x9;&#x9;&#x9; else false&#xA;&#x9;&#x9;&#x9; endif"
isRequired="false" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#04BxZ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#04BxZ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#04BxZ" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#Pp9al" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:VariableExp" name="self" referredVariable="#04BxZ" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" name="self" referredVariable="#04BxZ" type="#XEMMs"/>
</ownedThen>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="04BxZ" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="Pp9al" isRequired="false" name="b" representedParameter="#1KtsO"
type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if either oclText[self] or oclText[b] is oclText[true].&#xA;Otherwise oclText[invalid] if either oclText[self] or oclText[b] is oclText[invalid].&#xA;Otherwise oclText[null] if either oclText[self] or oclText[b] is oclText[null].&#xA;Otherwise oclText[false].&#xA;"/>
<ownedParameters xmi:id="1KtsO" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="UAjYU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanOrOperation2" isValidating="true"
name="or2" precedence="#BEt7C" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self = true then true&#xA;&#x9;&#x9;&#x9; elseif b = true then true&#xA;&#x9;&#x9;&#x9; else false&#xA;&#x9;&#x9;&#x9; endif"
type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#gV6f," type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="b" referredVariable="#7F2JL" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:BooleanLiteralExp" booleanSymbol="false" type="#XEMMs"/>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:BooleanLiteralExp" booleanSymbol="true" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="gV6f," name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="7F2JL" name="b" representedParameter="#RBSMV" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if either oclText[self] or oclText[b] is oclText[true].&#xA;Otherwise oclText[false].&#xA;"/>
<ownedParameters xmi:id="RBSMV" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="clDqW" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyToStringOperation" name="toString"
type="#AlwVZ">
<ownedComments body="Converts oclText[self] to a string value.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="AHlYU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanXorOperation" isRequired="false"
name="xor" precedence="#ZtB8C" type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="if self.oclIsInvalid() then self&#xA;&#x9;&#x9;&#x9; elseif b.oclIsInvalid() then b&#xA;&#x9;&#x9;&#x9; elseif self = null then null&#xA;&#x9;&#x9;&#x9; elseif b = null then null&#xA;&#x9;&#x9;&#x9; else self &lt;> b&#xA;&#x9;&#x9;&#x9; endif"
isRequired="false" type="#XEMMs">
<ownedBody xsi:type="pivot:IfExp" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#sRLGX" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="oclIsInvalid" referredOperation="#Bz+rT" type="#XEMMs">
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#HCHwi" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#sRLGX" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:IfExp" isElseIf="true" isRequired="false" type="#XEMMs">
<ownedCondition xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
<ownedSource xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#HCHwi" type="#XEMMs"/>
</ownedCondition>
<ownedElse xsi:type="pivot:OperationCallExp" name="&lt;>" referredOperation="#76cxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#HCHwi" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#sRLGX" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="#7u3MH"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" isRequired="false" name="b" referredVariable="#HCHwi" type="#XEMMs"/>
</ownedElse>
<ownedThen xsi:type="pivot:VariableExp" name="self" referredVariable="#sRLGX" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="sRLGX" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="HCHwi" isRequired="false" name="b" representedParameter="#Nt2tV"
type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] is oclText[true] and oclText[b] is oclText[false], or if oclText[self] is oclText[false] and oclText[b] is oclText[true].&#xA;oclText[false] if oclText[self] is oclText[true] and oclText[b] is oclText[true], or if oclText[self] is oclText[false] and oclText[b] is oclText[false].&#xA;Otherwise oclText[invalid] if either oclText[self] or oclText[b] is oclText[invalid].&#xA;Otherwise oclText[null].&#xA;"/>
<ownedParameters xmi:id="Nt2tV" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="cyLmU" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanXorOperation2" name="xor2" precedence="#ZtB8C"
type="#XEMMs">
<bodyExpression xsi:type="pivot:ExpressionInOCL" body="self &lt;> b" type="#XEMMs">
<ownedBody xsi:type="pivot:OperationCallExp" name="&lt;>" referredOperation="#76cxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" name="b" referredVariable="#DJZZ4" type="#XEMMs"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#oYdvs" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="oYdvs" name="self" type="#XEMMs"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="DJZZ4" name="b" representedParameter="#5q5vu" type="#XEMMs"/>
</bodyExpression>
<ownedComments body="oclText[true] if oclText[self] &lt;> oclText[b]&#xA;Otherwise oclText[false].&#xA;"/>
<ownedParameters xmi:id="5q5vu" name="b" type="#XEMMs"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="xB4J7" name="BooleanType" superClasses="#zfDWR">
<ownedComments body="The standard type Boolean represents the common true/false values.&#xA;Boolean is itself an instance of the metatype PrimitiveType (from UML).&#xA;"/>
<ownedOperations xmi:id=",q,nx" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Returns oclText[Set{false, true}]."/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="nZ3,I" name="Class" superClasses="#zfDWR">
<ownedOperations xmi:id="dD,7n" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Return a set of all instances of the type and derived types of self."/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:CollectionType" xmi:id="IgEJU" instanceClassName="java.util.Collection" isAbstract="true" name="Collection"
superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Collection</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="Collection is the abstract supertype of all collection types in the OCL Standard Library.&#xA;Each occurrence of an object in a collection is called an element.&#xA;If an object occurs twice in a collection, there are two elements.&#xA;&#xA;This sub clause defines the properties on Collections that have identical semantics for all collection subtypes.&#xA;Some operations may be defined within the subtype as well,&#xA;which means that there is an additional postcondition or a more specialized return value.&#xA;Collection is itself an instance of the metatype CollectionType.&#xA;&#xA;The definition of several common operations is different for each subtype.&#xA;These operations are not mentioned in this sub clause.&#xA;&#xA;The semantics of the collection operations is given in the form of a postcondition that uses the IterateExp of the IteratorExp construct.&#xA;The semantics of those constructs is defined in Clause 10 (“Semantics Described using UML”).&#xA;In several cases the postcondition refers to other collection operations,&#xA;which in turn are defined in terms of the IterateExp or IteratorExp constructs.&#xA;&#xA;Well-formedness rules&#xA;&#xA;[1] A collection cannot contain oclText[invalid] values.&#xA;&#xA;context Collection&#xA;inv: self->forAll(not oclIsInvalid())"/>
<ownedOperations xmi:id="o3vBs" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="True if c is not equal to oclText[self].&#xA;"/>
<ownedParameters xmi:id="Gtcj+" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="javBs" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="True if c is a collection of the same kind as oclText[self] and contains the same elements in the same quantities and in the same order,&#xA;in the case of an ordered collection type.&#xA;"/>
<ownedParameters xmi:id="V0Mc+" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="qBJ1W" implementationClass="org.eclipse.ocl.pivot.library.iterator.AnyIteration"
isRequired="false" name="any" type="#qs59R">
<ownedComments body="Returns any element in the e[source] null-free collection for which e[body] evaluates to oclText[true].&#xA;Returns oclText[invalid] if the e[body] evaluates to oclText[invalid] for any element,&#xA;otherwise if there are one or more elements for which the e[body] is oclText[true],&#xA;an indeterminate choice of one of them is returned, otherwise the result is oclText[null].&#xA;&#xA;let source : Collection(T) = ..., body : Lambda T() : Boolean = ... in&#xA;source->any(iterator | body) = source->select(iterator | body)->asSequence()->first()&#xA;"/>
<ownedIterators xmi:id="LZss0" name="i" type="#qs59R"/>
<ownedParameters xmi:id="PCZiX" name="body" type="#9VTck"/>
</ownedOperations>
<ownedOperations xmi:id="Ti0Xc" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionAsBagOperation" name="asBag"
type="#ZxUl9">
<ownedComments body="The Bag that contains all the elements from oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="kC8EI" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionAsOrderedSetOperation" name="asOrderedSet"
type="#G1Pyh">
<ownedComments body="An OrderedSet that contains all the elements from oclText[self], with duplicates removed,&#xA;in an order dependent on the particular concrete collection type.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="ww6rV" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionAsSequenceOperation" name="asSequence"
type="#SRy3R">
<ownedComments body="A Sequence that contains all the elements from oclText[self], in an order dependent on the particular concrete collection type.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="tj4Xc" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionAsSetOperation" name="asSet"
type="#zyYl9">
<ownedComments body="The Set containing all the elements from oclText[self], with duplicates removed.&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="oenaP" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectIteration"
name="collect" type="#Be91P">
<ownedComments body="The Collection of elements that results from applying body to every member of the source set.&#xA;The result is flattened. Notice that this is based on collectNested, which can be of different type depending on the type of source.&#xA;collectNested is defined individually for each subclass of CollectionType.&#xA;"/>
<ownedIterators xmi:id="Rigji" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="6z+CD" isRequired="false" name="lambda" type="#Yd8AC"/>
<ownedSignature>
<ownedParameters xmi:id="MfE+M" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="f2tFH" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectByIteration"
name="collectBy" type="#C3rSN">
<ownedComments body="The Map from each element oclText[i] of the source collection, the key, to the set of values to and values that results from applying body to every value of the source map.&#xA;The result is not flattened.&#xA;"/>
<ownedIterators xmi:id="sKLIt" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="VcpnN" isRequired="false" name="lambda" type="#ZBaNC"/>
<ownedSignature>
<ownedParameters xmi:id="7VL63" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id=",0rQ3" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectNestedIteration"
name="collectNested" type="#4za1O">
<ownedComments body="The Collection of elements which results from applying body to every member of the source collection.&#xA;"/>
<ownedIterators xmi:id="MP5GM" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="1gXms" isRequired="false" name="lambda" type="#5Wr1B"/>
<ownedSignature>
<ownedParameters xmi:id="bIJfG" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="Nemec" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionCountOperation" name="count"
type="#tYtCd">
<ownedComments body="The number of times that object occurs in the collection oclText[self].&#xA;"/>
<ownedParameters xmi:id="DDwxg" isRequired="false" name="object" type="#qs59R"/>
</ownedOperations>
<ownedOperations xmi:id="XRfrN" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludesOperation" name="excludes"
type="#XEMMs">
<ownedComments body="True if object is not an element of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="lJ4Xb" isRequired="false" name="object" type="#qs59R"/>
</ownedOperations>
<ownedOperations xmi:id="vFNWB" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludesAllOperation" name="excludesAll"
type="#XEMMs">
<ownedComments body="Does oclText[self] contain none of the elements of c2 ?&#xA;"/>
<ownedParameters xmi:id="NQr0o" name="c2" type="#wPdfw"/>
<ownedSignature>
<ownedParameters xmi:id="THtXS" name="T2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="VKAV7" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludingOperation" name="excluding"
type="#IgEJU">
<ownedComments body="The collection containing all elements of oclText[self] apart from object.&#xA;"/>
<ownedParameters xmi:id="r+kpq" isRequired="false" name="object" type="#qs59R"/>
</ownedOperations>
<ownedOperations xmi:id=",qXaV" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludingAllOperation" name="excludingAll"
type="#IgEJU">
<ownedComments body="The collection containing all elements of oclText[self] apart from all occurrences of all objects.&#xA;"/>
<ownedParameters xmi:id="CEbWM" name="objects" type="#IgEJU"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="arQ+J" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one element oclText[i] in the source collection.&#xA;"/>
<ownedIterators xmi:id="7bxLt" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="ktPrN" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="cuQ+J" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one permutation of elements oclText[i], oclText[j] in the source collection.&#xA;"/>
<ownedIterators xmi:id="1yhMt" isRequired="false" name="i" type="#qs59R"/>
<ownedIterators xmi:id="2yhMt" isRequired="false" name="j" type="#qs59R"/>
<ownedParameters xmi:id="eEAsN" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id=",yQ+J" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one permutation of elements oclText[i], oclText[j], oclText[k] in the source collection.&#xA;"/>
<ownedIterators xmi:id="MVqNt" isRequired="false" name="i" type="#qs59R"/>
<ownedIterators xmi:id="NVqNt" isRequired="false" name="j" type="#qs59R"/>
<ownedIterators xmi:id="OVqNt" isRequired="false" name="k" type="#qs59R"/>
<ownedParameters xmi:id="1mItN" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xmi:id="hg3Zo" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionFlattenOperation" name="flatten"
type="#ibDmk">
<ownedComments body="If the element type is not a collection type, this results in the same collection as oclText[self].&#xA;If the element type is a collection type, the result is a collection containing all the elements of all the recursively flattened elements of oclText[self].&#xA;"/>
<ownedSignature>
<ownedParameters xmi:id="V4fY9" name="T2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="WqmML" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each element oclText[i] in the source collection; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="HfeAP" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="ww8fv" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="YtmML" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each permutation of elements oclText[i], oclText[j], oclText[k] in the source collection; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="B2OBP" isRequired="false" name="i" type="#qs59R"/>
<ownedIterators xmi:id="C2OBP" isRequired="false" name="j" type="#qs59R"/>
<ownedParameters xmi:id="qHtgv" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="7xmML" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each permutation of elements oclText[i], oclText[j] in the source collection; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="YYXCP" isRequired="false" name="i" type="#qs59R"/>
<ownedIterators xmi:id="ZYXCP" isRequired="false" name="j" type="#qs59R"/>
<ownedIterators xmi:id="aYXCP" isRequired="false" name="k" type="#qs59R"/>
<ownedParameters xmi:id="Bq1hv" isRequired="false" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xmi:id="JdFNc" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludesOperation" name="includes"
type="#XEMMs">
<ownedComments body="True if object is an element of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="PGCWJ" isRequired="false" name="object" type="#qs59R"/>
</ownedOperations>
<ownedOperations xmi:id="9ETDK" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludesAllOperation" name="includesAll"
type="#XEMMs">
<ownedComments body="Does oclText[self] contain all the elements of c2 ?&#xA;"/>
<ownedParameters xmi:id="jyMNg" name="c2" type="#+dsXX"/>
<ownedSignature>
<ownedParameters xmi:id="RAum0" name="T2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="j3fm9" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludingOperation" name="including"
type="#IgEJU">
<ownedComments body="The collection containing all elements of oclText[self] plus object.&#xA;"/>
<ownedParameters xmi:id="BXZw7" isRequired="false" name="object" type="#qs59R"/>
</ownedOperations>
<ownedOperations xmi:id="xSRQj" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIncludingAllOperation" name="includingAll"
type="#IgEJU">
<ownedComments body="The collection containing all elements of oclText[self] and objects.&#xA;"/>
<ownedParameters xmi:id="ssqOB" name="objects" type="#IgEJU"/>
</ownedOperations>
<ownedOperations xmi:id="+sJto" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIntersectionOperation" name="intersection"
type="#ZxUl9">
<ownedComments body="The intersection of oclText[self] and bag; the bag of all elements that are in both oclText[self] and c.&#xA;"/>
<ownedParameters xmi:id="Ubo5h" name="c" type="#IgEJU"/>
</ownedOperations>
<ownedOperations xmi:id="YdPKO" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIntersectionOperation" name="intersection"
type="#zyYl9">
<ownedComments body="The intersection of oclText[self] and a unique collection; the set of all elements that are in both oclText[self] and u.&#xA;"/>
<ownedParameters xmi:id="Yqd+C" name="u" type="#gHti8"/>
</ownedOperations>
<ownedOperations xmi:id="ghkfR" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionIsEmptyOperation" name="isEmpty"
type="#XEMMs">
<ownedComments body="Is oclText[self] the empty collection?&#xA;&#xA;Note: oclText[null->isEmpty()] returns oclText[true] in virtue of the implicit casting from oclText[null] to oclText[Bag{}].&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="ZQp5M" implementationClass="org.eclipse.ocl.pivot.library.iterator.IsUniqueIteration"
name="isUnique" type="#XEMMs">
<ownedComments body="The Map from each element oclText[i] of the source collection, the key, to the set of values to and values that results from applying body to every value of the source map.&#xA;The result is not flattened.&#xA;"/>
<ownedComments body="Results in oclText[true] if body evaluates to a different value for each element oclText[i] in the source collection; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="+c3ia" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="nuVC7" isRequired="false" name="lambda" type="#x9vEt"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="6+B+U" implementationClass="org.eclipse.ocl.pivot.library.iterator.IterateIteration"
isRequired="false" name="iterate" type="#FfSe4">
<ownedAccumulators xmi:id="NEijO" isRequired="false" name="acc" type="#FfSe4"/>
<ownedComments body="Results in the final value of the accumulator oclText[acc] whose value is updated by evaluation of oclText[lambda] for each element oclText[i] in the source collection.&#xA;"/>
<ownedIterators xmi:id="bhVhI" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="EzzAp" isRequired="false" name="lambda" type="#vUOyu"/>
<ownedSignature>
<ownedParameters xmi:id="FfSe4" name="Tacc"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="BuL1W" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionMaxOperation" name="max"
type="#qs59R">
<ownedComments body="The element with the maximum value of all elements in oclText[self].&#xA;Elements must be of a type supporting the max operation.&#xA;The max operation - supported by the elements - must take one parameter of type T and be both associative and commutative.&#xA;UnlimitedNatural, Integer and Real fulfill this condition.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="vxL1W" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionMinOperation" name="min"
type="#qs59R">
<ownedComments body="The element with the minimum value of all elements in oclText[self].&#xA;Elements must be of a type supporting the min operation.&#xA;The min operation - supported by the elements - must take one parameter of type T and be both associative and commutative.&#xA;UnlimitedNatural, Integer and Real fulfill this condition.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="XxcWz" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionNotEmptyOperation" name="notEmpty"
type="#XEMMs">
<ownedComments body="Is oclText[self] not the empty collection?&#xA;&#xA;oclText[null->notEmpty()] returns oclText[false] in virtue of the implicit casting from oclText[null] to oclText[Bag{}].&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="kTM1W" implementationClass="org.eclipse.ocl.pivot.library.iterator.OneIteration"
name="one" type="#XEMMs">
<ownedComments body="Results in oclText[true] if there is exactly one element in the source collection for which body is oclText[true].&#xA;"/>
<ownedIterators xmi:id="dDBh1" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="GVfAW" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xmi:id="WVvJn" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionProductOperation" name="product"
type="#AVIYn">
<ownedComments body="The cartesian product operation of oclText[self] and c2.&#xA;"/>
<ownedParameters xmi:id="YR+9v" name="c2" type="#3GM3z"/>
<ownedSignature>
<ownedParameters xmi:id="yzGsR" name="T2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="doIHf" implementationClass="org.eclipse.ocl.pivot.library.iterator.RejectIteration"
name="reject" type="#IgEJU">
<ownedComments body="The sub-collection of the source collection for which body is oclText[false].&#xA;"/>
<ownedIterators xmi:id="yUaw7" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="bm4Pc" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="6tk0g" implementationClass="org.eclipse.ocl.pivot.library.iterator.SelectIteration"
name="select" type="#IgEJU">
<ownedComments body="The sub-collection of the source collection for which body is oclText[true].&#xA;"/>
<ownedIterators xmi:id="bUdpN" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="Em7Iu" name="lambda" type="#9VTck"/>
</ownedOperations>
<ownedOperations xmi:id="lMkqz" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSelectByKindOperation" name="selectByKind"
type="#4oB7Y">
<ownedComments body="The collection containing all elements of oclText[self] whose type conforms to oclText[type].&#xA;"/>
<ownedParameters xmi:id="2n72X" isTypeof="true" name="type" type="#bFs8P"/>
<ownedSignature>
<ownedParameters xmi:id="bFs8P" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="Lbprz" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSelectByTypeOperation" name="selectByType"
type="#eSM5X">
<ownedComments body="The collection containing all elements of oclText[self] whose type is oclText[type].&#xA;"/>
<ownedParameters xmi:id="EcVHp" isTypeof="true" name="type" type="#xIioi"/>
<ownedSignature>
<ownedParameters xmi:id="xIioi" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="eYPCX" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSizeOperation" name="size"
type="#tYtCd">
<ownedComments body="The number of elements in the collection oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="yZH65" implementationClass="org.eclipse.ocl.pivot.library.iterator.SortedByIteration"
name="sortedBy" type="#SRy3R">
<ownedComments body="Results in the Collection containing all elements of the source collection.&#xA;The element for which body has the lowest value comes first, and so on.&#xA;The type of the body expression must have the &lt; operation defined.&#xA;The &lt; operation must return a Boolean value and must be transitive (i.e., if a &lt; b and b &lt; c then a &lt; c).&#xA;"/>
<ownedIterators xmi:id="zQzDb" isRequired="false" name="i" type="#qs59R"/>
<ownedParameters xmi:id="ciRj7" isRequired="false" name="lambda" type="#x9vEt"/>
</ownedOperations>
<ownedOperations xmi:id="oRN1W" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionSumOperation" name="sum"
type="#qs59R">
<ownedComments body="The addition of all elements in oclText[self].&#xA;Elements must be of an oclText[OclSummable] type to provide the zero() and sum() operations.&#xA;The e[sum] operation must be both associative: a.sum(b).sum(c) = a.sum(b.sum(c)), and commutative: a.sum(b) = b.sum(a).&#xA;Integer and Real fulfill this condition.&#xA;&#xA;If the e[sum] operation is not both associative and commutative, the e[sum] expression is not well-formed,&#xA;which may result in unpredictable results during evaluation.&#xA;If an implementation is able to detect a lack of associativity or commutativity,&#xA;the implementation may bypass the evaluation and return an oclText[invalid] result.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="EesOl" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionUnionOperation" name="union"
type="#ZxUl9">
<ownedComments body="The bag consisting of all elements in oclText[self] and all elements in c.&#xA;"/>
<ownedParameters xmi:id="CoRBF" name="c" type="#IgEJU"/>
</ownedOperations>
<ownedProperties xmi:id="WTuwp" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isStatic="true"
name="elementType" type="#qs59R">
<ownedComments body="Evaluates to the type of the collection elements.&#xA;&#xA;@Deprecated Use regular CollectionType property&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="BucvH" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isStatic="true"
name="lower" type="#tYtCd">
<ownedComments body="Evaluates to the lower bound on the number of collection elements.&#xA;&#xA;@Deprecated Use regular CollectionType property&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="ikPPI" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isStatic="true"
name="upper" type="#tYtCd">
<ownedComments body="Evaluates to the upper bound on the number of collection elements.&#xA;&#xA;@Deprecated Use regular CollectionType property&#xA;"/>
</ownedProperties>
<ownedSignature>
<ownedParameters xmi:id="qs59R" name="T"/>
</ownedSignature>
</ownedClasses>
<ownedClasses xmi:id="nwL7b" name="CollectionType" superClasses="#zfDWR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedProperties xmi:id="5RgO0" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionElementTypeProperty" name="elementType"
opposite="#PjpFg" type="#pBMRF">
<ownedComments body="Evaluates to the type of the collection elements.&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="ksONS" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionLowerProperty" name="lower"
type="#tYtCd">
<ownedComments body="Evaluates to the lower bound on the number of collection elements.&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="FjBtS" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionUpperProperty" name="upper"
type="#tYtCd">
<ownedComments body="Evaluates to the upper bound on the number of collection elements.&#xA;"/>
</ownedProperties>
</ownedClasses>
<ownedClasses xmi:id="28WYD" name="Enumeration" superClasses="#hlrMH">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="@Deprecated: Use OclEnumeration&#xA;The Enumeration type is the type of an OrderedSet of EnumerationLiteral.&#xA;"/>
<ownedOperations xmi:id="wJUrA" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Return a set of all enumeration values of oclText[self]."/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="Xml8E" name="EnumerationLiteral" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The standard type EnumerationLiteral represents a named constant value of an Enumeration.&#xA;"/>
</ownedClasses>
<ownedClasses xsi:type="pivot:PrimitiveType" xmi:id="tYtCd" coercions="#RRcEo" instanceClassName="org.eclipse.ocl.pivot.values.IntegerValue"
name="Integer" superClasses="#Nr4QF">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Primitive</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The standard type Integer represents the mathematical concept of integer.&#xA;Integer is itself an instance of the metatype PrimitiveType (from UML).&#xA;"/>
<ownedOperations xmi:id="hA+ir" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericTimesOperation" name="*" precedence="#0NX0o"
type="#tYtCd">
<ownedComments body="The value of the multiplication of oclText[self] and i.&#xA;"/>
<ownedParameters xmi:id="xQEd2" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="iA+ir" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericPlusOperation" name="+" precedence="#qLHeo"
type="#tYtCd">
<ownedComments body="The value of the addition of oclText[self] and i.&#xA;"/>
<ownedParameters xmi:id="ugEd2" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="b,,VW" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericNegateOperation" name="-" precedence="#tgQwH"
type="#tYtCd">
<ownedComments body="The negative value of oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="kA+ir" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericMinusOperation" name="-" precedence="#qLHeo"
type="#tYtCd">
<ownedComments body="The value of the subtraction of i from oclText[self].&#xA;"/>
<ownedParameters xmi:id="oAFd2" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="mA+ir" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericDivideOperation" isInvalidating="true"
name="/" precedence="#0NX0o" type="#Nr4QF">
<ownedComments body="The value of oclText[self] divided by i.&#xA;Evaluates to oclText[invalid] if r is equal to zero.&#xA;"/>
<ownedParameters xmi:id="igFd2" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="ggXWW" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericAbsOperation" name="abs" type="#tYtCd">
<ownedComments body="The absolute value of oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="WTP3A" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericDivOperation" name="div" type="#tYtCd">
<ownedComments body="The number of times that i fits completely within oclText[self].&#xA;"/>
<ownedParameters xmi:id="So906" name="i" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="bVYjr" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericMaxOperation" name="max" type="#tYtCd">
<ownedComments body="The maximum of oclText[self] an i.&#xA;"/>
<ownedParameters xmi:id="DyDB9" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="JZYjr" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericMinOperation" name="min" type="#tYtCd">
<ownedComments body="The minimum of oclText[self] an i.&#xA;"/>
<ownedParameters xmi:id="5G,B9" name="i" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="HdR3A" implementationClass="org.eclipse.ocl.pivot.library.numeric.NumericModOperation" name="mod" type="#tYtCd">
<ownedComments body="The result is oclText[self] modulo i.&#xA;"/>
<ownedParameters xmi:id=",aTX7" name="i" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="aIlbs" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyToStringOperation" name="toString"
type="#AlwVZ">
<ownedComments body="Converts oclText[self] to a string value.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="RRcEo" implementationClass="org.eclipse.ocl.pivot.library.numeric.IntegerToUnlimitedNaturalOperation" name="toUnlimitedNatural"
type="#3kMFL">
<ownedComments body="Converts a non-negative oclText[self] to an UnlimitedNatural value. A negative oclText[self] is converted to oclText[invalid].&#xA;An automatic coersion may be synthesized if the coercion enables an operation reference to be resolved&#xA;in an expression where no operation was available without coercion.&#xA;"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="Abotv" name="InvalidType" superClasses="#zfDWR">
<ownedOperations xmi:id="SPCDQ" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Returns oclText[invalid]."/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:MapType" xmi:id="LpeHF" instanceClassName="java.util.Map" name="Map" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Collection</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="A Map provides a Set of key values, each of which has an associated value.&#xA;Keys and values may be null, but neither may be invalid."/>
<ownedOperations xmi:id="fMyo," implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] unless oclText[self] and s contain the same elements.&#xA;"/>
<ownedParameters xmi:id="hejT0" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="avxo," implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if oclText[self] and s contain the same elements.&#xA;"/>
<ownedParameters xmi:id="wlTM0" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="hWLcq" implementationClass="org.eclipse.ocl.pivot.library.iterator.AnyIteration"
isRequired="false" name="any" type="#8dAuH">
<ownedComments body="Returns the key of any element in the e[source] map for which e[body] evaluates to oclText[true].&#xA;Returns oclText[invalid] if the e[body] evaluates to oclText[invalid] for any key,&#xA;otherwise if there are one or more kets for which the e[body] is oclText[true],&#xA;an indeterminate choice of one of them is returned, otherwise the null is oclText[invalid].&#xA;&#xA;let source : Map(K,V) = ..., body : Lambda K(V) : Boolean = ... in&#xA;source->any(key &lt;- value | body) = source->select(key | let value = source->at(key) in body)->asSequence()->first()&#xA;"/>
<ownedIterators xmi:id="oKzcq" name="k" type="#8dAuH"/>
<ownedParameters xmi:id="qzfSN" name="body" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xmi:id="of0bq" implementationClass="org.eclipse.ocl.pivot.library.map.MapAtOperation" isInvalidating="true" isRequired="false"
name="at" type="#HeAuH">
<ownedComments body="The value of the map at oclText[key].&#xA;"/>
<ownedParameters xmi:id="SbsaH" isRequired="false" name="key" type="#8dAuH"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="fzpBj" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectIteration"
name="collect" type="#Txm0H">
<ownedComments body="The Map of key and values that results from applying body to every value of the source map.&#xA;The result is flattened.&#xA;"/>
<ownedIterators xmi:id="uTnTY" isRequired="false" name="k" type="#8dAuH"/>
<ownedParameters xmi:id="VlFz4" isRequired="false" name="lambda" type="#xFQAt"/>
<ownedSignature>
<ownedParameters xmi:id="BkHat" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="WLwsa" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectByIteration"
name="collectBy" type="#Li7MS">
<ownedComments body="The Map from each element oclText[i] of the source collection, the key, to the set of values to and values that results from applying body to every value of the source map.&#xA;The result is not flattened.&#xA;"/>
<ownedIterators xmi:id="J8R4i" isRequired="false" name="k" type="#8dAuH"/>
<ownedParameters xmi:id="wNwXD" isRequired="false" name="lambda" type="#yptMt"/>
<ownedSignature>
<ownedParameters xmi:id="waOWY" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="2Ju3K" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectNestedIteration"
name="collectNested" type="#rNtaG">
<ownedComments body="The Map of key and values which results from applying body to every value of the source map.&#xA;"/>
<ownedIterators xmi:id="pAA3B" isRequired="false" name="k" type="#8dAuH"/>
<ownedParameters xmi:id="QSeWi" isRequired="false" name="lambda" type="#S,+0s"/>
<ownedSignature>
<ownedParameters xmi:id="QNM7m" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="OmhSh" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludesOperation" name="excludes" type="#XEMMs">
<ownedComments body="True if oclText[key] is not one of the keys of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="gnOIO" isRequired="false" name="key" type="#8dAuH"/>
</ownedOperations>
<ownedOperations xmi:id="SshSh" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludesPairOperation" name="excludes"
type="#XEMMs">
<ownedComments body="True if oclText[key] and oclText[value] are not a key-value pair of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="UVvJO" isRequired="false" name="key" type="#8dAuH"/>
<ownedParameters xmi:id="mhe0U" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="hW+,U" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludesAllOperation" name="excludesAll"
type="#XEMMs">
<ownedComments body="True if none of the elements of oclText[coll] are keys of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="0IOXK" name="coll" type="#jNn4z"/>
<ownedSignature>
<ownedParameters xmi:id="+Zdec" name="K2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="JciU2" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludesMapOperation" name="excludesMap"
type="#XEMMs">
<ownedComments body="True if none of the key-value pairs of oclText[map] are also key-value pairs of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="sRrPv" name="map" type="#Si8ek"/>
<ownedSignature>
<ownedParameters xmi:id="mMGvo" name="K2"/>
<ownedParameters xmi:id="7RGvo" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="u87CC" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludesValueOperation" name="excludesValue"
type="#XEMMs">
<ownedComments body="True if oclText[value] is not one of the values of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="SwWH5" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="MfC8O" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludingOperation" name="excluding" type="#LpeHF">
<ownedComments body="The map containing all key-value pairs of oclText[self] except any whose key is oclText[key].&#xA;"/>
<ownedParameters xmi:id="mc7Zd" isRequired="false" name="key" type="#8dAuH"/>
</ownedOperations>
<ownedOperations xmi:id="QlC8O" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludingPairOperation" name="excluding"
type="#LpeHF">
<ownedComments body="The map containing all key-value pairs of oclText[self] except any whose key is oclText[key] and whose value is oclText[key].&#xA;"/>
<ownedParameters xmi:id="aKcbd" isRequired="false" name="key" type="#8dAuH"/>
<ownedParameters xmi:id="sWLGk" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="tiW,D" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludingAllOperation" name="excludingAll"
type="#LpeHF">
<ownedComments body="The map containing all key-value pairs of oclText[self] except any whose key is included in oclText[keys].&#xA;"/>
<ownedParameters xmi:id="YgAdz" name="keys" type="#xuXg8"/>
</ownedOperations>
<ownedOperations xmi:id="LgYZl" implementationClass="org.eclipse.ocl.pivot.library.map.MapExcludingMapOperation" name="excludingMap"
type="#LpeHF">
<ownedComments body="The map containing all key-value pairs of oclText[self] except any which is also included in oclText[map].&#xA;"/>
<ownedParameters xmi:id="mlJiv" name="map" type="#aWy45"/>
<ownedSignature>
<ownedParameters xmi:id="4wpcP" name="K2"/>
<ownedParameters xmi:id="N2pcP" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="RATld" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one key oclText[k] in the source map.&#xA;"/>
<ownedIterators xmi:id="YN47i" isRequired="false" name="k" type="#8dAuH"/>
<ownedParameters xmi:id=",eWbD" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="TDTld" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one permutation of keys oclText[k1], oclText[k2] in the source map.&#xA;"/>
<ownedIterators xmi:id="NXp8i" isRequired="false" name="k1" type="#8dAuH"/>
<ownedIterators xmi:id="OXp8i" isRequired="false" name="k2" type="#8dAuH"/>
<ownedParameters xmi:id="51GcD" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="2HTld" implementationClass="org.eclipse.ocl.pivot.library.iterator.ExistsIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="exists" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to oclText[true] for at least one permutation of keys oclText[k1], oclText[k2], oclText[k3] in the source map.&#xA;"/>
<ownedIterators xmi:id="k5x9i" isRequired="false" name="k1" type="#8dAuH"/>
<ownedIterators xmi:id="l5x9i" isRequired="false" name="k2" type="#8dAuH"/>
<ownedIterators xmi:id="m5x9i" isRequired="false" name="k3" type="#8dAuH"/>
<ownedParameters xmi:id="QYPdD" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="N,oze" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each key oclText[k] in the source map; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="kQlwE" isRequired="false" name="k" type="#8dAuH"/>
<ownedParameters xmi:id="LiDQl" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="PCpze" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each permutation of keys oclText[k1], oclText[k2] in the source map; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="ZaWxE" isRequired="false" name="k1" type="#8dAuH"/>
<ownedIterators xmi:id="aaWxE" isRequired="false" name="k2" type="#8dAuH"/>
<ownedParameters xmi:id="F5zQl" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="yGpze" implementationClass="org.eclipse.ocl.pivot.library.iterator.ForAllIteration"
isInvalidating="true" isRequired="false" isValidating="true" name="forAll" type="#XEMMs">
<ownedComments body="Results in oclText[true] if the body expression evaluates to oclText[true] for each permutation of keys oclText[k1], oclText[k2], oclText[k3] in the source map; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="w8eyE" isRequired="false" name="k1" type="#8dAuH"/>
<ownedIterators xmi:id="x8eyE" isRequired="false" name="k2" type="#8dAuH"/>
<ownedIterators xmi:id="y8eyE" isRequired="false" name="k3" type="#8dAuH"/>
<ownedParameters xmi:id="cb8Rl" isRequired="false" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xmi:id="AyH0v" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludesOperation" name="includes" type="#XEMMs">
<ownedComments body="True if oclText[key] is one of the keys of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="KkYG8" isRequired="false" name="key" type="#8dAuH"/>
</ownedOperations>
<ownedOperations xmi:id="E4H0v" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludesPairOperation" name="includes"
type="#XEMMs">
<ownedComments body="True if oclText[key] and oclText[value] are a key-value pair of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="+R5H8" isRequired="false" name="key" type="#8dAuH"/>
<ownedParameters xmi:id="QeoyC" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="vVEtd" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludesAllOperation" name="includesAll"
type="#XEMMs">
<ownedComments body="True if all the elements of oclText[coll] are keys of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="KrvvB" name="coll" type="#xb2wa"/>
<ownedSignature>
<ownedParameters xmi:id="8Set+" name="K2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="XboB," implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludesMapOperation" name="includesMap"
type="#XEMMs">
<ownedComments body="True if all of the key-value pairs of oclText[map] are also key-value pairs of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="C0Mom" name="map" type="#Kb5,,"/>
<ownedSignature>
<ownedParameters xmi:id="kFH+K" name="K2"/>
<ownedParameters xmi:id="5KH+K" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="8N2Jv" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludesValueOperation" name="includesValue"
type="#XEMMs">
<ownedComments body="True if oclText[value] is one of the values of oclText[self], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="oc7Wg" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="eSiNR" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludingPairOperation" name="including"
type="#LpeHF">
<ownedComments body="The map containing all of the key-value pairs of oclText[self] and an additional key-value pair for oclText[key] and oclText[value].&#xA;If oclText[key] is already a key of oclText[self], the old value pair is replaced by oclText[value]."/>
<ownedParameters xmi:id="wiQiu" isRequired="false" name="key" type="#8dAuH"/>
<ownedParameters xmi:id="Cv,M1" isRequired="false" name="value" type="#HeAuH"/>
</ownedOperations>
<ownedOperations xmi:id="9HSPz" implementationClass="org.eclipse.ocl.pivot.library.map.MapIncludingMapOperation" name="includingMap"
type="#LpeHF">
<ownedComments body="The map containing all of the key-value pairs of oclText[self] and oclText[map].&#xA;The values associated with key-value pairs in oclText[map] replace those in oclText[self] where the same key is used by both maps.&#xA;"/>
<ownedParameters xmi:id="QOZak" name="map" type="#i5R2O"/>
<ownedSignature>
<ownedParameters xmi:id="6WFu0" name="K2"/>
<ownedParameters xmi:id="PcFu0" name="V2"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="X2mGl" implementationClass="org.eclipse.ocl.pivot.library.map.MapIsEmptyOperation" name="isEmpty" type="#XEMMs">
<ownedComments body="True if oclText[self] is the empty map, oclText[false] otherwise.&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="Qlrgg" implementationClass="org.eclipse.ocl.pivot.library.iterator.IsUniqueIteration"
name="isUnique" type="#XEMMs">
<ownedComments body="Results in oclText[true] if body evaluates to a different value for each key oclText[k] in the source map; otherwise, result is oclText[false].&#xA;"/>
<ownedIterators xmi:id="ZO+SQ" isRequired="false" name="i" type="#8dAuH"/>
<ownedParameters xmi:id="Cgcyw" isRequired="false" name="lambda" type="#voQcV"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="xTElo" implementationClass="org.eclipse.ocl.pivot.library.iterator.IterateIteration"
isRequired="false" name="iterate" type="#06U6Y">
<ownedAccumulators xmi:id="o1oTE" isRequired="false" name="acc" type="#06U6Y"/>
<ownedComments body="Results in the final value of the accumulator oclText[acc] whose value is updated by evaluation of oclText[lambda] for each element oclText[i] in the source map.&#xA;"/>
<ownedIterators xmi:id="2ScR+" isRequired="false" name="i" type="#8dAuH"/>
<ownedParameters xmi:id="fk6we" isRequired="false" name="lambda" type="#uOvwZ"/>
<ownedSignature>
<ownedParameters xmi:id="06U6Y" name="Tacc"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="IlWoq" implementationClass="org.eclipse.ocl.pivot.library.map.MapKeysOperation" name="keys" type="#1Uzet">
<ownedComments body="A Set comprising all the keys of the key-value pairs in oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="OGf9G" implementationClass="org.eclipse.ocl.pivot.library.map.MapNotEmptyOperation" name="notEmpty" type="#XEMMs">
<ownedComments body="True if oclText[self] not the empty map, oclText[false] otherwise.&#xA;"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="boOcq" implementationClass="org.eclipse.ocl.pivot.library.iterator.OneIteration"
name="one" type="#XEMMs">
<ownedComments body="Results in oclText[true] if there is exactly one element in the source map for which body is oclText[true].&#xA;"/>
<ownedIterators xmi:id="40HRr" isRequired="false" name="i" type="#8dAuH"/>
<ownedParameters xmi:id="hGmwL" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="U9Kuy" implementationClass="org.eclipse.ocl.pivot.library.iterator.MapRejectIteration"
name="reject" type="#LpeHF">
<ownedComments body="The subset of the source set for which body is oclText[false].&#xA;"/>
<ownedIterators xmi:id="NGhgx" isRequired="false" name="i" type="#8dAuH"/>
<ownedParameters xmi:id="2X,,R" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="xCnb0" implementationClass="org.eclipse.ocl.pivot.library.iterator.MapSelectIteration"
name="select" type="#LpeHF">
<ownedComments body="The subset of set for which expr is oclText[true].&#xA;"/>
<ownedIterators xmi:id="2FkZD" isRequired="false" name="i" type="#8dAuH"/>
<ownedParameters xmi:id="fXC5j" name="lambda" type="#7A0zM"/>
</ownedOperations>
<ownedOperations xmi:id="VtRpq" implementationClass="org.eclipse.ocl.pivot.library.map.MapSizeOperation" name="size" type="#tYtCd">
<ownedComments body="The number of key-value pairs in oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="2hNV5" implementationClass="org.eclipse.ocl.pivot.library.map.MapValuesOperation" name="values" type="#uivet">
<ownedComments body="The Bag comprising all the values of the key-value pairs in oclText[self].&#xA;"/>
</ownedOperations>
<ownedProperties xmi:id="w,Rmk" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isStatic="true"
name="keyType" type="#8dAuH">
<ownedComments body="The key type of the key-value pairs of oclText[self].&#xA;&#xA;@Deprecated Use regular MapType property&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="CoDkn" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isStatic="true"
name="valueType" type="#HeAuH">
<ownedComments body="The value type of the key-value pairs of oclText[self].&#xA;&#xA;@Deprecated Use regular MapType property&#xA;"/>
</ownedProperties>
<ownedSignature>
<ownedParameters xmi:id="8dAuH" name="K"/>
<ownedParameters xmi:id="HeAuH" name="V"/>
</ownedSignature>
</ownedClasses>
<ownedClasses xmi:id="l+ONa" name="MapType" superClasses="#zfDWR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedProperties xmi:id="ifXaB" implementationClass="org.eclipse.ocl.pivot.library.map.MapKeyTypeProperty" name="keyType" opposite="#CWW9w"
type="#pBMRF">
<ownedComments body="The key type of the key-value pairs of oclText[self].&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="0HJYE" implementationClass="org.eclipse.ocl.pivot.library.map.MapValueTypeProperty" name="valueType" opposite="#AwxtF"
type="#pBMRF">
<ownedComments body="The value type of the key-value pairs of oclText[self].&#xA;"/>
</ownedProperties>
</ownedClasses>
<ownedClasses xsi:type="pivot:AnyType" xmi:id="jbMkR" instanceClassName="org.eclipse.ocl.pivot.AnyType" isAbstract="true" name="OclAny">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The number of elements in the collection oclText[self].essions.&#xA;OclAny is itself an instance of the metatype AnyType.&#xA;&#xA;All classes in a UML model inherit all operations defined on OclAny.&#xA;To avoid name conflicts between properties in the model and the properties inherited from OclAny,&#xA;all names on the properties of OclAny start with ‘ocl.’&#xA;Although theoretically there may still be name conflicts, they can be avoided.&#xA;One can also use qualification by OclAny (name of the type) to explicitly refer to the OclAny properties.&#xA;&#xA;Operations of OclAny, where the instance of OclAny is called object.&#xA;"/>
<ownedOperations xmi:id="X1Ovl" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="True if oclText[self] is a different object from object2. Infix operator.&#xA;"/>
<ownedParameters xmi:id="5jbKp" isRequired="false" name="object2" type="#zlfMH"/>
<ownedPostconditions xmi:id="MrNhR">
<ownedSpecification xsi:type="pivot:ExpressionInOCL" body="result = not (self = object2)" type="#XEMMs">
<ownedBody xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:OperationCallExp" isRequired="false" name="not" referredOperation="#DH5kA" type="#XEMMs">
<ownedSource xsi:type="pivot:OperationCallExp" name="=" referredOperation="#SYOvl" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" isRequired="false" name="object2" referredVariable="#oqZCH" type="#jbMkR"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#cohTe" type="#jbMkR"/>
</ownedSource>
</ownedArguments>
<ownedSource xsi:type="pivot:VariableExp" name="result" referredVariable="#UlSQT" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="cohTe" name="self" type="#jbMkR"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="oqZCH" isRequired="false" name="object2" representedParameter="#5jbKp"
type="#jbMkR"/>
<ownedResult xsi:type="pivot:ParameterVariable" xmi:id="UlSQT" name="result" type="#XEMMs"/>
</ownedSpecification>
</ownedPostconditions>
</ownedOperations>
<ownedOperations xmi:id="SYOvl" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="True if oclText[self] is the same object as object2. Infix operator.&#xA;"/>
<ownedParameters xmi:id="IrLDp" isRequired="false" name="object2" type="#zlfMH"/>
<ownedPostconditions xmi:id="by9ZR">
<ownedSpecification xsi:type="pivot:ExpressionInOCL" body="result = (self = object2)" type="#XEMMs">
<ownedBody xsi:type="pivot:OperationCallExp" name="=" referredOperation="#2dcxV" type="#XEMMs">
<ownedArguments xsi:type="pivot:OperationCallExp" name="=" referredOperation="#SYOvl" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" isRequired="false" name="object2" referredVariable="#vLUya" type="#jbMkR"/>
<ownedSource xsi:type="pivot:VariableExp" name="self" referredVariable="#jJcDy" type="#jbMkR"/>
</ownedArguments>
<ownedSource xsi:type="pivot:VariableExp" name="result" referredVariable="#bGNAn" type="#XEMMs"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="jJcDy" name="self" type="#jbMkR"/>
<ownedParameters xsi:type="pivot:ParameterVariable" xmi:id="vLUya" isRequired="false" name="object2" representedParameter="#IrLDp"
type="#jbMkR"/>
<ownedResult xsi:type="pivot:ParameterVariable" xmi:id="bGNAn" name="result" type="#XEMMs"/>
</ownedSpecification>
</ownedPostconditions>
</ownedOperations>
<ownedOperations xmi:id="koUSM" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsSetOperation" name="oclAsSet"
type="#UQF4+">
<ownedComments body="Returns a Set with oclText[self] as the sole content, unless oclText[self] is oclText[null] in which case returns an empty set,"/>
</ownedOperations>
<ownedOperations xmi:id="xOh0M" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation" isInvalidating="true"
name="oclAsType" type="#HZ,i,">
<ownedComments body="Evaluates to oclText[self], where oclText[self] is of the type identified by oclText[TT].&#xA;The type oclText[TT] may be any classifier defined by OCL or a user metamodel;&#xA;if the actual type of oclText[self] at evaluation time does not conform to oclText[TT],&#xA;then the oclAsType operation evaluates to oclText[invalid].&#xA;&#xA;If oclText[self] is a multiply classified instance, the current classification used for OCL navigation&#xA;is changed to the classification to which oclText[TT] conforms. The oclAsType call is not well-formed if&#xA;the classification is ambiguous.&#xA;&#xA;In the case of feature redefinition, casting an object to a supertype of its actual type&#xA;does not access the supertype’s definition of the feature;&#xA;according to the semantics of redefinition, the redefined feature simply does not exist for the object.&#xA;However, when casting to a supertype, any features additionally defined by the subtype are suppressed.&#xA;&#xA;FIXME Bug 578060 return should be optional to support OclVoid returning null."/>
<ownedParameters xmi:id="Shnpr" isTypeof="true" name="type" type="#HZ,i,"/>
<ownedPostconditions xmi:id="0dG7z" name="IsSelf">
<ownedSpecification xsi:type="pivot:ExpressionInOCL" body="result = self" type="#XEMMs">
<ownedBody xsi:type="pivot:OperationCallExp" name="=" referredOperation="#SYOvl" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" name="self" referredVariable="#EwkQp" type="#jbMkR"/>
<ownedSource xsi:type="pivot:VariableExp" name="result" referredVariable="#8sVNe" type="#HZ,i,"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="EwkQp" name="self" type="#jbMkR"/>
<ownedParameters xsi:type="pivot:ParameterVariable" name="type" representedParameter="#Shnpr" type="#HZ,i,"/>
<ownedResult xsi:type="pivot:ParameterVariable" xmi:id="8sVNe" name="result" type="#HZ,i,"/>
</ownedSpecification>
</ownedPostconditions>
<ownedSignature>
<ownedParameters xmi:id="HZ,i," name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="OJbtr" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsInStateOperation" name="oclIsInState"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if the oclText[self] is in the state identified by statespec.&#xA;"/>
<ownedParameters xmi:id="N0Y+g" isRequired="false" name="statespec" type="#IebtF"/>
</ownedOperations>
<ownedOperations xmi:id="Bz+rT" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsInvalidOperation" isValidating="true"
name="oclIsInvalid" type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if the oclText[self] is equal to OclInvalid.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="MuzAj" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation" name="oclIsKindOf"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if the type of oclText[self] conforms to oclText[type].&#xA;That is, oclText[self] is of type oclText[type] or a subtype of oclText[type].&#xA;"/>
<ownedParameters xmi:id="Bzmst" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="qNfuM" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="oclIsNew"
type="#XEMMs">
<ownedComments body="Can only be used in a postcondition.&#xA;Evaluates to oclText[true] if the oclText[self] is created during performing the operation (for instance, it didn’t exist at precondition time).&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="y2TQz" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsTypeOfOperation" name="oclIsTypeOf"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if oclText[self] is of the type oclText[type] but not a subtype of oclText[type]."/>
<ownedParameters xmi:id="P5PA1" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="aSwFn" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsUndefinedOperation" isValidating="true"
name="oclIsUndefined" type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if the oclText[self] is equal to oclText[invalid] or equal to oclText[null].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="YyEmT" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclLogOperation" name="oclLog" type="#zlfMH">
<ownedComments body="Evaluates to the self, with the side effect of generating a log message comprising self.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="YxE0K" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclLogOperation" name="oclLog" type="#zlfMH">
<ownedComments body="Evaluates to the self, with the side effect of generating a log message comprising message followed by self.&#xA;"/>
<ownedParameters xmi:id="qstQj" name="message" type="#AlwVZ"/>
</ownedOperations>
<ownedOperations xmi:id="+nmZv" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclTypeOperation" isTypeof="true"
name="oclType" type="#zlfMH">
<ownedComments body="Evaluates to the most derived type of which oclText[self] is currently an instance. If oclText[self] is an instance of a multiply&#xA;classified type, the return is the most derived type of the current classification which is established when the instance is&#xA;passed to OCL, or re-established by an oclText[oclAsType()] call.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="N,CWN" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclTypesOperation" name="oclTypes"
type="#PRF4+">
<ownedComments body="Evaluates to all of the most derived type of which oclText[self] is an instance. The return from oclText[oclTypes()]&#xA;is normally equivalent to that from oclText[oclType()] unless oclText[self] is an instance of multiply classified type.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="4f1nm" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyToStringOperation" name="toString"
type="#AlwVZ">
<ownedComments body="Returns a string representation of oclText[self]."/>
</ownedOperations>
<ownedProperties xmi:id="c8rKW" isImplicit="true" name="OclInvalid" opposite="#QSjNW" type="#4eSgX"/>
</ownedClasses>
<ownedClasses xmi:id="BEwMu" isAbstract="true" name="OclComparable" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclComparable defines the compareTo operation used by the sortedBy iteration. Only types that provide a derived&#xA;compareTo implementation may be sorted.&#xA;"/>
<ownedOperations xmi:id="3+qvY" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanOperation" name="&lt;"
precedence="#FpitR" type="#XEMMs">
<ownedComments body="True if oclText[self] is less than oclText[that].&#xA;"/>
<ownedParameters xmi:id="tqHU6" name="that" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="8brvY" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation" name="&lt;="
precedence="#FpitR" type="#XEMMs">
<ownedComments body="True if oclText[self] is less than or equal to oclText[that].&#xA;"/>
<ownedParameters xmi:id="ejXb6" name="that" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="5+qvY" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclComparableGreaterThanOperation" name=">"
precedence="#FpitR" type="#XEMMs">
<ownedComments body="True if oclText[self] is greater than oclText[that].&#xA;"/>
<ownedParameters xmi:id="nKIU6" name="that" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="6crvY" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclComparableGreaterThanEqualOperation"
name=">=" precedence="#FpitR" type="#XEMMs">
<ownedComments body="True if oclText[self] is greater than or equal to oclText[that].&#xA;"/>
<ownedParameters xmi:id="kAnb6" name="that" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="7GliE" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclComparableCompareToOperation" name="compareTo"
type="#tYtCd">
<ownedComments body="Return -ve, 0, +ve according to whether self is less than, equal to , or greater than that.&#xA;&#xA;The compareTo operation should be commutative."/>
<ownedParameters xmi:id="hSadl" name="that" type="#zlfMH"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="zfDWR" isAbstract="true" name="OclElement" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclElement is the implicit supertype of any user-defined type that has no explicit supertypes. Operations defined&#xA;for OclElement are therefore applicable to all user-defined types.&#xA;"/>
<ownedOperations xmi:id="Qz0bc" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Return a set of all instances of the type and derived types of self.&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="j5LN3" name="dummy" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="2xDak" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclAsModelTypeOperation" isInvalidating="true"
name="oclAsModelType" type="#00OUM">
<ownedComments body="Evaluates to oclText[self], where oclText[self] is of the model type identified by oclText[TT].&#xA;&#xA;Most model elements have metamodel types for use with oclAsType, but no model type and so the return is oclText[invalid].&#xA;&#xA;Model elements such as UML's InstnaceSpecification that do support distinct model and metamodel types return oclText[self]&#xA;with the cast type oclText[TT] that may be used for further navigation.&#xA;If the actual model type of oclText[self] at evaluation time does not conform to oclText[TT],&#xA;then the oclAsType operation evaluates to oclText[invalid].&#xA;&#xA;If oclText[self] is a multiply classified instance, the current classification used for OCL navigation&#xA;is changed to the classification to which oclText[TT] conforms. The oclAsModelType call is not well-formed if&#xA;the classification is ambiguous."/>
<ownedParameters xmi:id="DIxh9" isTypeof="true" name="type" type="#00OUM"/>
<ownedPostconditions xmi:id="lEQzF" name="IsSelf">
<ownedSpecification xsi:type="pivot:ExpressionInOCL" body="result = self" type="#XEMMs">
<ownedBody xsi:type="pivot:OperationCallExp" name="=" referredOperation="#SYOvl" type="#XEMMs">
<ownedArguments xsi:type="pivot:VariableExp" name="self" referredVariable="#9sxzW" type="#zfDWR"/>
<ownedSource xsi:type="pivot:VariableExp" name="result" referredVariable="#1piwL" type="#00OUM"/>
</ownedBody>
<ownedContext xsi:type="pivot:ParameterVariable" xmi:id="9sxzW" name="self" type="#zfDWR"/>
<ownedParameters xsi:type="pivot:ParameterVariable" name="type" representedParameter="#DIxh9" type="#00OUM"/>
<ownedResult xsi:type="pivot:ParameterVariable" xmi:id="1piwL" name="result" type="#00OUM"/>
</ownedSpecification>
</ownedPostconditions>
<ownedSignature>
<ownedParameters xmi:id="00OUM" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="l58yN" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclBaseOperation" isRequired="false"
name="oclBase" type="#hlrMH">
<ownedComments body="Returns the application class that is extended by this extension element. Returns null for an orphan extension of nothing."/>
</ownedOperations>
<ownedOperations xmi:id="YjePj" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclBaseOperation" isRequired="false"
name="oclBase" type="#hlrMH">
<ownedComments body="Returns the application class conforming to base extended by this extension element. Returns null if no such class."/>
<ownedParameters xmi:id="0xwrX" name="base" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="lyeXH" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierOclContainerOperation" isRequired="false"
name="oclContainer" type="#zfDWR">
<ownedComments body="Returns the object for which self is a composed content or null if there is no such object."/>
</ownedOperations>
<ownedOperations xmi:id="ua8bl" implementationClass="org.eclipse.ocl.pivot.library.classifier.ClassifierOclContentsOperation" name="oclContents"
type="#U6ALG">
<ownedComments body="Returns the composed contents of self."/>
</ownedOperations>
<ownedOperations xmi:id="+IPyW" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclExtensionOperation" isInvalidating="true"
isRequired="false" name="oclExtension" type="#zfDWR">
<ownedComments body="Returns the application instance of the Stereotype that conforms to stereotype applied to this element. Returns invalid if more than one."/>
<ownedParameters xmi:id="jyuDS" name="stereotype" type="#ZNWlJ"/>
</ownedOperations>
<ownedOperations xmi:id="D+JXK" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclExtensionsOperation" name="oclExtensions"
type="#U6ALG">
<ownedComments body="Returns the application instances of the Stereotypes that conform to stereotype applied to this element."/>
<ownedParameters xmi:id="UjPCG" name="stereotype" type="#ZNWlJ"/>
</ownedOperations>
<ownedOperations xmi:id="omW7u" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclExtensionsOperation" name="oclExtensions"
type="#U6ALG">
<ownedComments body="Returns the application instances of all Stereotypes applied to this element."/>
</ownedOperations>
<ownedOperations xmi:id="hgQiG" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclIsModelKindOfOperation" name="oclIsModelKindOf"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if the type of oclText[self] conforms to the model type oclText[type].&#xA;That is, oclText[self] is of type oclText[type] or a subtype of oclText[type].&#xA;&#xA;The return is normally oclText[false] since few model elements have model types. UML's InstanceSpecification::classifier provides&#xA;a multiple classification for a model type.&#xA;"/>
<ownedParameters xmi:id="Cs1Ua" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="nIOBo" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclModelTypeOperation" isTypeof="true"
name="oclModelType" type="#zlfMH">
<ownedComments body="Evaluates to the most derived model type of which oclText[self] is currently an instance. If oclText[self] is an instance of a multiply&#xA;classified model type, the return is the most derived type of the current classification which is established&#xA;by an oclText[oclAsModelType()] call.&#xA;&#xA;The return is normally oclText[invalid] since few model elements have model types. UML's InstanceSpecification::classifier provides&#xA;a multiple classification for a model type."/>
</ownedOperations>
<ownedOperations xmi:id="kxvpX" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclModelTypesOperation" name="oclModelTypes"
type="#PRF4+">
<ownedComments body="Evaluates to all of the most derived model types of which oclText[self] is an instance. The return from oclText[oclModelTypes()]&#xA;is normally equivalent to that from oclText[oclModelType()] unless oclText[self] is an instance of multiply classified model type.&#xA;&#xA;The return is normally oclText[invalid] since few model elements have model types. UML's InstanceSpecification::classifier provides&#xA;a multiple classification for a model type.&#xA;"/>
</ownedOperations>
<ownedProperties xmi:id="IcnIy" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclContainerProperty" isRequired="false"
name="oclContainer" opposite="#i+8xQ" type="#zfDWR">
<ownedComments body="The object for which self is a composed content or null if there is no such object.&#xA;"/>
</ownedProperties>
<ownedProperties xmi:id="REFNQ" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclElementOclContentsProperty" name="oclContents"
opposite="#hXMRj" type="#U6ALG">
<ownedComments body="The composed contents of self."/>
</ownedProperties>
<ownedProperties xmi:id="i+8xQ" isImplicit="true" name="OclElement" opposite="#IcnIy" type="#158KG"/>
<ownedProperties xmi:id="hXMRj" isImplicit="true" name="OclElement" opposite="#REFNQ" type="#158KG"/>
</ownedClasses>
<ownedClasses xmi:id="+8+by" isAbstract="true" name="OclEnumeration" superClasses="#hlrMH">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The OclEnumeration type is the implicit supertype of any user Enumeration type.&#xA;FIXME This is probably obsolete now that static / meta-types clarified.&#xA;"/>
<ownedOperations xmi:id="vLVBY" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Return a set of all enumeration values of oclText[self].&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="Ggyic" name="dummy" type="#tYtCd"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:InvalidType" xmi:id="urQRp" instanceClassName="org.eclipse.ocl.pivot.InvalidType" isAbstract="true"
name="OclInvalid" superClasses="#7u3MH">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclInvalid is a type that conforms to all other types.&#xA;It has one single instance, identified as oclText[invalid].&#xA;Any property call applied on invalid results in oclText[invalid], except for the operations oclIsUndefined() and oclIsInvalid().&#xA;OclInvalid is itself an instance of the metatype InvalidType.&#xA;"/>
<ownedOperations xmi:id="20Esv" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="Returns oclText[invalid]."/>
<ownedParameters xmi:id="cVxzY" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="xXEsv" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="Returns oclText[invalid]."/>
<ownedParameters xmi:id="rchsY" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="f,L9H" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Returns oclText[invalid].&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="2EKcK" name="dummy" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="3mHTu" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanAndOperation" isRequired="false"
isValidating="true" name="and" precedence="#VT87C" type="#XEMMs">
<ownedParameters xmi:id="o9Mmw" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="XCoFh" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanImpliesOperation" isRequired="false"
isValidating="true" name="implies" precedence="#1Odhg" type="#XEMMs">
<ownedParameters xmi:id="IrjVA" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="DoKPW" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsSetOperation" name="oclAsSet"
type="#UQF4+"/>
<ownedOperations xmi:id="QOXxW" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation" name="oclAsType"
type="#e0WDG">
<ownedParameters xmi:id="1S9Sb" isTypeof="true" name="type" type="#e0WDG"/>
<ownedSignature>
<ownedParameters xmi:id="e0WDG" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="FGLX2" isRequired="false" name="oclBadOperation" type="#jbMkR">
<ownedComments body="An oclBadOperation may be used as a placeholder in an unsuccessfully created OCLExpression."/>
</ownedOperations>
<ownedOperations xmi:id="gy0od" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsInvalidOperation" isValidating="true"
name="oclIsInvalid" type="#XEMMs"/>
<ownedOperations xmi:id="rtp9s" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation" name="oclIsKindOf"
type="#XEMMs">
<ownedParameters xmi:id="kk8Vd" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="R2JN9" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsTypeOfOperation" name="oclIsTypeOf"
type="#XEMMs">
<ownedParameters xmi:id="yqlpk" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="5RmCx" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsUndefinedOperation" isValidating="true"
name="oclIsUndefined" type="#XEMMs"/>
<ownedOperations xmi:id="dncW5" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclTypeOperation" isTypeof="true"
name="oclType" type="#zlfMH"/>
<ownedOperations xmi:id="D3wSu" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanAndOperation" isRequired="false"
isValidating="true" name="or" precedence="#BEt7C" type="#XEMMs">
<ownedParameters xmi:id="ENU7q" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="Xfrkw" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyToStringOperation" name="toString"
type="#AlwVZ">
<ownedComments body="Returns 'invalid'."/>
</ownedOperations>
<ownedProperties xmi:id="QSjNW" isRequired="false" name="oclBadProperty" opposite="#c8rKW" type="#jbMkR">
<ownedComments body="An oclBadProperty may be used as a placeholder in an unsuccessfully created OCLExpression."/>
</ownedProperties>
</ownedClasses>
<ownedClasses xmi:id="ufpqK" isAbstract="true" name="OclLambda" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclLambda is the implicit supertype of all Lambda types. The operations defined for OclLambda&#xA;therefore apply to all lambda expressions.&#xA;"/>
</ownedClasses>
<ownedClasses xmi:id="+jBYt" isAbstract="true" name="OclMessage" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="OclMessage&#xA;This sub clause contains the definition of the standard type OclMessage.&#xA;As defined in this sub clause, each ocl message type is actually a template type with one parameter.&#xA;‘T’ denotes the parameter.&#xA;A concrete ocl message type is created by substituting an operation or signal for the T.&#xA;&#xA;The predefined type OclMessage is an instance of MessageType.&#xA;Every OclMessage is fully determined by either the operation, or signal given as parameter.&#xA;Note that there is conceptually an undefined (infinite) number of these types,&#xA;as each is determined by a different operation or signal.&#xA;These types are unnamed. Every type has as attributes the name of the operation or signal,&#xA;and either all formal parameters of the operation, or all attributes of the signal.&#xA;OclMessage is itself an instance of the metatype MessageType.&#xA;&#xA;OclMessage has a number of predefined operations, as shown in the OCL Standard Library.&#xA;"/>
<ownedOperations xmi:id="EX,aT" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="hasReturned"
type="#XEMMs">
<ownedComments body="True if type of template parameter is an operation call, and the called operation has returned a value.&#xA;This implies the fact that the message has been sent. False in all other cases.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="WqoFB" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="isOperationCall"
type="#XEMMs">
<ownedComments body="Returns oclText[true] if the OclMessage represents the sending of a UML Operation call.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="lZ5A7" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="isSignalSent"
type="#XEMMs">
<ownedComments body="Returns oclText[true] if the OclMessage represents the sending of a UML Signal.&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="YNUsC" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" isRequired="false"
name="result" type="#jbMkR">
<ownedComments body="Returns the result of the called operation, if type of template parameter is an operation call,&#xA;and the called operation has returned a value. Otherwise the oclText[invalid] value is returned.&#xA;"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:SelfType" xmi:id="zlfMH" instanceClassName="org.eclipse.ocl.pivot.SelfType" isAbstract="true" name="OclSelf"
superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The pseudo-type OclSelf denotes the statically determinate type of oclText[self] in Operation&#xA;and Iteration signatures. Instances of OclSelf are never created.&#xA;"/>
</ownedClasses>
<ownedClasses xmi:id="IebtF" isAbstract="true" name="OclState" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>UML</values>
</ownedDetails>
</ownedAnnotations>
</ownedClasses>
<ownedClasses xmi:id="ZNWlJ" isAbstract="true" name="OclStereotype" superClasses="#hlrMH">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclStereotype is the implicit supertype of any UML stereotype. Operations defined&#xA;for OclStereotype are therefore applicable to all UML stereotypes.&#xA;"/>
<ownedOperations xmi:id="eKWZo" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#UQF4+">
<ownedComments body="Return a set of all instances of the stereotype and derived types of self.&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="5Tbqr" name="dummy" type="#tYtCd"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="D4eXY" isAbstract="true" name="OclSummable" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclSummable defines the sum and zero operations used by the Collection::sum iteration. Only types that provide derived&#xA;sum and zero implementations may be summed."/>
<ownedOperations xmi:id="A768F" name="sum" type="#zlfMH">
<ownedComments body="Return the sum of self and that.&#xA;&#xA;The sum operation should be associative."/>
<ownedParameters xmi:id="SGarG" name="that" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="U7w9w" name="zero" type="#zlfMH">
<ownedComments body="Return the 'zero' value of self to initialize a summation.&#xA;&#xA;zero().sum(self) = self."/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id=",qHxF" isAbstract="true" name="OclTuple" superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclTuple is the implicit supertype of all Tuple types. The operations defined for OclTuple&#xA;therefore apply to all tuples.&#xA;"/>
<ownedOperations xmi:id="DHU8X" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedParameters xmi:id="1um3j" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="+pT8X" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedParameters xmi:id="E2Wwj" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xmi:id="hlrMH" isAbstract="true" name="OclType" superClasses="#zfDWR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclType is the implicit supertype of any UML type. Operations defined&#xA;for OclType are therefore applicable to all UML types.&#xA;"/>
<ownedOperations xmi:id="N,qUJ" implementationClass="org.eclipse.ocl.pivot.library.classifier.OclTypeConformsToOperation" name="conformsTo"
type="#XEMMs">
<ownedComments body="Returns true if type2 conforms to self."/>
<ownedParameters xmi:id="8zd++" isRequired="false" name="type2" type="#hlrMH"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:VoidType" xmi:id="7u3MH" instanceClassName="org.eclipse.ocl.pivot.VoidType" isAbstract="true" name="OclVoid"
superClasses="#jbMkR">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>OCL</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The type OclVoid is a type that conforms to all other types except OclInvalid.&#xA;It has one single instance, identified as oclText[null], that corresponds with the UML LiteralNull value specification.&#xA;Any property call applied on oclText[null] results in oclText[invalid], except for the&#xA;oclIsUndefined(), oclIsInvalid(), =(OclAny) and &lt;>(OclAny) operations.&#xA;However, by virtue of the implicit conversion to a collection literal,&#xA;an expression evaluating to oclText[null] can be used as source of collection operations (such as ‘isEmpty’).&#xA;If the source is the oclText[null] literal, it is implicitly converted to Bag{}.&#xA;&#xA;OclVoid is itself an instance of the metatype VoidType.&#xA;"/>
<ownedOperations xmi:id="vbErx" implementationClass="org.eclipse.ocl.pivot.library.string.StringConcatOperation" name="+" precedence="#qLHeo"
type="#AlwVZ">
<ownedComments body="The concatenation of oclText[null] and s.&#xA;"/>
<ownedParameters xmi:id="Rfkrl" isRequired="false" name="s" type="#AlwVZ"/>
</ownedOperations>
<ownedOperations xmi:id="P7CqP" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedParameters xmi:id="RSdbY" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="KeCqP" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="Redefines the OclAny operation, returning oclText[true] if object is oclText[null], oclText[invalid]&#xA;if object is oclText[invalid], oclText[false] otherwise.&#xA;"/>
<ownedParameters xmi:id="gZNUY" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="4FK7n" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyUnsupportedOperation" name="allInstances"
type="#PRF4+">
<ownedComments body="Returns oclText[Set{null}].&#xA;&#xA;@Deprecated - retained with broken signature for referential API compatibility."/>
<ownedParameters xmi:id="rB2DK" name="dummy" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="QtFRO" implementationClass="org.eclipse.ocl.pivot.library.oclvoid.OclVoidAndOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="and" precedence="#VT87C" type="#XEMMs">
<ownedParameters xmi:id="d64Nw" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="Y376g" implementationClass="org.eclipse.ocl.pivot.library.string.StringConcatOperation" name="concat" type="#AlwVZ">
<ownedComments body="The concatenation of oclText[null] and s.&#xA;"/>
<ownedParameters xmi:id="Wc4yV" isRequired="false" name="s" type="#AlwVZ"/>
</ownedOperations>
<ownedOperations xmi:id="wImDB" implementationClass="org.eclipse.ocl.pivot.library.oclvoid.OclVoidImpliesOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="implies" precedence="#1Odhg" type="#XEMMs">
<ownedParameters xmi:id="9nP9," isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="XHfd6" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanNotOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="not" precedence="#tgQwH" type="#XEMMs"/>
<ownedOperations xmi:id="cuIN2" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsSetOperation" name="oclAsSet"
type="#UQF4+"/>
<ownedOperations xmi:id="pUVv2" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation" isInvalidating="true"
isRequired="false" name="oclAsType" type="#,NgLC">
<ownedParameters xmi:id="qPp6a" isTypeof="true" name="type" type="#,NgLC"/>
<ownedSignature>
<ownedParameters xmi:id=",NgLC" name="TT"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="54ym9" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsInvalidOperation" isValidating="true"
name="oclIsInvalid" type="#XEMMs"/>
<ownedOperations xmi:id="E0n7M" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation" name="oclIsKindOf"
type="#XEMMs">
<ownedParameters xmi:id="Zho9c" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="q8HLd" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsTypeOfOperation" name="oclIsTypeOf"
type="#XEMMs">
<ownedParameters xmi:id="nnRRk" name="type" type="#hlrMH"/>
</ownedOperations>
<ownedOperations xmi:id="SYkAR" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsUndefinedOperation" isValidating="true"
name="oclIsUndefined" type="#XEMMs"/>
<ownedOperations xmi:id="2taUZ" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclTypeOperation" isTypeof="true"
name="oclType" type="#zlfMH"/>
<ownedOperations xmi:id="FF3Q3" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyOclTypesOperation" name="oclTypes"
type="#PRF4+"/>
<ownedOperations xmi:id="c9uQO" implementationClass="org.eclipse.ocl.pivot.library.oclvoid.OclVoidOrOperation" isInvalidating="true"
isRequired="false" isValidating="true" name="or" precedence="#BEt7C" type="#XEMMs">
<ownedParameters xmi:id="5JAjq" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
<ownedOperations xmi:id="wlpiQ" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyToStringOperation" name="toString"
type="#AlwVZ">
<ownedComments body="Returns oclText[null]."/>
</ownedOperations>
<ownedOperations xmi:id="UHLRO" implementationClass="org.eclipse.ocl.pivot.library.logical.BooleanXorOperation" isRequired="false"
name="xor" precedence="#ZtB8C" type="#XEMMs">
<ownedParameters xmi:id="RsJkx" isRequired="false" name="b" type="#XEMMs"/>
</ownedOperations>
</ownedClasses>
<ownedClasses xsi:type="pivot:CollectionType" xmi:id="Vw5fK" instanceClassName="java.util.Collection" isAbstract="true" name="OrderedCollection"
superClasses="#cfVYj">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Collection</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The OrderedCollection type provides the shared functionality of the OrderedSet and Sequence&#xA;collections for which the elements are ordered.&#xA;The common supertype of OrderedCollection is Collection.&#xA;"/>
<ownedOperations xmi:id="ArMlL" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionAtOperation" isInvalidating="true"
isRequired="false" name="at" type="#feFHs">
<ownedComments body="The i-th element of ordered collection.&#xA;"/>
<ownedParameters xmi:id="9iy,," name="index" type="#tYtCd"/>
</ownedOperations>
<ownedOperations xmi:id="mCC4m" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionFirstOperation" isInvalidating="true"
isRequired="false" name="first" type="#feFHs">
<ownedComments body="The first element in oclText[self].&#xA;"/>
</ownedOperations>
<ownedOperations xmi:id="gSZ5U" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionIndexOfOperation"
isRequired="false" name="indexOf" type="#tYtCd">
<ownedComments body="The index of object obj in the ordered collection. Returns null for an out of bound index.&#xA;"/>
<ownedParameters xmi:id="C9sOh" isRequired="false" name="obj" type="#feFHs"/>
</ownedOperations>
<ownedOperations xmi:id="MC+Qh" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionLastOperation" isInvalidating="true"
isRequired="false" name="last" type="#feFHs">
<ownedComments body="The last element in oclText[self].&#xA;"/>
</ownedOperations>
<ownedSignature>
<ownedParameters xmi:id="feFHs" name="T"/>
</ownedSignature>
</ownedClasses>
<ownedClasses xsi:type="pivot:OrderedSetType" xmi:id="fIXUp" instanceClassName="org.eclipse.ocl.pivot.values.OrderedSet" name="OrderedSet"
superClasses="#zE,BO #Xv5mH">
<ownedAnnotations xsi:type="pivot:Annotation" name="http://www.omg.org/ocl">
<ownedDetails name="ClassGroup">
<values>Collection</values>
</ownedDetails>
</ownedAnnotations>
<ownedComments body="The OrderedSet is a Set, the elements of which are ordered.&#xA;It contains no duplicates. OrderedSet is itself an instance of the metatype OrderedSetType.&#xA;An OrderedSet is not a subtype of Set, neither a subtype of Sequence.&#xA;The common supertype of Sets and OrderedSets is Collection.&#xA;"/>
<ownedOperations xmi:id="oLqxV" implementationClass="org.eclipse.ocl.pivot.library.collection.SetMinusOperation" name="-" precedence="#qLHeo"
type="#fIXUp">
<ownedComments body="The elements of oclText[self], which are not in s.&#xA;"/>
<ownedParameters xmi:id="mfxzi" name="s" type="#xUwyY"/>
</ownedOperations>
<ownedOperations xmi:id="ju9Jh" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyNotEqualOperation" name="&lt;>"
precedence="#YwCPU" type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] unless oclText[self] and s contain the same elements.&#xA;"/>
<ownedParameters xmi:id="V4hoi" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="eR9Jh" implementationClass="org.eclipse.ocl.pivot.library.oclany.OclAnyEqualOperation" name="=" precedence="#YwCPU"
type="#XEMMs">
<ownedComments body="Evaluates to oclText[true] if oclText[self] and s contain the same elements.&#xA;"/>
<ownedParameters xmi:id="k,Rhi" isRequired="false" name="object2" type="#zlfMH"/>
</ownedOperations>
<ownedOperations xmi:id="TNM23" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionAppendOperation"
name="append" type="#fIXUp">
<ownedComments body="The set of elements, consisting of all elements of oclText[self], followed by object.&#xA;"/>
<ownedParameters xmi:id="xVwGI" isRequired="false" name="object" type="#53+C2"/>
</ownedOperations>
<ownedOperations xmi:id="FuPDG" implementationClass="org.eclipse.ocl.pivot.library.collection.OrderedCollectionAppendAllOperation"
name="appendAll" type="#fIXUp">
<ownedComments body="The set of elements, consisting of all elements of oclText[self], followed by objects.&#xA;"/>
<ownedParameters xmi:id="wakcI" name="objects" type="#zE,BO"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="05nm," implementationClass="org.eclipse.ocl.pivot.library.iterator.ClosureIteration"
name="closure" type="#fIXUp">
<ownedComments body="The closure of applying body transitively to every distinct element of the source collection.&#xA;"/>
<ownedIterators xmi:id="tQSGS" name="i" type="#53+C2"/>
<ownedParameters xmi:id="Wiwly" isRequired="false" name="lambda" type="#e5sKD"/>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="jV1iE" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectIteration"
name="collect" type="#,aKE3">
<ownedComments body="The Sequence of elements that results from applying body to every member of the source set.&#xA;The result is flattened. Notice that this is based on collectNested, which can be of different type depending on the type of source.&#xA;collectNested is defined individually for each subclass of CollectionType.&#xA;"/>
<ownedIterators xmi:id="gtloG" isRequired="false" name="i" type="#53+C2"/>
<ownedParameters xmi:id="J,DIn" isRequired="false" name="lambda" type="#ekZDz"/>
<ownedSignature>
<ownedParameters xmi:id="ftoBy" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xsi:type="pivot:Iteration" xmi:id="6r5Ys" implementationClass="org.eclipse.ocl.pivot.library.iterator.CollectNestedIteration"
name="collectNested" type="#2wnD2">
<ownedComments body="The sequence of elements that results from applying body to every member of the source ordered collection.&#xA;"/>
<ownedIterators xmi:id="ba+Lw" isRequired="false" name="i" type="#53+C2"/>
<ownedParameters xmi:id="EscrQ" isRequired="false" name="lambda" type="#,dI4y"/>
<ownedSignature>
<ownedParameters xmi:id="uWtir" name="V"/>
</ownedSignature>
</ownedOperations>
<ownedOperations xmi:id="QBOdw" implementationClass="org.eclipse.ocl.pivot.library.collection.CollectionExcludingOperation" name="excluding"