
(object Petal
    version    	50
    _written   	"Rose 8.3.0407.2800"
    charSet    	0)

(object Class_Category "data"
    is_unit    	TRUE
    is_loaded  	TRUE
    quid       	"453E0C08006D"
    stereotype 	"metamodel"
    exportControl 	"Public"
    logical_models 	(list unit_reference_list
	(object Class_Category "classes"
	    quid       	"44D751530256"
	    documentation 	"BOs, BONodes, associations, regardless the association implementation (foreign keys, persistence structures, IDs, ...). Nodes have attributes that have types. Resulting is a datatype for the node that can be used, e.g., in the action language."
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "Association"
		    attributes 	(list Attribute_Set)
		    quid       	"44321DA40150"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"453F571D025B"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030"))
		    nestedClasses 	(list nestedClasses
			(object Class "UniquenessOnBothEndsMustBeTheSame"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Uniqueness on both ends must be the same'")))
			    quid       	"478BCB6A02F5"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"478BCB7B0007"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Association
|inv:
|  self.ends->forAll( e1, e2 : AssociationEnd |
|              e1 <> e2 implies e1.type.unique = e2.type.unique)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "AtMostOneCompositeEnd"
			    quid       	"493FCCBC0290"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"493FCCCB01D4"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Association
|inv:
|  self.ends->select(composite)->size() < 2
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "AtLeastOneNavigableEnd"
			    quid       	"494140D20251"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"494140DE0213"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Association
|inv:
|  self.ends->select(ae:AssociationEnd | ae.navigable)->notEmpty()
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "AtMostOneEqualityContributionForTwoValueClasses"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Associations between two value types that affect equality of both types are currently not supported. It would lead to a recursive equality definition and therefore to recursive value constructors.'")))
			    quid       	"49422D7A004E"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49422D7A006D"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Association
|inv:
|  self.ends->select(contributesToEquality and type.clazz.valueType)->size() < 2
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "AtMostOneOrderedEnd"
			    quid       	"49788E6D003E"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49788E7903A9"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Association
|inv:
|  self.ends->select(ae|ae.type.ordered)->size() < 2
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "Signature"
		    attributes 	(list Attribute_Set)
		    quid       	"4432198602CB"
		    documentation 	
|Defines an abstract callable operation or block signature with input parameter types, return type and exception / fault types. A signature may also be implemented by association navigation expressions or link set manipulation statements.
|
|The enforcement of side effect freeness is the SignatureImplementation subclasses' responsibility.
		    
		    operations 	(list Operations
			(object Operation "conformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context Signature::conformsTo(s:Signature):Boolean
|body:
|  if self = s then
|    true
|  else
|    self.conformsToExcluding(s, Sequence{}, Sequence{})
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"457589E201DD"
			    parameters 	(list Parameters
				(object Parameter "s"
				    quid       	"45DD89D80282"
				    type       	"Signature"
				    quidu      	"4432198602CB"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsToExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context Signature::conformsToExcluding(s:Signature, excludingConforming:Sequence(SapClass), excludingTo:Sequence(SapClass)):Boolean
|body:
|  if s = self then
|    true
|  else
|    let nameConforms:Boolean = self.oclIsKindOf(MethodSignature) and s.oclIsKindOf(MethodSignature) 
|       implies s.oclAsType(MethodSignature).name = self.oclAsType(MethodSignature).name in
|    nameConforms and
|    (s.sideEffectFree implies self.sideEffectFree) and
|    s.input->size() = self.input->size() and
|    Sequence{1..self.input->size()}->
|      forAll(i | s.input->at(i).getType().conformsToExcluding(self.input->at(i).getType(), excludingConforming, excludingTo)) and
|    s.output->size() = self.output->size() and
|    Sequence{1..self.output->size()}->
|      forAll(i | self.output->asSequence()->at(i).conformsToExcluding(s.output->asSequence()->at(i), excludingConforming, excludingTo))
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45DD4F8E0018"
			    documentation 	"Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."
			    parameters 	(list Parameters
				(object Parameter "s"
				    attributes 	(list Attribute_Set)
				    quid       	"457589EB003C"
				    type       	"Signature"
				    quidu      	"4432198602CB")
				(object Parameter "excludingConforming"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"45DDB76C0185"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingTo"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"45DDB77202ED"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "getNamedValuesInScope"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context Signature::getNamedValuesInScope():Set(NamedValue)
|body:
|  self.getOwningClass().formalObjectParameters->asSet()
				    )))
			    quid       	"4B84F8BF030D"
			    documentation 	"For a signature, only the owning class's formal object parameters are in scope."
			    result     	"NamedValue"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4522A56F0149")
			(object Operation "getOwningClass"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..1"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context Signature::getOwningClass():SapClass
|body:
|  if self.oclIsKindOf(MethodSignature) then
|    let owner:SignatureOwner = self.oclAsType(MethodSignature).owner in
|    if owner.oclIsKindOf(SapClass) then
|      owner.oclAsType(SapClass)
|    else
|      null    -- e.g., TypeAdapter
|    endif
|  else
|    self.oclAsType(FunctionSignature).getImplementedAnonymousFunctionExpression().getOwningClass()
|  endif
				    )))
			    quid       	"4B84F8F50186"
			    result     	"SapClass"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432171B031E"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "sideEffectFree"
			    quid       	"489D4B780261"
			    documentation 	
|If this flag is set, the signature's implementation must not use a link-modifying implementation on any object of an entity class. It is permissible for an implementation to create value objects. All signatures being called by an implementation must then also have this flag set.
|
|This flag is also relevant for conformance. A signature only conforms to one with this flag set if it also has this flag set.
|
|Note that activities that do not modify the link structure may still have side effects outside of the scope of this programming model, such as producing a log entry in some persistence layer about a query being executed. Such side effects that are outside of this programming model do not count as a side effect in the sense of this flag. In particular, they do not make the program's semantics depend on execution order of such signature implementations.
			    
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    abstract   	TRUE
		    nestedClasses 	(list nestedClasses
			(object Class "OnlyTrailingOptionalParameters"
			    quid       	"49D2B379007D"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49D2B38C008C"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Signature
|inv:
|  self.input->forAll(p | p.defaultValue->notEmpty() implies Sequence{(self.input->indexOf(p)+1)..self.input->size()}->forAll(
|    i | self.input->at(i).defaultValue->notEmpty()))
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "AssociationEnd"
		    quid       	"44EC55FB03B8"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"457436EC01C4"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030"))
		    operations 	(list Operations
			(object Operation "otherEnd"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context AssociationEnd::otherEnd():AssociationEnd
|body:
|  association.ends->select(ae|ae <> self)->first()
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"456DC3DA0356"
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "navigable"
			    quid       	"44EC567E00FA"
			    documentation 	"Means that the association can be navigated in that direction towards this end. Note that non-navigability does not serve as a security-related feature. If all objects of the type at the other end can be enumerated and because the association has to be navigable in at least one direction, it will be possible to find out those objects on the other end that are linked to an instance which semantically implements navigation again, only potentially very slowly if the extent to enumerate is large."
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public")
			(object ClassAttribute "composite"
			    quid       	"44EC7CEF00F1"
			    documentation 	
|Expresses ownership that for entity-to-entity associations also implies delete propagation. Only one of the two association ends can be marked as composite. The end marked in this way attaches to the "owning" class whereas the otherEnd() attaches to the "owned" class.
|
|Composition cannot be used for value classes. Values cannot be owned, and values cannot own anything.
			    
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public")
			(object ClassAttribute "contributesToEquality"
			    quid       	"49414120003E"
			    documentation 	
|If true, this association end contributes to the equality of the exposing class. An equality-contributing association end must be exposed (maybe with private visibility) because it is relevant for the contract of that class.
|
|It is a questionable construct to have both ends contribute to equality if both classes are value classes because it would mean that values of either of the classes can be identified only in pairs. The equality definition would be recursive, and an implementation would have to understand this and cut short the recursion, comparing only all other equality-related association end values.
			    
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    nestedClasses 	(list nestedClasses
			(object Class "ExposingClassesEqualOppositeEndsType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Exposing classes equal opposite ends type'")))
			    quid       	"4574A7040339"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4574A71E0282"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context AssociationEnd
|inv:
|  self.signatureImplementations.implements_.owner->forAll(c:SignatureOwner | c = self.otherEnd().type.clazz)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "NoCompositionWithValueClass"
			    quid       	"49411E10033C"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49411E1E01A5"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context AssociationEnd
|inv:
|  self.composite implies self.association.ends.type->forAll(ctd:ClassTypeDefinition | not ctd.clazz.valueType)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "EqualityContributionsMustBeExposedAndNavigable"
			    quid       	"49414222002E"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49414238035B"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context AssociationEnd
|inv:
|  self.contributesToEquality implies (self.otherEnd().signatureImplementations->notEmpty() and self.otherEnd().navigable)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "EqualityContributingEndOnValueMustHaveUnlimitedUpperBounds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'If the association is equality relevant for the value and it is not the only attribute of the value, there may be an unlimited number of values connected to the other end. The multiplicity of the end must be *.'")))
			    quid       	"497443BF0271"
			    documentation 	"If the association is equality relevant for the value and it is not the only attribute of the value, there may be an unlimited number of values connected to the other end. The multiplicity of the end must be *."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4974440300FA"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context AssociationEnd
|inv:
|  (self.type.clazz.valueType and self.contributesToEquality and
|   self.type.clazz.getAssociationEnds()->exists(ae |
|     ae <> self and ae.contributesToEquality)) implies
|  self.type.isMany()
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "SapClass"
		    attributes 	(list Attribute_Set
			(object Attribute
			    tool       	"MOF"
			    name       	"sap2mof.requiresPartition"
			    value      	TRUE))
		    quid       	"4432171B031E"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"44ED67500396"
			    supplier   	"Logical View::behavioral::events::EventProducer"
			    quidu      	"44ECC164016C")
			(object Inheritance_Relationship
			    quid       	"48A041320196"
			    supplier   	"Logical View::data::classes::SignatureOwner"
			    quidu      	"48A0412B002E"))
		    operations 	(list Operations
			(object Operation "isAbstract"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::isAbstract():Boolean
|body:
|  not (self.allSignatures()->forAll(s:MethodSignature | not s.isAbstract()))
				    ))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45DE22500389"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "isParameterizedClassDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::isParameterizedClassDefinition():Boolean
|body:
|  self.parameterization->notEmpty()
				    ))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45E5ABB003DE"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::conformsTo(type:SapClass):Boolean
|body:
|  if self.oclIsUndefined() then
|    false
|  else
|    self.conformsToExcluding(type, Sequence{}, Sequence{})
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"4522A72200CC"
			    documentation 	"A class A conforms to a class B if they are the same or if there is a chain of (TypeAdapter_i, Class_i) pairs (0<=i<=n) where TypeAdapter_0 adapts A to Class_0, and where Class_n is B."
			    parameters 	(list Parameters
				(object Parameter "type"
				    quid       	"4522A7320075"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    semantics  	(object Semantic_Info
				PDL        	
|post:
|    TODO; the set of operations and exposed association ends owned by this class plus those owned by the classes to which this class
|delegates, plus the operations and exposed association ends of any type adapter that adapts this class need to fulfill the set of signatures of and association ends expoed by the "type" class, including those of the classes to which "type" delegates, but *not* the operations owned by any type adapters attached to "type" because those are not supposed to affect the requirements for conforming to "type".
				)
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "allSignatures"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::allSignatures():Set(MethodSignature)
|body:
|self.allSignaturesExcluding(Set{})
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45828D3E0276"
			    documentation 	"Computes all locally-defined signatures plus those signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter, plus allSignatures() recursively of all classes to which this class delegates."
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "delegatesTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::delegatesTo():Set(SapClass)
|body:
|  if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then
|    self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.delegatesTo()
|  else
|    if self.oclIsKindOf(data::generics::FormalTypeParameter) then
|      self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.delegatesTo())->flatten()->asSet()
|    else
|      -- TODO improve OCL impact analysis algorithm so that this doesn't kill performance:
|      -- Set{}  -- use this for good performance
|      self.getAssociationEnds().otherEnd()->select(delegation->notEmpty()).type.clazz->reject(c|c=self)->asSet()    -- currently bad performance
|    endif
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45828E740204"
			    documentation 	
|A class can delegate to another class via an attached association end that in turn has attached a Delegation element. The delegating class by this exposes all operations and association ends exposed by the delegate class (recursively). The semantics of such a delegation is that when invoked, the invocation will be forwarded to the delegate object transparently and recursively.
|
|Note, that TypeAdapter objects cannot delegate because they cannot have association ends attached to them. They can only expose association ends whose other end is attached to a class to which the TypeAdapter conforms.
			    
			    result     	"SapClass"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432171B031E")
			(object Operation "conformsToExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::conformsToExcluding(type:SapClass, excludingConforming:Sequence(SapClass), excludingTo:Sequence(SapClass)):Boolean
|body:
|  if oclIsUndefined() then
|    false
|  else
|  if self = type then
|   true
|  else
|    if Sequence{1..excludingConforming->size()}->exists(i|
|        excludingConforming->asSequence()->at(i) = self and excludingTo->asSequence()->at(i) = type) then
|     true
|  else
|    self.adapters->exists(a|a.to.conformsToExcluding(type, excludingConforming->including(self), excludingTo->including(type))) or
|    (if self.oclIsKindOf(data::generics::FormalTypeParameter) then
|        if self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->notEmpty() then
|            self.oclAsType(data::generics::FormalTypeParameter).typeConstraint.conformsToExcluding(type, excludingConforming->including(self), excludingTo->including(type))
|        else
|            false
|        endif
|    else
|        false
|    endif)
|  endif
|  endif
|endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45DD493C0152"
			    documentation 	"Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."
			    parameters 	(list Parameters
				(object Parameter "type"
				    attributes 	(list Attribute_Set)
				    quid       	"45DD4D150271"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingConforming"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"45DD4D2C03BF"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingTo"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"45DDB9360315"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "signaturesWithDelegation"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::signaturesWithDelegation():Set(MethodSignature)
|body:
|  self.signaturesWithDelegationExcluding(Set{})
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47862CA2038A"
			    documentation 	"Signature declared directly by this class and those signatures obtained by delegation, recursively."
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "delegatedSignatures"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::delegatedSignatures():Set(MethodSignature)
|body:
|  self.delegatesTo().signaturesWithDelegation()->flatten()->asSet()
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47E4A6EE028B"
			    documentation 	"Signatures obtained by delegation recursively."
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "adaptedSignatures"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::adaptedSignatures():Set(MethodSignature)
|body:
|  self.adaptedSignaturesExcluding(Set{})
|
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47E4A77602E6"
			    documentation 	"Computes signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter"
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "adaptedSignaturesExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::adaptedSignaturesExcluding(excluding:Set(SapClass)):Set(MethodSignature)
|body:
|  if excluding->count(self)=0 then
|    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then
|      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.adaptedSignaturesExcluding(excluding->including(self))
|    else
|      if self.oclIsKindOf(data::generics::FormalTypeParameter) then
|        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.adaptedSignaturesExcluding(excluding->including(self)))->flatten()->asSet()
|      else
|        self.adapters.allSignaturesExcluding(excluding->including(self))
|          ->select(s | not self.ownedSignatures->exists(os | os.conformsTo(s)))
|          ->flatten()->asSet()
|      endif
|    endif
|  else
|    Set{}
|  endif
|
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47E4B8DB01D6"
			    documentation 	"Computes signatures offered by any type adapter adapting this class to another class, minus those signatures redefined in the local class"
			    parameters 	(list Parameters
				(object Parameter "excluding"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"47EAAAAB03AE"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "allSignaturesExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::allSignaturesExcluding(excluding:Set(SapClass)):Set(MethodSignature)
|body:
|  if excluding->count(self)=0 then
|    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then
|      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.allSignaturesExcluding(excluding->including(self))
|    else
|      if self.oclIsKindOf(data::generics::FormalTypeParameter) then
|        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.allSignaturesExcluding(excluding->including(self)))->flatten()->asSet()
|      else
|        self.signaturesWithDelegationExcluding(excluding)->union(self.adaptedSignaturesExcluding(excluding))
|      endif
|    endif
|  else
|    Set{}    
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47E4BEFB0049"
			    documentation 	"Computes all locally-defined signatures plus those signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter, plus allSignatures() recursively of all classes to which this class delegates."
			    parameters 	(list Parameters
				(object Parameter "excluding"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"47EAAA740132"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "signaturesWithDelegationExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::signaturesWithDelegationExcluding(excluding:Set(SapClass)):Set(MethodSignature)
|body:
|if excluding->count(self)=0 then 
|    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then
|      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.signaturesWithDelegationExcluding(excluding->including(self))
|    else
|      if self.oclIsKindOf(data::generics::FormalTypeParameter) then
|        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.signaturesWithDelegationExcluding(excluding->including(self)))->flatten()->asSet()
|      else
|        self.ownedSignatures->union(self.delegatesTo().signaturesWithDelegationExcluding(excluding->including(self)))->flatten()->asSet()
|      endif
|    endif
|else
|  Set{}
|endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47EAB2A10094"
			    documentation 	"Signature declared directly by this class and those signatures obtained by delegation, recursively."
			    parameters 	(list Parameters
				(object Parameter "excluding"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"47EAB2AC0343"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "delegatedSignaturesExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::delegatedSignaturesExcluding(excluding:Set(SapClass)):Set(MethodSignature)
|body:
|if excluding->count(self)=0 then
|  self.delegatesTo().signaturesWithDelegationExcluding(excluding->including(self))->flatten()->asSet()
|else
|  Set{}
|endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47EAB40A028F"
			    documentation 	"Signatures obtained by delegation recursively."
			    parameters 	(list Parameters
				(object Parameter "excluding"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"47EAB4160083"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "getConformingClasses"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getConformingClasses():Set(SapClass)
|body:
|    self.adaptedBy.adapted.getConformingClasses()->including(self)->asSet()
|
|
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true")))
			    quid       	"488083D701C5"
			    result     	"SapClass"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432171B031E")
			(object Operation "getAssociationEnds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getAssociationEnds():Set(AssociationEnd)
|body:
|  self.elementsOfType->collect(associationEnd->asSet())->asSet()
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true")))
			    quid       	"4976387602F5"
			    documentation 	"Retrieves those association ends that use this class in their type definition."
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8")
			(object Operation "getEqualityRelevantAssociationEnds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getEqualityRelevantAssociationEnds():Set(AssociationEnd)
|body:
|  self.getAssociationEnds()->select(ae|ae.contributesToEquality)
				    )))
			    quid       	"4976394D03D7"
			    documentation 	"Obtains all association ends that use this class in their type definition and that contribute to this class's equality, indicated by their contributesToEquality attribute being set to true."
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8")
			(object Operation "getConformsToClasses"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getConformsToClasses():Set(SapClass)
|body:
|    self.adapters.to.getConformsToClasses()->including(self)->asSet()
				    )))
			    quid       	"49784E36029F"
			    documentation 	"Determines all classes to which this class conforms, directly and transitively, through chains of TypeAdapters. The result includes this class itself."
			    result     	"SapClass"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432171B031E")
			(object Operation "getConformsToAssociationEnds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getConformsToAssociationEnds():Set(AssociationEnd)
|body:
|    self.getConformsToClasses().getAssociationEnds()->asSet()
				    )))
			    quid       	"49784F2C02FD"
			    documentation 	
|Determines all association ends to whose type this class conforms. This means that an instance of this class can be inserted on that respective end of the corresponding association. For example, if there is an association between Order and Item with ends "order" and "items" and there are classes SalesOrder and SalesOrderItem conforming to Order and Item, respectively, then the "order" end will be returned by this method when invoked on the SalesOrder class because SalesOrder conforms to Order and therefore a SalesOrder can be inserted into the association in role "order."
			    
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8")
			(object Operation "getConformsToCompositeParentAssociationEnds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getConformsToCompositeParentAssociationEnds():Set(AssociationEnd)
|body:
|    self.getConformsToClasses().getAssociationEnds()->select(ae|ae.composite)->asSet()
				    )))
			    quid       	"4978501103A9"
			    documentation 	"Like getConformsToAssociationEnds(), but selects only those association ends that are marked as composite."
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8")
			(object Operation "getConformsToCompositeChildAssociationEnds"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SapClass::getConformsToCompositeChildAssociationEnds():Set(AssociationEnd)
|body:
|    self.getConformsToClasses().getAssociationEnds()->select(ae|ae.otherEnd().composite)->asSet()
				    )))
			    quid       	"4978508B003E"
			    documentation 	"Like getConformsToAssociationEnds(), but selects only those association ends whose other ends are marked as composite."
			    result     	"AssociationEnd"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"44EC55FB03B8"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "valueType"
			    quid       	"47B98A000000"
			    documentation 	
|If true, instances of the class will be immutable. Comparison will be by equality. Their identity is defined by value equality. Value types can of course contain associations to non-value (or "entity") types.
|
|As opposed to value types, instances of entity types have identity and mutable state. They are always passed by reference. Variables only hold a reference to a shared instance. Comparing two entity objects using "Equals" will compare their identities.
			    
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    nestedClasses 	(list nestedClasses
			(object Class "OnlyValueClassesCanHaveObjectParameters"
			    quid       	"49B15ADD007D"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49B15AF902DE"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context SapClass
|inv:
|  self.formalObjectParameters->notEmpty() implies self.valueType
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "OnlyObjectParameterizedClassesCanHaveConverter"
			    quid       	"49B15B25030D"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49B15B3D008C"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context SapClass
|inv:
|  self.converterBetweenParametrizations->notEmpty() implies self.formalObjectParameters->notEmpty()
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "OnlyTrailingOptionalParameters"
			    quid       	"49D2C2BB0280"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49D2C2BB0290"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context SapClass
|inv:
|  self.formalObjectParameters->forAll(p | p.defaultValue->notEmpty() implies Sequence{(self.formalObjectParameters->indexOf(p)+1)..self.formalObjectParameters->size()}->forAll(
|    i | self.formalObjectParameters->at(i).defaultValue->notEmpty()))
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "NoRecursionForObjectParameters"
			    quid       	"4A0D90B302DE"
			    documentation 	
|If the class defines formal object parameters and one of those happens to be again a value class which as a component directly or indirectly holds a value of the class being defined, this would lead to an endless recursion in parameterizing the types. It is therefore generally forbidden by this constraint.
|
|The only exception is the Number class which is parameterized by a precision value which in turn is a Number value. However, that parameter's type's precision, in turn, defaults to the Number literal "0" which has a fixed precision of 1 which in turn has itself as its precision, ending the recursion. This special rule is supported by parser and interpreter.
			    
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4A0D90D70280"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context SapClass
|inv:
|  true  --  TODO implement this
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "Delegation"
		    quid       	"456DB5D50361"
		    documentation 	
|Exposes all features (operations and exposed association ends) of the class to which the opposite of the "from" end is attached as features of the "from" end's class. In particular, this makes the "from" class conform to the type of the "to" association end.
|
|The lower and upper multiplicity of the "from" opposite's association end must be 1 because a single instance is required in order to the "from" type to be able to delegate to it.
		    
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "allFeatures"
			    quid       	"456DC1B60091"
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    nestedClasses 	(list nestedClasses
			(object Class "ToEndMustHaveMultiplicityOfOne"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'TO end must have multiplicity of One'")))
			    quid       	"456DB71403E2"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"456DB72802F0"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Delegation
|inv:
|  self.from.otherEnd().type.lowerMultiplicity = 1 and
|  self.from.otherEnd().type.upperMultiplicity = 1
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "TypedElement"
		    quid       	"4717B7BC031A"
		    operations 	(list Operations
			(object Operation "conformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypedElement::conformsTo(typedElement:TypedElement):Boolean
|body:
|  self = typedElement or
|  self.getType().conformsTo(typedElement.getType())
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47555350031C"
			    documentation 	
|A typed element consisting of a type with a multiplicity conforms to another typed element if this typed element's type conforms to the other type element's type, and this type element's multiplicity "conforms" to the other type element's multiplicity. In particular, equal multiplicities conform to each other.
|
|TODO: decide if and how non-equal multiplicites may still conform; for example, a single element may implicitly conform to a collection of elements of conforming type; however, additions to the single element would not be possible.
			    
			    parameters 	(list Parameters
				(object Parameter "typedElement"
				    quid       	"47555350031D"
				    type       	"TypedElement"
				    quidu      	"4717B7BC031A"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "getType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypedElement::getType():TypeDefinition
|body:
|  if self.ownedTypeDefinition->notEmpty() then
|    self.ownedTypeDefinition
|  else
|    if self.oclIsKindOf(behavioral::actions::Variable) then
|      self.oclAsType(behavioral::actions::Variable).initExpression.getType()
|    else if self.oclIsKindOf(behavioral::actions::Constant) then
|      if self.oclAsType(behavioral::actions::Constant).initExpression->notEmpty() then
|        self.oclAsType(behavioral::actions::Constant).initExpression.getType()
|      else
|         if self.oclAsType(behavioral::actions::Constant)._iterate->notEmpty() then
|           self.oclAsType(behavioral::actions::Constant)._iterate.iteratorExpression.getType()
|         else
|           null
|         endif
|      endif
|    else if self.oclIsKindOf(behavioral::actions::Iterator) then
|      if self.oclAsType(behavioral::actions::Iterator).boundToFor->notEmpty() then
|        if self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType().oclIsKindOf(data::classes::NestedTypeDefinition) then
|          -- if the selection's object has a nested type definition, un-nest by one level
|          self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType().oclAsType(data::classes::NestedTypeDefinition).type
|        else
|          -- the tool should infer a better match; this as a better default than "null"
|          self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType()
|        endif
|      else
|        let selection:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator).selection.object->asSet() in
|        let groupby:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator).factOfGroupBy.object->asSet() in
|        let iterateexp:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator)._iterate.source->asSet() in
|        let iteratesource:Set(dataaccess::expressions::Expression)=selection->union(groupby)->union(iterateexp) in
|        if iteratesource->notEmpty() then
|          if iteratesource->any(true).getType().oclIsKindOf(data::classes::NestedTypeDefinition) then
|            -- if the Selection's/GroupBy's object has a nested type definition, un-nest by one level
|            iteratesource->any(true).getType().oclAsType(data::classes::NestedTypeDefinition).type
|          else
|            -- In this case the tool should create a cloned tpye definition with multiplicities set to 1;
|            -- Just in case the tool doesn't do this and for the case where the object has upper
|            -- multiplicity 1, use the object's type as the default for the "self" iterator
|            iteratesource->any(true).getType()
|          endif
|        else
|          if self.oclAsType(behavioral::actions::Iterator).groupedFactsOfGroupBy->notEmpty() then
|            -- the groups of a group-by expression can re-used the facts type
|            self.oclAsType(behavioral::actions::Iterator).factOfGroupBy.object.getType()
|          else
|            if self.oclAsType(behavioral::actions::Iterator).dimension->notEmpty() then
|              -- the DimensionDefinition's expression defines the dimension iterator's type
|              self.oclAsType(behavioral::actions::Iterator).dimension.expression.getType()
|            else
|              -- Then we have no idea how to infer the Iterator's type
|              null
|            endif
|          endif
|        endif
|      endif
|    else if self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Including) or self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Excluding) then
|      self.oclAsType(dataaccess::expressions::collectionexpressions::CollectionExpression).source.getType()
|    else if self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Iterate) then
|      self.oclAsType(dataaccess::expressions::collectionexpressions::Iterate).iteratorExpression.getType()
|    else if self.oclIsKindOf(Parameter) then
|      if self.oclAsType(Parameter).defaultValue->notEmpty() then
|        self.oclAsType(Parameter).defaultValue.getType()
|      else
|        if self.oclAsType(Parameter).ownerSignature.oclIsKindOf(MethodSignature) and
|        self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation->notEmpty() and
|        self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation.oclIsKindOf(AssociationEndSignatureImplementation) then
|  	let impl:AssociationEndSignatureImplementation = self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation.oclAsType(AssociationEndSignatureImplementation) in
|            impl.end.type
|        else
|          if self.oclAsType(Parameter).ownerSignature.oclIsKindOf(FunctionSignature) then
|            if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).dimension->notEmpty() then
|              self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).dimension.cellSet.factsType
|            else
|              if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForValueFunction->notEmpty() then
|                self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForValueFunction.factsType
|              else
|                if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction->notEmpty() then
|                  if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.valueFunction->notEmpty() then
|                    self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.valueFunction.output
|                  else
|                    self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.factsType
|                  endif
|                else
|                  if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclIsKindOf(dataaccess::analytics::CellSet) then
|                    let pos:Integer = self.oclAsType(Parameter).ownerSignature.input->indexOf(self.oclAsType(Parameter)) in
|                    if pos = 1 then
|                      self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclAsType(dataaccess::analytics::CellSet).factsType
|                    else
|                      self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclAsType(dataaccess::analytics::CellSet).
|                          dimensions->at(-1+pos).characteristicFunction.output
|                    endif
|                  else
|                    null
|                  endif
|                endif
|              endif
|            endif
|          else
|            null
|          endif
|        endif
|      endif
|    else if self.oclIsKindOf(dataaccess::analytics::DimensionExpression) then
|      -- TODO Here, the multiplicity would have to be forced to 0..*
|      self.oclAsType(dataaccess::analytics::DimensionExpression).dimensionParameter.getType()
|    else if self.oclIsKindOf(dataaccess::expressions::VariableExpression) then
|      self.oclAsType(dataaccess::expressions::VariableExpression).variable.getType()
|    else if self.oclIsKindOf(dataaccess::expressions::SignatureCallExpression) then
|      self.oclAsType(dataaccess::expressions::SignatureCallExpression).getSignature().output
|    else if self.oclIsKindOf(dataaccess::expressions::AssociationEndNavigationExpression) then
|      self.oclAsType(dataaccess::expressions::AssociationEndNavigationExpression).toEnd.type
|    else if self.oclIsKindOf(dataaccess::expressions::Replace) then
|      self.oclAsType(dataaccess::expressions::Replace).object.getType()
|    else if self.oclIsKindOf(dataaccess::expressions::Ternary) then
|      -- Find the "least" TypeDefinition to which both, trueExpr.getType() and falseExpr.getType() conform.
|      -- We determine the more general of the two types; we cannot synthesize a new TypeDefinition in OCL.
|      -- Doing so would have to be done by explicit typing, setting the ownedTypeDefinition explicitly
|      if self.oclAsType(dataaccess::expressions::Ternary).trueExpr.getType().conformsTo(self.oclAsType(dataaccess::expressions::Ternary).falseExpr.getType()) then
|        self.oclAsType(dataaccess::expressions::Ternary).falseExpr.getType()
|      else
|        self.oclAsType(dataaccess::expressions::Ternary).trueExpr.getType()
|      endif
|    else if self.oclIsKindOf(dataaccess::query::Selection) then
|      self.oclAsType(dataaccess::query::Selection).object.getType()
|    else
|      null
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|    endif
|  endif
				    )))
			    quid       	"4905EBCF00CB"
			    documentation 	
|Determined the type of the element. If the element owns a type definition, that one is assumed to be the result. Otherwise, "polymorphically" (we will refactor this once we can defined OCL method bodies polymorphically) we determine the type of the respective element.
|
|TODO the inference for Iterator elements used in an Iterate expression needs to resolve NestedTypeDefinitions; for non-NestedTypeDefinition type definitions it needs to reduce the multiplicity to exactly 1.
			    
			    result     	"TypeDefinition"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47B9A97A00CB"))
		    abstract   	TRUE)
		(object Class "Context"
		    quid       	"46FB5A85031C"
		    documentation 	
|An instance of a class can occur in a number of contexts. Each context has a characteristic condition that an object has to fulfill in order to "be in that context."
|
|A context can specify constraints, additional events that the object may raise, or preconditions for operations of the object's class.
|
|(Currently, the metamodel only describes context-based constraints; events and preconditions may have to be added later.)
		    
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"478BC293014F"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030"))
		    nestedClasses 	(list nestedClasses
			(object Class "ConditionMustBeBoolean"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Condition must be boolean'")))
			    quid       	"46FB62310290"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"46FB62310291"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Context
|inv:
|  self.condition.getType().upperMultiplicity = 1 and
|  self.condition.getType().oclIsKindOf(ClassTypeDefinition) and
|  self.condition.getType().oclAsType(ClassTypeDefinition).clazz.name = 'Boolean'
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "ConstraintForRightClass"
			    quid       	"4750233C0128"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4750234A02AF"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Context
|inv:
|  self.constraints->forAll(c | c.constrainedType = self.for_)
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "Multiplicity"
		    quid       	"47554DA003A9"
		    operations 	(list Operations
			(object Operation "isMany"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context Multiplicity::isMany():Boolean
|body:
|  self.upperMultiplicity > 1 or self.upperMultiplicity = -1
				    )))
			    quid       	"48A9EC770251"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "lowerMultiplicity"
			    quid       	"4507C31E02D6"
			    documentation 	"The lower bounds of this multiplicity."
			    type       	"Integer"
			    quidu      	"3B538AB300B3"
			    exportControl 	"Public")
			(object ClassAttribute "upperMultiplicity"
			    quid       	"4507C32D010B"
			    documentation 	"The upper bounds of this multiplicity. Unlimited is encoded as -1."
			    type       	"Integer"
			    quidu      	"3B538AB300B3"
			    exportControl 	"Public")
			(object ClassAttribute "ordered"
			    quid       	"4574A6340159"
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public")
			(object ClassAttribute "unique"
			    quid       	"47554DC003A9"
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    abstract   	TRUE)
		(object Class "SignatureImplementation"
		    quid       	"47836ECF037A"
		    documentation 	
|A signature can be implemented by a block (this would be a "method" in the classical sense) or, e.g., by an association navigation or by a link set manipulation statement.
		    
		    operations 	(list Operations
			(object Operation "getImplementedSignature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context SignatureImplementation::getImplementedSignature():Signature
|body:
|  if self.oclIsKindOf(FunctionSignatureImplementation) then
|    if self.oclAsType(FunctionSignatureImplementation).functionSignature->notEmpty() then
|      self.oclAsType(FunctionSignatureImplementation).functionSignature
|    else
|      self.implements_
|    endif
|  else
|    self.implements_
|  endif
				    )))
			    quid       	"489D53A40232"
			    documentation 	"A block implements either a FunctionSignature or a MethodSignature. Two different associations connect the Block with the respective Signature subclasses. This operation is a convenience that chooses the one or the other, depending on which one is filled."
			    result     	"Signature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432198602CB"))
		    abstract   	TRUE)
		(object Class "LinkTraversal"
		    quid       	"47837252006D"
		    documentation 	"Navigates an association starting on the source object on which the implementation is invoked and navigating to the *end* specified."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4783727003B9"
			    supplier   	"Logical View::data::classes::AssociationEndSignatureImplementation"
			    quidu      	"478372D00242"))
		    nestedClasses 	(list nestedClasses
			(object Class "OutputTypeMatchEndType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Signature has input or output does not match association end type'")))
			    quid       	"4784FC2201C5"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4784FC3A0271"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context LinkTraversal
|inv:
|  self.implements_.input->isEmpty() and
|  self.implements_.output.oclIsKindOf(ClassTypeDefinition) and 
|  self.implements_.output.oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "MustBeNavigable"
			    quid       	"48A152F80290"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"48A152F80291"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context LinkTraversal
|inv:
|  self.end.navigable
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "LinkAddition"
		    quid       	"47837252033C"
		    documentation 	"Adds a link to the association of which *end* is one end, such that the object on which the implementation is invoked is on the other end, and the parameters passed to this implementation are in the role denoted by *end*."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47837272003E"
			    supplier   	"Logical View::data::classes::LinkManipulationAtPosition"
			    quidu      	"4A6D631E01A5"))
		    nestedClasses 	(list nestedClasses
			(object Class "AdditionInputTypeMatchEndType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Signature has output or input does not match association end type'")))
			    quid       	"4784FC9E0109"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4784FC9E010A"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context LinkAddition
|inv:
|  self.implements_.output->isEmpty() and
|  self.implements_.input->size() = 1 and 
|  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and 
|  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "LinkRemoval"
		    quid       	"47837254000F"
		    documentation 	"Removes all links from the object on which the implementation is invoked to those objects passed as parameters where the parameter objects are in the role denoted by *end*."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4783727300FA"
			    supplier   	"Logical View::data::classes::LinkManipulationAtPosition"
			    quidu      	"4A6D631E01A5"))
		    nestedClasses 	(list nestedClasses
			(object Class "RemovalTypeMatchEndType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Signature has output or input does not match association end type'")))
			    quid       	"4784FCA20167"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4784FCCF037A"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context LinkRemoval
|inv:
|  self.implements_.output->isEmpty() and
|  self.implements_.input->size() = 1 and 
|  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and 
|  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "AssociationEndSignatureImplementation"
		    quid       	"478372D00242"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4783730402FD"
			    supplier   	"Logical View::data::classes::SignatureImplementation"
			    quidu      	"47836ECF037A"))
		    abstract   	TRUE
		    nestedClasses 	(list nestedClasses
			(object Class "OnlyOnOtherEndsClassOrClassConformingToItOrAdapterAdaptingToIt"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Implementation must be owned in other end class'")))
			    quid       	"47D65BD10261"
			    documentation 	"TODO what about association end-implemented signatures on type adapters? Should we support this?"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47D65BDF0151"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context AssociationEndSignatureImplementation
|inv:
|  (self.implements_.owner.oclIsKindOf(SapClass) and
|    self.implements_.owner.oclAsType(SapClass).conformsTo(self.end.otherEnd().type.clazz))
|  or   (self.implements_.owner.oclIsKindOf(TypeAdapter) and
|    self.implements_.owner.oclAsType(TypeAdapter).adapted.conformsTo(self.end.otherEnd().type.clazz))
|
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "ClassTypeDefinition"
		    quid       	"4784F7E800AB"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47B9A982030D"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"))
		    operations 	(list Operations
			(object Operation "objectParametersConformTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context ClassTypeDefinition::objectParametersConformTo(ctd:ClassTypeDefinition):Boolean
|body:
|  if self.effectiveObjectParameters()->size()  = ctd.effectiveObjectParameters()->size() then
|    self.clazz.converterBetweenParametrizations->notEmpty() or
|    Sequence{1..self.effectiveObjectParameters()->size()}->forAll(i |
|      self.effectiveObjectParameters()->at(i).evaluatesToEqualAs(ctd.effectiveObjectParameters()->at(i)))
|  else
|    false
|  endif
				    )))
			    quid       	"49C0C5AE02EE"
			    parameters 	(list Parameters
				(object Parameter "ctd"
				    quid       	"49C0C5BC0186"
				    type       	"ClassTypeDefinition"
				    quidu      	"4784F7E800AB"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "effectiveObjectParameters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isOrdered"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context ClassTypeDefinition::effectiveObjectParameters():Sequence(Expression)
|body:
|  self.objectParameters.value->flatten()->asSequence()->union(
|     Sequence{(self.objectParameters->size()+1)..(self.clazz.formalObjectParameters->size())}->collect(i | 
|             self.clazz.formalObjectParameters->at(i).defaultValue->flatten()->asSequence()))->flatten()->asSequence()
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "false")))
			    quid       	"49D37F7B030D"
			    result     	"Expression"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"450E63AB03A2"))
		    nestedClasses 	(list nestedClasses
			(object Class "ActualObjectsParametersMatchSignature"
			    quid       	"49B15774036B"
			    documentation 	"Ensures that the objects used as actual object parameters for the class match the signature as defined by the formal object parameters of the class."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49B15774036C"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ClassTypeDefinition
|inv:
|  let numberOfMandatoryParameters:Integer =
|    self.clazz.formalObjectParameters->select(p|p.defaultValue->isEmpty())->size()
|  in
|  self.objectParameters->size() >= numberOfMandatoryParameters and
|  self.objectParameters->size() <= self.clazz.formalObjectParameters->size() and
|  Sequence{1..self.objectParameters->size()}->forAll(i:Integer|
|    self.objectParameters->at(i).formalObjectParameter =
|    self.clazz.formalObjectParameters->at(i))
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "TypeDefinition"
		    quid       	"47B9A97A00CB"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47B9A98500EA"
			    supplier   	"Logical View::data::classes::Multiplicity"
			    quidu      	"47554DA003A9"))
		    operations 	(list Operations
			(object Operation "conformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::conformsTo(typeDef:TypeDefinition):Boolean
|body:
|  if self.oclIsUndefined() then
|    false
|  else if self = typeDef then
|    true
|  else
|    self.conformsToExcluding(typeDef, Sequence{}, Sequence{})
|  endif
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"478630C203C8"
			    parameters 	(list Parameters
				(object Parameter "typeDef"
				    quid       	"478630CC037A"
				    type       	"TypeDefinition"
				    quidu      	"47B9A97A00CB"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsToExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::conformsToExcluding(td:TypeDefinition, excludingConforming:Sequence(SapClass), excludingTo:Sequence(SapClass)):Boolean
|body:
|  if oclIsUndefined() then
|    false
|  else
|  if self = td then
|    true
|  else
|   self.multiplicityConformsTo(td) and
|   self.conformsToIgnoringMultiplicityExcluding(td, excludingConforming, excludingTo)
|  endif
| endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"478672C20310"
			    documentation 	"Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."
			    parameters 	(list Parameters
				(object Parameter "td"
				    attributes 	(list Attribute_Set)
				    quid       	"478672C20311"
				    type       	"TypeDefinition"
				    quidu      	"47B9A97A00CB")
				(object Parameter "excludingConforming"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"478672C20312"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingTo"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"478672C20313"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "multiplicityConformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::multiplicityConformsTo(td:TypeDefinition):Boolean
|body:
|    -- check for multiplicity conformance
|    -- multiplicity of td must include multiplicity of td
|    td.lowerMultiplicity <= self.lowerMultiplicity
|    and
|    (
|        td.upperMultiplicity = -1
|        or 
|        ( td.upperMultiplicity >= self.upperMultiplicity and self.upperMultiplicity <> -1 ) 
|    ) 
|    
|    -- check for conformance of orderedness and uniqueness
|    -- orderedness/uniqueness of td must be same or more relaxed than self's
|    and
|    (
|       not self.isMany()
|        or
|        ( ( self.ordered = td.ordered ) and ( self.unique = td.unique ) )
|        or
|        ( self.ordered and self.unique )
|        or
|        ( not ( td.ordered or td.unique ) )
|    )
				    )))
			    quid       	"48EA7C2E0372"
			    documentation 	
|Checks if this type definition's multiplicity conforms to td's multiplicity definitions. This is the case if all instances that conform to this type definition will also conform to td.
|
|Multiplicity conforms if td includes self's multiplicity, thus td's lower multiplicity is equal or smaller, and td's upper multiplicity is equal or larger than self's.
|
|Ordereness and uniquness conform if td has more relaxed requirements. Thus, they conform if they are equal, if td is neither ordered nor unique, or if self is ordered and unique
			    
			    parameters 	(list Parameters
				(object Parameter "td"
				    quid       	"48EA7CC001FB"
				    type       	"TypeDefinition"
				    quidu      	"47B9A97A00CB"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsToIgnoringMultiplicityExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::conformsToIgnoringMultiplicityExcluding(td:TypeDefinition, excludingConforming:Sequence(SapClass), excludingTo:Sequence(SapClass)):Boolean
|body:
|  if self = td then
|    true
|  else
|   if self.oclIsKindOf(ClassTypeDefinition) then
|    td.oclIsKindOf(ClassTypeDefinition) and
|    self.oclAsType(ClassTypeDefinition).clazz.conformsToExcluding(
|                td.oclAsType(ClassTypeDefinition).clazz, excludingConforming, excludingTo) and
|    self.oclAsType(ClassTypeDefinition).objectParametersConformTo(td.oclAsType(ClassTypeDefinition))
|  else
|    if self.oclIsKindOf(FunctionSignatureTypeDefinition) then
|      td.oclIsKindOf(FunctionSignatureTypeDefinition) and
|      self.oclAsType(FunctionSignatureTypeDefinition).signature.conformsToExcluding(
|           td.oclAsType(FunctionSignatureTypeDefinition).signature, excludingConforming, excludingTo)
|    else
|      td.oclIsKindOf(NestedTypeDefinition) and
|      self.oclAsType(NestedTypeDefinition).type.conformsToExcluding(
|          td.oclAsType(NestedTypeDefinition).type, excludingConforming, excludingTo)
|    endif
|  endif
| endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"48EA7D5903DF"
			    documentation 	"Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."
			    parameters 	(list Parameters
				(object Parameter "td"
				    attributes 	(list Attribute_Set)
				    quid       	"48EA7D5903E0"
				    type       	"TypeDefinition"
				    quidu      	"47B9A97A00CB")
				(object Parameter "excludingConforming"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"48EA7D5903E1"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingTo"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"48EA7D5903E2"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsToIgnoringMultiplicity"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::conformsToIgnoringMultiplicity(typeDef:TypeDefinition):Boolean
|body:
|  if self = typeDef then
|   true
|  else
|    self.conformsToIgnoringMultiplicityExcluding(typeDef, Sequence{}, Sequence{})
|  endif
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"48EA7E0A0304"
			    parameters 	(list Parameters
				(object Parameter "typeDef"
				    quid       	"48EA7E0A0305"
				    type       	"TypeDefinition"
				    quidu      	"47B9A97A00CB"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "getTypeUsage"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::getTypeUsage():Set(TypedElement)
|body:
|  TypedElement.allInstances()->select(te | te.getType() = self)
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true")))
			    quid       	"49062365016E"
			    result     	"TypedElement"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4717B7BC031A")
			(object Operation "getInnermost"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::getInnermost():TypeDefinition
|body:
|  if self.oclIsKindOf(NestedTypeDefinition) then
|    self.oclAsType(NestedTypeDefinition).type.getInnermost()
|  else
|    self
|  endif
				    )))
			    quid       	"4AD9743F0213"
			    documentation 	"For nexted type definitions, navigates through to the inner type definition. For non-nested type definitions, that type definition is the result of this method."
			    result     	"TypeDefinition"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47B9A97A00CB")
			(object Operation "getNestingLevel"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::getNestingLevel():Integer
|body:
|  if self.oclIsKindOf(NestedTypeDefinition) then
|    self.oclAsType(NestedTypeDefinition).type.getNestingLevel() + 1
|  else
|    0
|  endif
				    )))
			    quid       	"4ADF29CE02AF"
			    result     	"Integer"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"3B538AB300B3")
			(object Operation "getNamedValuesInScope"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeDefinition::getNamedValuesInScope():Set(NamedValue)
|body:
|  -- find owner of type definition and collect the named values in scope for the owner
|  (let ownerSig:Signature = self.ownerSignature in
|  if ownerSig->notEmpty() and ownerSig.oclIsKindOf(Signature) then
|    ownerSig.oclAsType(Signature).getNamedValuesInScope()
|  else
|    Set{}   -- some boundary case such as TupleElement or ValueSet not currently supported
|  endif)->union(
|
|  if self.ownerTypedElement->notEmpty() then
|    if self.ownerTypedElement.oclIsKindOf(dataaccess::expressions::Expression) then
|      self.ownerTypedElement.oclAsType(dataaccess::expressions::Expression).getNamedValuesInScope()
|    else
|      if self.ownerTypedElement.oclIsKindOf(NamedValue) then
|        self.ownerTypedElement.oclAsType(NamedValue).getNamedValuesInScope()
|      else
|        Set{}   -- some boundary case such as TupleElement or ValueSet not currently supported
|      endif
|    endif
|  else
|    Set{}
|  endif)
				    )))
			    quid       	"4B84096A02BF"
			    documentation 	"Needs to find the owner of the type definition, then check if it's a statement such as a variable declaration, or a method signature (meaning the owner may contribute formal object parameters) or a function signature (meaning the function expression knows the NamedValues in scope), etc."
			    result     	"NamedValue"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4522A56F0149"))
		    abstract   	TRUE)
		(object Class "NestedTypeDefinition"
		    quid       	"47B9A98D0138"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47B9A99B0177"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "op"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.multiplicity"
				    value      	(value Text "0..1")))
			    quid       	"49CA318F03B9"
			    documentation 	
|Only for syntax mapping issues, hopefully disappearing again in the future. It holds the operator that syntactically introduced this nested type definition, such as "[" or "*".
			    
			    type       	"String"
			    quidu      	"39A2BDA60394"
			    exportControl 	"Public"))
		    nestedClasses 	(list nestedClasses
			(object Class "NestedIsAlwaysMany"
			    quid       	"4AD9FA7500DA"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4AD9FA830280"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context NestedTypeDefinition
|inv:
|  self.isMany()
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "FunctionSignatureTypeDefinition"
		    quid       	"47B9A9AD03B9"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47B9A9C20109"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB")))
		(object Class "MethodSignature"
		    quid       	"47D67D15030D"
		    documentation 	"a signature of a method defined in a class"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47D67D1D035D"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB")
			(object Inheritance_Relationship
			    quid       	"47D6805A0300"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030"))
		    operations 	(list Operations
			(object Operation "isAbstract"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context MethodSignature::isAbstract():Boolean
|body:
|  self.implementation->isEmpty()
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45759A6F0348"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")))
		(object Class "FunctionSignature"
		    quid       	"47D67D190077"
		    documentation 	"signature definition for an anonymous function that has to be implemented by a block"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47D67D2001B3"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"))
		    operations 	(list Operations
			(object Operation "isAbstract"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context FunctionSignature::isAbstract():Boolean
|body:
|  self.implementation->isEmpty()
				    )))
			    quid       	"48EA1ACF00EA"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "getImplementedAnonymousFunctionExpression"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..1"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context FunctionSignature::getImplementedAnonymousFunctionExpression():AnonymousFunctionExpr
|body:
|  let candidates:Sequence(dataaccess::expressions::fp::AnonymousFunctionExpr) =
|         self.typeDefinition.ownerTypedElement.oclAsType(dataaccess::expressions::fp::AnonymousFunctionExpr)->asSequence() in
|  if candidates->isEmpty() then
|    null
|  else
|    candidates->at(1)
|  endif
				    )))
			    quid       	"4B84EBDF0167"
			    result     	"AnonymousFunctionExpr"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47A0757E02EC")))
		(object Class "LinkSetting"
		    quid       	"47DEB88201E2"
		    documentation 	"Replaces all links of the association of which the association end *end* is part and which connect to the object on which this implementation is invoked with their other end. The links are replaced by links from the object on which the implementation is invoked to the object(s) passed to this implementation as argument."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47DEB8A501DE"
			    supplier   	"Logical View::data::classes::ExtentModifyingAssociationEndSignatureImplementation"
			    quidu      	"49425BBA0251"))
		    nestedClasses 	(list nestedClasses
			(object Class "InputTypeMatchEndType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Signature\\'s output or input does not match association end type'")))
			    quid       	"47DFFCFF00DB"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47DFFCFF00DC"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context LinkSetting
|inv:
|  self.implements_.output->isEmpty() and
|  self.implements_.input->size() = 1 and 
|  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and 
|  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "TypeAdapter"
		    attributes 	(list Attribute_Set
			(object Attribute
			    tool       	"MOF"
			    name       	"sap2mof.requiresPartition"
			    value      	TRUE))
		    quid       	"47F112210022"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"48A0413400CB"
			    supplier   	"Logical View::data::classes::SignatureOwner"
			    quidu      	"48A0412B002E"))
		    operations 	(list Operations
			(object Operation "conformsTo"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeAdapter::conformsTo(type:SapClass):Boolean
|body:
|  type.signaturesWithDelegation()->forAll(typeSig:MethodSignature |
|    self.allSignatures()->exists(selfSig:MethodSignature |
|       selfSig.conformsToExcluding(typeSig, Sequence{self.to}, Sequence{type})))
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47F11B080137"
			    documentation 	"A class A conforms to a class B if for every signature that B has (either directly or by delegation, but not from any adapters), A has a conforming signature, either immediately declared in A or by delegation or through a type adapter."
			    parameters 	(list Parameters
				(object Parameter "type"
				    quid       	"47F11B080138"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    semantics  	(object Semantic_Info
				PDL        	
|post:
|    TODO; the set of operations and exposed association ends owned by this class plus those owned by the classes to which this class
|delegates, plus the operations and exposed association ends of any type adapter that adapts this class need to fulfill the set of signatures of and association ends expoed by the "type" class, including those of the classes to which "type" delegates, but *not* the operations owned by any type adapters attached to "type" because those are not supposed to affect the requirements for conforming to "type".
				)
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "conformsToExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeAdapter::conformsToExcluding(type:SapClass, excludingConforming:Sequence(SapClass), excludingTo:Sequence(SapClass)):Boolean
|body:
|  Sequence{1..excludingConforming->size()}->exists(i|
|  excludingConforming->asSequence()->at(i) = self.to and excludingTo->asSequence()->at(i) = type) or
|  type.signaturesWithDelegation()->forAll(typeSig:MethodSignature |
|         self.allSignatures()->exists(selfSig:MethodSignature |
|            selfSig.conformsToExcluding(typeSig,
|                    excludingConforming->asSequence()->append(self.to),
|                    excludingTo->asSequence()->append(type))))
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47F11B130043"
			    documentation 	"Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."
			    parameters 	(list Parameters
				(object Parameter "type"
				    attributes 	(list Attribute_Set)
				    quid       	"47F11B130044"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingConforming"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"47F11B130045"
				    type       	"SapClass"
				    quidu      	"4432171B031E")
				(object Parameter "excludingTo"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isOrdered"
					    value      	(value Text "true")))
				    quid       	"47F11B130046"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")
			(object Operation "allSignatures"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeAdapter::allSignatures():Set(MethodSignature)
|body:
|   self.allSignaturesExcluding(Set{})
|
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47F11EA202A6"
			    documentation 	"Computes all locally-defined signatures plus not conforming signatures offered by 'To' Class. "
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D")
			(object Operation "allSignaturesExcluding"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context TypeAdapter::allSignaturesExcluding(excluding:Set(SapClass)):Set(MethodSignature)
|body:
|  self.to.allSignaturesExcluding(excluding)->select(s |
|    not self.ownedSignatures->exists(os | os.conformsTo(s)))->union(
|  self.ownedSignatures)
				    ))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"47F123AB0091"
			    documentation 	"Same as allSignatures() but with the possibility to to avoid endless recursions."
			    parameters 	(list Parameters
				(object Parameter "excluding"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "0..*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"47F123AB0092"
				    type       	"SapClass"
				    quidu      	"4432171B031E"))
			    result     	"MethodSignature"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"47D67D15030D"))
		    nestedClasses 	(list nestedClasses
			(object Class "AllSignatureConforms"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'All signatures must conform to TO class signatures'")))
			    quid       	"47F536E802AE"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47F536E802AF"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context TypeAdapter
|inv:
| self.ownedSignatures->forAll(selfSig:MethodSignature |
|    self.to.signaturesWithDelegation()->exists(toSig:MethodSignature |
|       selfSig.conformsTo(toSig)))
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "SignaturesCannotBeAbstract"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Signatures can not be abstract'")))
			    quid       	"47F54150036A"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47F54150036B"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context TypeAdapter
|inv:
| self.ownedSignatures->forAll(selfSig:MethodSignature | not selfSig.isAbstract())
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "IsFullAdaptationToTo"
			    quid       	"487CC4420119"
			    documentation 	"Requires the adapter to provide owned conforming signatures for all of to's signatures for which adapted does not have a conforming signature."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"sap2mof.OperationCodeOcl"
					    value      	(value Text "")))
				    quid       	"487CC4B50128"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context TypeAdapter
|inv:
|  self.to.signaturesWithDelegation()->forAll(toSig|
|    self.adapted.signaturesWithDelegation()->exists(adaptedSig|
|      adaptedSig.conformsTo(toSig))
|    or self.ownedSignatures->exists(ownedSig|
|      ownedSig.conformsTo(toSig)))
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "ValuesToValues_EntitiesToEntities"
			    quid       	"4982DADB0157"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4982DAED02AF"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context TypeAdapter
|inv:
|  self.adapted.valueType = self.to.valueType
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "Parameter"
		    quid       	"47F12A7E0062"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"48566FFF0196"
			    supplier   	"Logical View::data::classes::NamedValue"
			    quidu      	"4522A56F0149"))
		    nestedClasses 	(list nestedClasses
			(object Class "DefaultValueType"
			    quid       	"49D2B3330167"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49D2B3410242"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Parameter
|inv:
|  self.defaultValue->notEmpty() implies self.defaultValue.getType().conformsTo(self.getType())
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "NamedValue"
		    quid       	"4522A56F0149"
		    documentation 	"A value that can be used by name in the scope of a Block. Specializations are, e.g., Constant and Variable. Specializations may have different rules for initialization expressions."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"45472E5E0375"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030")
			(object Inheritance_Relationship
			    quid       	"4717B85102FB"
			    supplier   	"Logical View::data::classes::TypedElement"
			    quidu      	"4717B7BC031A"))
		    operations 	(list Operations
			(object Operation "getNamedValuesInScope"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context NamedValue::getNamedValuesInScope():Set(NamedValue)
|body:
|    self.owner.getNamedValuesInScope()->union(
|    if self.oclIsKindOf(Parameter) then
|      self.oclAsType(Parameter).ownerSignature.getNamedValuesInScope()
|    else
|      if self.oclIsKindOf(behavioral::actions::Iterator) then
|        self.oclAsType(behavioral::actions::Iterator).boundToFor.getNamedValuesInScope()->asSet()->union(
|        self.oclAsType(behavioral::actions::Iterator)._iterate.getNamedValuesInScope()->asSet())
|      else
|        if self.oclIsKindOf(behavioral::actions::Constant) then
|          self.oclAsType(behavioral::actions::Constant)._iterate.getNamedValuesInScope()
|        else
|          Set{}    -- TODO further cases?
|        endif
|      endif
|    endif
|    )
|
				    )))
			    quid       	"4B84F6FD002E"
			    result     	"NamedValue"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4522A56F0149"))
		    abstract   	TRUE)
		(object Class "PlatformSpecificImplementation"
		    quid       	"489C71AE029F"
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "targetPlatform"
			    quid       	"489C720F000F"
			    type       	"String"
			    quidu      	"39A2BDA60394"
			    exportControl 	"Public")
			(object ClassAttribute "implementation"
			    quid       	"489CACBF03C8"
			    type       	"String"
			    quidu      	"39A2BDA60394"
			    exportControl 	"Public")))
		(object Class "NativeImpl"
		    quid       	"489CAD05038A"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"489CAD2D0186"
			    supplier   	"Logical View::data::classes::SignatureImplementation"
			    quidu      	"47836ECF037A")))
		(object Class "SignatureOwner"
		    quid       	"48A0412B002E"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"47F524E900A5"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030")))
		(object Class "ExtentModifyingAssociationEndSignatureImplementation"
		    quid       	"49425BBA0251"
		    documentation 	"Abstract base class for all association extent-manipulating signature implementations. Groups all constraints that apply to those."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"49425BEE02FD"
			    supplier   	"Logical View::data::classes::AssociationEndSignatureImplementation"
			    quidu      	"478372D00242"))
		    abstract   	TRUE
		    nestedClasses 	(list nestedClasses
			(object Class "MustNotModifyExtentIfEqualityRelevantForValueClass"
			    quid       	"49425C35031C"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49425C5403D8"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ExtentModifyingAssociationEndSignatureImplementation
|inv:
|  end.association.ends->forAll(ae:AssociationEnd |
|    ae.contributesToEquality implies not ae.type.clazz.valueType)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "MustNotImplementSideEffectFreeOperation"
			    quid       	"489D52CC0232"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"489D52CC0251"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ExtentModifyingAssociationEndSignatureImplementation
|inv:
|  not self.implements_.sideEffectFree
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "FunctionSignatureImplementation"
		    quid       	"4974995A0069"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4974996A0390"
			    supplier   	"Logical View::data::classes::SignatureImplementation"
			    quidu      	"47836ECF037A"))
		    operations 	(list Operations
			(object Operation "isSideEffectFree"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context FunctionSignatureImplementation::isSideEffectFree():Boolean
|body:
|  if self.oclIsKindOf(behavioral::actions::Block) then
|    self.oclAsType(behavioral::actions::Block).localIsSideEffectFree()
|  else
|    if self.oclIsKindOf(dataaccess::analytics::CellSet) then
|      self.oclAsType(dataaccess::analytics::CellSet).localIsSideEffectFree()
|    else
|      false
|    endif
|  endif
				    )))
			    quid       	"4A3B3771032C"
			    result     	"Boolean"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"39A2BDA60392")))
		(object Class "ActualObjectParameter"
		    quid       	"49B1547F0167")
		(object Class "ConverterBetweenParametrizations"
		    quid       	"49B15A3F03D8"
		    documentation 	"Specifies a method as converter method. This class is mostly used as a constraint container for such a construct."
		    nestedClasses 	(list nestedClasses
			(object Class "MustHaveConcreteMethod"
			    quid       	"49B15C100290"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49B15C2202BF"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ConverterBetweenParametrizations
|inv:
|  not self.conversionMethod.isAbstract()
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "FormalObjectParametersConformToMethodParameters"
			    quid       	"49B195DE0193"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49B195FA0120"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ConverterBetweenParametrizations
|inv:
|  self.conversionMethod.input->size() = self.clazz.formalObjectParameters->size() and
|  Sequence{1..self.conversionMethod.input->size()}->forAll(i |
|    self.clazz.formalObjectParameters->at(i).conformsTo(self.conversionMethod.input->at(i)))
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "LinkManipulationAtPosition"
		    quid       	"4A6D631E01A5"
		    documentation 	"An implementation that optionally specifies a position in an ordered link set telling where to apply the modification."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4A6D63480280"
			    supplier   	"Logical View::data::classes::ExtentModifyingAssociationEndSignatureImplementation"
			    quidu      	"49425BBA0251"))
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "at"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.multiplicity"
				    value      	(value Text "0..1")))
			    quid       	"4A6D63680261"
			    type       	"Integer"
			    quidu      	"3B538AB300B3"
			    exportControl 	"Public"))
		    abstract   	TRUE)
		(object Class "InScope"
		    quid       	"4B85514B0119"
		    operations 	(list Operations
			(object Operation "addNamedValuesWithNewNames"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "*"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.isUnique"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context InScope::addNamedValuesWithNewNames(inner:Set(NamedValue), outer:Set(NamedValue)):Set(NamedValue)
|body:
|  inner->union(outer->select(o | not inner->exists(i | i.name = o.name))->asSet())
				    )))
			    quid       	"4B83E9E9035B"
			    documentation 	
|Used to build up a scope of named values, proceeding "inside-out." The first argument is the already computed set of NamedValues, all of which end up in the resulting set of NamedValues. NamedValues from the second argument are added to the result set if the first NamedValue set does not contain any NamedValue with an equal name.
			    
			    parameters 	(list Parameters
				(object Parameter "inner"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"4B83EA7000DA"
				    type       	"NamedValue"
				    quidu      	"4522A56F0149")
				(object Parameter "outer"
				    attributes 	(list Attribute_Set
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.multiplicity"
					    value      	(value Text "*"))
					(object Attribute
					    tool       	"MOF"
					    name       	"uml2mof.isUnique"
					    value      	(value Text "true")))
				    quid       	"4B83EA7B00FA"
				    type       	"NamedValue"
				    quidu      	"4522A56F0149"))
			    result     	"NamedValue"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4522A56F0149"))
		    abstract   	TRUE)
		(object Association "FaultsOfSignature"
		    quid       	"443B531C0296"
		    documentation 	"Exception handling to be discussed, e.g., should multiple exceptions be supported for signatures?"
		    roles      	(list role_list
			(object Role "faults"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"443B53200210"
			    label      	"faults"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "signaturesWithFault"
			    quid       	"443B53200224"
			    label      	"signaturesWithFault"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "EndsOfAssociation"
		    quid       	"44EC565F0290"
		    roles      	(list role_list
			(object Role "ends"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"44EC56620059"
			    label      	"ends"
			    supplier   	"Logical View::data::classes::AssociationEnd"
			    quidu      	"44EC55FB03B8"
			    client_cardinality 	(value cardinality "2")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "association"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"44EC5662005B"
			    label      	"association"
			    supplier   	"Logical View::data::classes::Association"
			    quidu      	"44321DA40150"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "DelegationToEnd"
		    quid       	"456DB5E0010E"
		    roles      	(list role_list
			(object Role "from"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"456DB5E0037B"
			    label      	"from"
			    supplier   	"Logical View::data::classes::AssociationEnd"
			    quidu      	"44EC55FB03B8"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "delegation"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"456DB5E0037D"
			    label      	"delegation"
			    supplier   	"Logical View::data::classes::Delegation"
			    quidu      	"456DB5D50361"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$0"
		    quid       	"46FB5B290213"
		    roles      	(list role_list
			(object Role "for_"
			    quid       	"46FB5B2A01A5"
			    label      	"for_"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$1"
			    quid       	"46FB5B2A0271"
			    supplier   	"Logical View::data::classes::Context"
			    quidu      	"46FB5A85031C"
			    client_cardinality 	(value cardinality "0..*"))))
		(object Association "$UNNAMED$2"
		    quid       	"46FB601003B9"
		    roles      	(list role_list
			(object Role "constraints"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"46FB601102EE"
			    label      	"constraints"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "theContext"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"46FB601102FD"
			    label      	"theContext"
			    supplier   	"Logical View::data::classes::Context"
			    quidu      	"46FB5A85031C"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$3"
		    quid       	"46FB6203031C"
		    roles      	(list role_list
			(object Role "condition"
			    quid       	"46FB620402BF"
			    label      	"condition"
			    supplier   	"Logical View::dataaccess::expressions::Expression"
			    quidu      	"450E63AB03A2"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$4"
			    quid       	"46FB6204030D"
			    supplier   	"Logical View::data::classes::Context"
			    quidu      	"46FB5A85031C"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$5"
		    quid       	"4783730C003E"
		    roles      	(list role_list
			(object Role "end"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4783730C01A5"
			    label      	"end"
			    supplier   	"Logical View::data::classes::AssociationEnd"
			    quidu      	"44EC55FB03B8"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "signatureImplementations"
			    quid       	"4783730C01A7"
			    label      	"signatureImplementations"
			    supplier   	"Logical View::data::classes::AssociationEndSignatureImplementation"
			    quidu      	"478372D00242"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$6"
		    quid       	"4784F7F5005D"
		    roles      	(list role_list
			(object Role "elementsOfType"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4784F7F5005E"
			    label      	"elementsOfType"
			    supplier   	"Logical View::data::classes::ClassTypeDefinition"
			    quidu      	"4784F7E800AB"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)
			(object Role "clazz"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4784F7F5005F"
			    label      	"clazz"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$7"
		    quid       	"4795A52A00EA"
		    roles      	(list role_list
			(object Role "associations"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4795A52A03A9"
			    label      	"associations"
			    supplier   	"Logical View::data::classes::Association"
			    quidu      	"44321DA40150"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "package_"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4795A52A03B9"
			    label      	"package_"
			    supplier   	"Logical View::modelmanagement::Package"
			    quidu      	"452B7C8B00D8"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$8"
		    quid       	"4795967B001F"
		    roles      	(list role_list
			(object Role "package_"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4795967B0020"
			    label      	"package_"
			    supplier   	"Logical View::modelmanagement::Package"
			    quidu      	"452B7C8B00D8"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "classes"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4795967B0021"
			    label      	"classes"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$9"
		    quid       	"47B9A9960148"
		    roles      	(list role_list
			(object Role "type"
			    quid       	"47B9A99700DA"
			    label      	"type"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$10"
			    quid       	"47B9A99700DC"
			    supplier   	"Logical View::data::classes::NestedTypeDefinition"
			    quidu      	"47B9A98D0138"
			    client_cardinality 	(value cardinality "0..*"))))
		(object Association "$UNNAMED$11"
		    quid       	"47B9ABAE00AB"
		    roles      	(list role_list
			(object Role "type"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47B9ABAF02AF"
			    label      	"type"
			    supplier   	"Logical View::data::classes::ClassTypeDefinition"
			    quidu      	"4784F7E800AB"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "associationEnd"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47B9ABAF02BF"
			    label      	"associationEnd"
			    supplier   	"Logical View::data::classes::AssociationEnd"
			    quidu      	"44EC55FB03B8"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "OutputOfSignature"
		    quid       	"47B9EDFD0000"
		    roles      	(list role_list
			(object Role "output"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47B9EDFD0001"
			    label      	"output"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE)
			(object Role "signaturesWithOutput"
			    quid       	"47B9EDFD0002"
			    label      	"signaturesWithOutput"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$12"
		    quid       	"47CBF4180109"
		    documentation 	"An examples for this kind of ownership is a variable declaration owning the corresponding type definition"
		    roles      	(list role_list
			(object Role "ownedTypeDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47CBF418010A"
			    label      	"ownedTypeDefinition"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "ownerTypedElement"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47CBF418010B"
			    label      	"ownerTypedElement"
			    supplier   	"Logical View::data::classes::TypedElement"
			    quidu      	"4717B7BC031A"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$13"
		    quid       	"47CBF46E03D8"
		    roles      	(list role_list
			(object Role "ownedTypeDefinitions"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47CBF46E03D9"
			    label      	"ownedTypeDefinitions"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "ownerSignature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47CBF46E03DA"
			    label      	"ownerSignature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$14"
		    quid       	"47CD54E4031C"
		    roles      	(list role_list
			(object Role "ownedTypeDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47CD54E60251"
			    label      	"ownedTypeDefinition"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "owningNestedTypeDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47CD54E60261"
			    label      	"owningNestedTypeDefinition"
			    supplier   	"Logical View::data::classes::NestedTypeDefinition"
			    quidu      	"47B9A98D0138"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$15"
		    quid       	"47D67F7201BB"
		    documentation 	"Concrete (non-abstract) operations must specify their implementing Block using this association."
		    roles      	(list role_list
			(object Role "implements_"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47D67F7201BC"
			    label      	"implements_"
			    supplier   	"Logical View::data::classes::MethodSignature"
			    quidu      	"47D67D15030D"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "implementation"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47D67F7201BD"
			    label      	"implementation"
			    supplier   	"Logical View::data::classes::SignatureImplementation"
			    quidu      	"47836ECF037A"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "AdaptedTo"
		    quid       	"47F112BD0399"
		    roles      	(list role_list
			(object Role "to"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47F112BE01FC"
			    label      	"to"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "adaptedBy"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47F112BE0232"
			    label      	"adaptedBy"
			    supplier   	"Logical View::data::classes::TypeAdapter"
			    quidu      	"47F112210022"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$16"
		    quid       	"47F112ED01E4"
		    roles      	(list role_list
			(object Role "adapted"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47F112EE01B9"
			    label      	"adapted"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "adapters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47F112EE01EC"
			    label      	"adapters"
			    supplier   	"Logical View::data::classes::TypeAdapter"
			    quidu      	"47F112210022"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "InputOfSignature"
		    quid       	"47F12A8C021A"
		    documentation 	
|Operations take no argument or one compound argument. With this, the argument structure is to be described by a class. Thus, individual parameters are generally not identified by position but by the name of the association end on the parameter's class.
|
|Note that the input argument itself is not tagged with a name. It is not intended to be accessibile directly within the operation implementation.
		    
		    roles      	(list role_list
			(object Role "input"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47F12A8C021B"
			    label      	"input"
			    supplier   	"Logical View::data::classes::Parameter"
			    quidu      	"47F12A7E0062"
			    client_cardinality 	(value cardinality "0..*")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "ownerSignature"
			    attributes 	(list Attribute_Set)
			    quid       	"47F12A8C021C"
			    label      	"ownerSignature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$17"
		    quid       	"489CAD34032C"
		    roles      	(list role_list
			(object Role "platformSpecificImplementaiton"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"489CAD350177"
			    label      	"platformSpecificImplementaiton"
			    supplier   	"Logical View::data::classes::PlatformSpecificImplementation"
			    quidu      	"489C71AE029F"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$18"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"489CAD350196"
			    supplier   	"Logical View::data::classes::NativeImpl"
			    quidu      	"489CAD05038A"
			    client_cardinality 	(value cardinality "1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$19"
		    quid       	"48A02BD6000F"
		    documentation 	"If FunctionSignatureTypeDefinition is also to be used for functions derived from (methods + this), then the signature may as well be a MethodSignature."
		    roles      	(list role_list
			(object Role "signature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"48A02BD6002E"
			    label      	"signature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "typeDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"48A02BD6007D"
			    label      	"typeDefinition"
			    supplier   	"Logical View::data::classes::FunctionSignatureTypeDefinition"
			    quidu      	"47B9A9AD03B9"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "OwnedSignatures"
		    quid       	"48A041470119"
		    documentation 	"these are the abstract signatures with no implementation"
		    roles      	(list role_list
			(object Role "owner"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"48A04147011A"
			    label      	"owner"
			    supplier   	"Logical View::data::classes::SignatureOwner"
			    quidu      	"48A0412B002E"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "ownedSignatures"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"48A04147011B"
			    label      	"ownedSignatures"
			    supplier   	"Logical View::data::classes::MethodSignature"
			    quidu      	"47D67D15030D"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$20"
		    quid       	"4935A90C031D"
		    roles      	(list role_list
			(object Role "ownedSignature"
			    quid       	"4935A90F037B"
			    label      	"ownedSignature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$21"
			    quid       	"4935A9160243"
			    supplier   	"Logical View::data::classes::FunctionSignatureTypeDefinition"
			    quidu      	"47B9A9AD03B9"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$22"
		    quid       	"4975FB7F01F4"
		    roles      	(list role_list
			(object Role "implementation"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4975FB7F01F5"
			    label      	"implementation"
			    supplier   	"Logical View::data::classes::FunctionSignatureImplementation"
			    quidu      	"4974995A0069"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "functionSignature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4975FB7F01F6"
			    label      	"functionSignature"
			    supplier   	"Logical View::data::classes::FunctionSignature"
			    quidu      	"47D67D190077"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$23"
		    quid       	"49B150D50186"
		    documentation 	"Allows for types such as Number<precision:Number> which are parameterized with an object, such as in Number<5>."
		    roles      	(list role_list
			(object Role "formalObjectParameters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"49B150D6032C"
			    label      	"formalObjectParameters"
			    supplier   	"Logical View::data::classes::Parameter"
			    quidu      	"47F12A7E0062"
			    client_cardinality 	(value cardinality "0..*")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "parameterOfClass"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"49B150D6035B"
			    label      	"parameterOfClass"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$24"
		    quid       	"49B15486030D"
		    roles      	(list role_list
			(object Role "formalObjectParameter"
			    quid       	"49B154870128"
			    label      	"formalObjectParameter"
			    supplier   	"Logical View::data::classes::Parameter"
			    quidu      	"47F12A7E0062"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$25"
			    quid       	"49B15487012A"
			    supplier   	"Logical View::data::classes::ActualObjectParameter"
			    quidu      	"49B1547F0167"
			    client_cardinality 	(value cardinality "0..*"))))
		(object Association "$UNNAMED$26"
		    quid       	"49B1561D0222"
		    roles      	(list role_list
			(object Role "objectParameters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"49B1561E0157"
			    label      	"objectParameters"
			    supplier   	"Logical View::data::classes::ActualObjectParameter"
			    quidu      	"49B1547F0167"
			    client_cardinality 	(value cardinality "0..*")
			    Constraints 	"ordered"
			    is_navigable 	TRUE)
			(object Role "classTypeDefinitions"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"49B1561E0159"
			    label      	"classTypeDefinitions"
			    supplier   	"Logical View::data::classes::ClassTypeDefinition"
			    quidu      	"4784F7E800AB"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$27"
		    quid       	"49B1561C000F"
		    roles      	(list role_list
			(object Role "value"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"49B1561C02CE"
			    label      	"value"
			    supplier   	"Logical View::dataaccess::expressions::Expression"
			    quidu      	"450E63AB03A2"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "actualObjectParameter"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"49B1561D007D"
			    label      	"actualObjectParameter"
			    supplier   	"Logical View::data::classes::ActualObjectParameter"
			    quidu      	"49B1547F0167"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$28"
		    quid       	"49B15A610251"
		    roles      	(list role_list
			(object Role "converterBetweenParametrizations"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"49B15A620399"
			    label      	"converterBetweenParametrizations"
			    supplier   	"Logical View::data::classes::ConverterBetweenParametrizations"
			    quidu      	"49B15A3F03D8"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "clazz"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"49B15A62039B"
			    label      	"clazz"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$29"
		    quid       	"49B15BB5036B"
		    roles      	(list role_list
			(object Role "conversionMethod"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"49B15BB60138"
			    label      	"conversionMethod"
			    supplier   	"Logical View::data::classes::MethodSignature"
			    quidu      	"47D67D15030D"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "converter"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"49B15BB60196"
			    label      	"converter"
			    supplier   	"Logical View::data::classes::ConverterBetweenParametrizations"
			    quidu      	"49B15A3F03D8"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$30"
		    quid       	"49D2B2E10271"
		    roles      	(list role_list
			(object Role "defaultValue"
			    quid       	"49D2B2E30119"
			    label      	"defaultValue"
			    supplier   	"Logical View::dataaccess::expressions::Expression"
			    quidu      	"450E63AB03A2"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$31"
			    quid       	"49D2B2E30186"
			    supplier   	"Logical View::data::classes::Parameter"
			    quidu      	"47F12A7E0062"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$32"
		    quid       	"4AD595BF02EE"
		    roles      	(list role_list
			(object Role "ownedObjectParameters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"4AD595C100DA"
			    label      	"ownedObjectParameters"
			    supplier   	"Logical View::data::classes::ActualObjectParameter"
			    quidu      	"49B1547F0167"
			    client_cardinality 	(value cardinality "0..*")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "owningClassTypeDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4AD595C100DC"
			    label      	"owningClassTypeDefinition"
			    supplier   	"Logical View::data::classes::ClassTypeDefinition"
			    quidu      	"4784F7E800AB"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE))))
	    logical_presentations 	(list unit_reference_list
		(object ClassDiagram "Associations"
		    quid       	"44EC55ED0336"
		    title      	"Associations"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @1
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1659, 209)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@1
				location   	(1367, 80)
				fill_color 	13434879
				nlines     	1
				max_width  	584
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	602
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object NoteView @2
			    location   	(2406, 2187)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@2
				location   	(1915, 2059)
				fill_color 	13434879
				nlines     	5
				max_width  	947
				label      	"TODO: Model propagation attributes for association ends (e.g., equality, delete, copy). This may also be related to differences between Entity and Value classes.")
			    line_color 	3342489
			    fill_color 	13434879
			    width      	1007
			    height     	269)
			(object ClassView "Class" "Logical View::data::classes::Multiplicity" @3
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1109, 596)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@3
				location   	(856, 415)
				fill_color 	13434879
				nlines     	1
				max_width  	506
				justify    	0
				label      	"Multiplicity")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47554DA003A9"
			    width      	524
			    height     	386
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @4
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(493, 618)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@4
				location   	(285, 562)
				fill_color 	13434879
				nlines     	1
				max_width  	416
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@4
				location   	(285, 623)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	434
			    height     	136
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Association" @5
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1794, 652)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@5
				location   	(1668, 601)
				fill_color 	13434879
				nlines     	1
				max_width  	252
				justify    	0
				label      	"Association")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44321DA40150"
			    width      	270
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritTreeView "" @6
			    location   	(1659, 481)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@1
			    vertices   	(list Points
				(1659, 481)
				(1659, 350)))
			(object InheritView "" @7
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"453F571D025B"
			    client     	@5
			    supplier   	@1
			    vertices   	(list Points
				(1780, 589)
				(1780, 481))
			    line_style 	3
			    origin_attachment 	(1780, 589)
			    terminal_attachment 	(1780, 481)
			    drawSupplier 	@6)
			(object ClassView "Class" "Logical View::data::classes::ClassTypeDefinition" @8
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(578, 1621)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@8
				location   	(283, 1515)
				fill_color 	13434879
				nlines     	1
				max_width  	590
				justify    	0
				label      	"ClassTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4784F7E800AB"
			    width      	608
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$6" @9
			    location   	(428, 1094)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4784F7F5005D"
			    roleview_list 	(list RoleViews
				(object RoleView "clazz" @10
				    Parent_View 	@9
				    location   	(-272, -87)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @11
					Parent_View 	@10
					location   	(346, 817)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	136
					justify    	0
					label      	"+clazz"
					pctDist    	0.677741
					height     	83
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005F"
				    client     	@9
				    supplier   	@4
				    vertices   	(list Points
					(428, 1094)
					(428, 686))
				    line_style 	3
				    origin_attachment 	(428, 1094)
				    terminal_attachment 	(428, 686)
				    label      	(object SegLabel @12
					Parent_View 	@10
					location   	(399, 742)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.863787
					height     	30
					orientation 	0))
				(object RoleView "elementsOfType" @13
				    Parent_View 	@9
				    location   	(-272, -87)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @14
					Parent_View 	@13
					location   	(251, 1362)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	320
					justify    	0
					label      	"+elementsOfType"
					pctDist    	0.654485
					height     	178
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005E"
				    client     	@9
				    supplier   	@8
				    vertices   	(list Points
					(428, 1094)
					(428, 1503))
				    line_style 	3
				    origin_attachment 	(428, 1094)
				    terminal_attachment 	(428, 1503)
				    label      	(object SegLabel @15
					Parent_View 	@13
					location   	(382, 1445)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.857143
					height     	47
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::AssociationEnd" @16
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1757, 1646)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@16
				location   	(1443, 1490)
				fill_color 	13434879
				nlines     	1
				max_width  	628
				justify    	0
				label      	"AssociationEnd")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44EC55FB03B8"
			    width      	646
			    height     	336
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "EndsOfAssociation" @17
			    location   	(1812, 1096)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @18
				Parent_View 	@17
				location   	(1800, 1095)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	348
				justify    	0
				label      	"EndsOfAssociation"
				pctDist    	0.300000
				height     	2
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"44EC565F0290"
			    roleview_list 	(list RoleViews
				(object RoleView "ends" @19
				    Parent_View 	@17
				    location   	(1000, -228)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @20
					Parent_View 	@19
					location   	(1887, 1374)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	132
					justify    	0
					label      	"+ends"
					pctDist    	0.731507
					height     	75
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"44EC56620059"
				    client     	@17
				    supplier   	@16
				    vertices   	(list Points
					(1812, 1096)
					(1812, 1478))
				    line_style 	3
				    origin_attachment 	(1812, 1096)
				    terminal_attachment 	(1812, 1478)
				    label      	(object SegLabel @21
					Parent_View 	@19
					location   	(1854, 1429)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"2"
					pctDist    	0.873973
					height     	42
					orientation 	0)
				    label      	(object SegLabel @22
					Parent_View 	@19
					location   	(1712, 1388)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	158
					justify    	0
					label      	"{ordered}"
					pctDist    	0.765432
					height     	101
					orientation 	1))
				(object RoleView "association" @23
				    Parent_View 	@17
				    location   	(1000, -228)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @24
					Parent_View 	@23
					location   	(1943, 820)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	266
					justify    	0
					label      	"+association"
					pctDist    	0.728022
					height     	131
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"44EC5662005B"
				    client     	@17
				    supplier   	@5
				    vertices   	(list Points
					(1812, 1096)
					(1812, 715))
				    line_style 	3
				    origin_attachment 	(1812, 1096)
				    terminal_attachment 	(1812, 715)
				    label      	(object SegLabel @25
					Parent_View 	@23
					location   	(1845, 762)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.879121
					height     	33
					orientation 	1))))
			(object InheritView "" @26
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"457436EC01C4"
			    client     	@16
			    supplier   	@1
			    vertices   	(list Points
				(1497, 1478)
				(1497, 481))
			    line_style 	3
			    origin_attachment 	(1497, 1478)
			    terminal_attachment 	(1497, 481)
			    drawSupplier 	@6)
			(object AttachView "" @27
			    stereotype 	TRUE
			    line_color 	3342489
			    client     	@2
			    supplier   	@16
			    vertices   	(list Points
				(2244, 2052)
				(1959, 1814))
			    line_style 	0)
			(object AssociationViewNew "$UNNAMED$11" @28
			    location   	(1158, 1651)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9ABAE00AB"
			    roleview_list 	(list RoleViews
				(object RoleView "type" @29
				    Parent_View 	@28
				    location   	(-534, 5)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @30
					Parent_View 	@29
					location   	(951, 1696)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.751969
					height     	45
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02AF"
				    client     	@28
				    supplier   	@8
				    vertices   	(list Points
					(1158, 1651)
					(882, 1651))
				    line_style 	3
				    origin_attachment 	(1158, 1651)
				    terminal_attachment 	(882, 1651)
				    label      	(object SegLabel @31
					Parent_View 	@29
					location   	(920, 1590)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.866142
					height     	62
					orientation 	1))
				(object RoleView "associationEnd" @32
				    Parent_View 	@28
				    location   	(-534, 5)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @33
					Parent_View 	@32
					location   	(1261, 1611)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	304
					justify    	0
					label      	"+associationEnd"
					pctDist    	0.372694
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02BF"
				    client     	@28
				    supplier   	@16
				    vertices   	(list Points
					(1158, 1651)
					(1434, 1651))
				    line_style 	3
				    origin_attachment 	(1158, 1651)
				    terminal_attachment 	(1434, 1651)
				    label      	(object SegLabel @34
					Parent_View 	@32
					location   	(1387, 1696)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.833948
					height     	45
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @35
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1140, 1408)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@35
				location   	(992, 1302)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@35
				location   	(992, 1363)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @36
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    location   	(1094, 1001)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@36
				location   	(813, 938)
				fill_color 	13434879
				nlines     	1
				max_width  	563
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	581
			    height     	150
			    annotation 	8)
			(object InheritView "" @37
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A98500EA"
			    client     	@36
			    supplier   	@3
			    vertices   	(list Points
				(957, 926)
				(957, 788))
			    line_style 	3
			    origin_attachment 	(957, 926)
			    terminal_attachment 	(957, 788))
			(object AssociationViewNew "$UNNAMED$12" @38
			    location   	(1085, 1182)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF4180109"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerTypedElement" @39
				    Parent_View 	@38
				    location   	(44, 190)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @40
					Parent_View 	@39
					location   	(1077, 1219)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	393
					justify    	0
					label      	"+ownerTypedElement"
					pctDist    	0.350427
					height     	9
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010B"
				    client     	@38
				    supplier   	@35
				    vertices   	(list Points
					(1085, 1182)
					(1085, 1290))
				    line_style 	3
				    origin_attachment 	(1085, 1182)
				    terminal_attachment 	(1085, 1290)
				    label      	(object SegLabel @41
					Parent_View 	@39
					location   	(1025, 1264)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.760684
					height     	61
					orientation 	1))
				(object RoleView "ownedTypeDefinition" @42
				    Parent_View 	@38
				    location   	(44, 190)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @43
					Parent_View 	@42
					location   	(1125, 1150)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownedTypeDefinition"
					pctDist    	0.307692
					height     	40
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010A"
				    client     	@38
				    supplier   	@36
				    vertices   	(list Points
					(1085, 1182)
					(1085, 1075))
				    line_style 	3
				    origin_attachment 	(1085, 1182)
				    terminal_attachment 	(1085, 1075)
				    label      	(object SegLabel @44
					Parent_View 	@42
					location   	(1040, 1102)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.752137
					height     	46
					orientation 	0))))
			(object InheritView "" @45
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A982030D"
			    client     	@8
			    supplier   	@36
			    vertices   	(list Points
				(841, 1502)
				(841, 1075))
			    line_style 	3
			    origin_attachment 	(841, 1502)
			    terminal_attachment 	(841, 1075))))
		(object ClassDiagram "Delegation"
		    quid       	"456DAFBC03AD"
		    title      	"Delegation"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object NoteView @46
			    location   	(1611, 665)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@46
				location   	(933, 381)
				fill_color 	13434879
				nlines     	11
				max_width  	1321
				label      	
|Describes the "Delegation" pattern. Instead of implementation inheritance, an association to the respective type can be used and marked as delegating. All features exposed by the association's other end's type are then also exposed by the class. If not all but only a few of the features shall be exposed, those can be explicitly marked for delegation.
|If all features are exposed, the delegating class thus becomes conforming to the delegate class.
|Features made available by delegation are relevant for conformance. Therefore, a prerequisite for delegation is that the other end is exposed by the class that is the type of the "from" end.
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	1381
			    height     	581)
			(object NoteView @47
			    location   	(1158, 2074)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@47
				location   	(780, 1840)
				fill_color 	13434879
				nlines     	9
				max_width  	721
				label      	
|TODO: Add feature exposure for partial delegation;
|Add a way to rename features during delegation (the "Projection" idea).
|Delegated association end features should be recognizable still as association end features. This will be important metadata for a query engine.
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	781
			    height     	481)
			(object ClassView "Class" "Logical View::data::classes::Association" @48
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1695, 1266)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@48
				location   	(1500, 1160)
				fill_color 	13434879
				nlines     	1
				max_width  	390
				justify    	0
				label      	"Association")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44321DA40150"
			    width      	408
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::AssociationEnd" @49
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(439, 1360)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@49
				location   	(141, 1211)
				fill_color 	13434879
				nlines     	1
				max_width  	596
				justify    	0
				label      	"AssociationEnd")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44EC55FB03B8"
			    width      	614
			    height     	322
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "EndsOfAssociation" @50
			    location   	(1118, 1267)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @51
				Parent_View 	@50
				location   	(1069, 1235)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"EndsOfAssociation"
				pctDist    	-0.333333
				height     	33
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"44EC565F0290"
			    roleview_list 	(list RoleViews
				(object RoleView "association" @52
				    Parent_View 	@50
				    location   	(-253, -1471)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @53
					Parent_View 	@52
					location   	(1371, 1230)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	234
					justify    	0
					label      	"+association"
					pctDist    	0.681013
					height     	38
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"44EC5662005B"
				    client     	@50
				    supplier   	@48
				    vertices   	(list Points
					(1118, 1267)
					(1491, 1267))
				    line_style 	3
				    origin_attachment 	(1118, 1267)
				    terminal_attachment 	(1491, 1267)
				    label      	(object SegLabel @54
					Parent_View 	@52
					location   	(1470, 1312)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.946809
					height     	45
					orientation 	1))
				(object RoleView "ends" @55
				    Parent_View 	@50
				    location   	(-253, -1471)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @56
					Parent_View 	@55
					location   	(797, 1233)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	128
					justify    	0
					label      	"+ends"
					pctDist    	0.861702
					height     	35
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"44EC56620059"
				    client     	@50
				    supplier   	@49
				    vertices   	(list Points
					(1118, 1267)
					(746, 1267))
				    line_style 	3
				    origin_attachment 	(1118, 1267)
				    terminal_attachment 	(746, 1267)
				    label      	(object SegLabel @57
					Parent_View 	@55
					location   	(768, 1302)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"2"
					pctDist    	0.942553
					height     	35
					orientation 	0)
				    label      	(object SegLabel @58
					Parent_View 	@55
					location   	(877, 1297)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	160
					justify    	0
					label      	"{ordered}"
					pctDist    	0.649254
					height     	30
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::classes::Delegation" @59
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1699, 1493)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@59
				location   	(1494, 1415)
				fill_color 	13434879
				nlines     	1
				max_width  	410
				justify    	0
				label      	"Delegation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456DB5D50361"
			    width      	428
			    height     	180
			    annotation 	8
			    autoResize 	TRUE)
			(object AttachView "" @60
			    stereotype 	TRUE
			    line_color 	3342489
			    client     	@47
			    supplier   	@59
			    vertices   	(list Points
				(1380, 1833)
				(1614, 1583))
			    line_style 	0)
			(object AssociationViewNew "DelegationToEnd" @61
			    location   	(1115, 1470)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @62
				Parent_View 	@61
				location   	(1107, 1445)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	310
				justify    	0
				label      	"DelegationToEnd"
				pctDist    	0.383333
				height     	26
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456DB5E0010E"
			    roleview_list 	(list RoleViews
				(object RoleView "from" @63
				    Parent_View 	@61
				    location   	(-126, -227)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @64
					Parent_View 	@63
					location   	(803, 1515)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	116
					justify    	0
					label      	"+from"
					pctDist    	0.849515
					height     	45
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456DB5E0037B"
				    client     	@61
				    supplier   	@49
				    vertices   	(list Points
					(1115, 1470)
					(746, 1470))
				    line_style 	3
				    origin_attachment 	(1115, 1470)
				    terminal_attachment 	(746, 1470)
				    label      	(object SegLabel @65
					Parent_View 	@63
					location   	(775, 1435)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.924893
					height     	36
					orientation 	1))
				(object RoleView "delegation" @66
				    Parent_View 	@61
				    location   	(-126, -227)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @67
					Parent_View 	@66
					location   	(1385, 1502)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	209
					justify    	0
					label      	"+delegation"
					pctDist    	0.733010
					height     	32
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456DB5E0037D"
				    client     	@61
				    supplier   	@59
				    vertices   	(list Points
					(1115, 1470)
					(1485, 1470))
				    line_style 	3
				    origin_attachment 	(1115, 1470)
				    terminal_attachment 	(1485, 1470)
				    label      	(object SegLabel @68
					Parent_View 	@66
					location   	(1448, 1444)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.903640
					height     	27
					orientation 	0))))))
		(object ClassDiagram "TypedElement"
		    quid       	"4717B7B3002C"
		    title      	"TypedElement"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::Multiplicity" @69
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(864, 255)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@69
				location   	(611, 74)
				fill_color 	13434879
				nlines     	1
				max_width  	506
				justify    	0
				label      	"Multiplicity")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47554DA003A9"
			    width      	524
			    height     	386
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::FunctionSignature" @70
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1294, 2039)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@70
				location   	(824, 1933)
				fill_color 	13434879
				nlines     	1
				max_width  	940
				justify    	0
				label      	"FunctionSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D190077"
			    width      	958
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::MethodSignature" @71
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(397, 2059)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@71
				location   	(221, 1978)
				fill_color 	13434879
				nlines     	1
				max_width  	352
				justify    	0
				label      	"MethodSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D15030D"
			    width      	370
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @72
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2595, 1094)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@72
				location   	(2387, 1038)
				fill_color 	13434879
				nlines     	1
				max_width  	416
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@72
				location   	(2387, 1099)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	434
			    height     	136
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::ClassTypeDefinition" @73
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1463, 1120)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@73
				location   	(1168, 1014)
				fill_color 	13434879
				nlines     	1
				max_width  	590
				justify    	0
				label      	"ClassTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4784F7E800AB"
			    width      	608
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$6" @74
			    location   	(2072, 1110)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @75
				Parent_View 	@74
				location   	(2083, 1144)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				hidden     	TRUE
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	284
				justify    	0
				label      	""
				pctDist    	0.700000
				height     	34
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4784F7F5005D"
			    roleview_list 	(list RoleViews
				(object RoleView "clazz" @76
				    Parent_View 	@74
				    location   	(1675, 391)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @77
					Parent_View 	@76
					location   	(2294, 1070)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	136
					justify    	0
					label      	"+clazz"
					pctDist    	0.724014
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005F"
				    client     	@74
				    supplier   	@72
				    vertices   	(list Points
					(2072, 1110)
					(2378, 1110))
				    line_style 	3
				    origin_attachment 	(2072, 1110)
				    terminal_attachment 	(2378, 1110)
				    label      	(object SegLabel @78
					Parent_View 	@76
					location   	(2346, 1164)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))
				(object RoleView "elementsOfType" @79
				    Parent_View 	@74
				    location   	(1675, 391)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @80
					Parent_View 	@79
					location   	(1954, 1077)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	330
					justify    	0
					label      	"+elementsOfType"
					pctDist    	0.391304
					height     	34
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005E"
				    client     	@74
				    supplier   	@73
				    vertices   	(list Points
					(2072, 1110)
					(1767, 1110))
				    line_style 	3
				    origin_attachment 	(2072, 1110)
				    terminal_attachment 	(1767, 1110)
				    label      	(object SegLabel @81
					Parent_View 	@79
					location   	(1823, 1145)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.819188
					height     	35
					orientation 	0))))
			(object NoteView @82
			    location   	(1775, 1666)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@82
				location   	(1396, 1513)
				fill_color 	13434879
				nlines     	6
				max_width  	722
				label      	"If FunctionSignatureTypeDefinition is also to be used for functions derived from (methods + this), then the signature may as well be a MethodSignature.")
			    line_color 	3342489
			    fill_color 	13434879
			    width      	782
			    height     	319)
			(object ClassView "Class" "Logical View::data::classes::NestedTypeDefinition" @83
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(240, 1111)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@83
				location   	(33, 1030)
				fill_color 	13434879
				nlines     	1
				max_width  	414
				justify    	0
				label      	"NestedTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A98D0138"
			    width      	432
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @84
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1825, 673)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@84
				location   	(1677, 567)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@84
				location   	(1677, 628)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @85
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(871, 663)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@85
				location   	(726, 612)
				fill_color 	13434879
				nlines     	1
				max_width  	290
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	308
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$9" @86
			    location   	(224, 663)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A9960148"
			    roleview_list 	(list RoleViews
				(object RoleView "type" @87
				    Parent_View 	@86
				    location   	(-504, -483)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @88
					Parent_View 	@87
					location   	(642, 623)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.848980
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9A99700DA"
				    client     	@86
				    supplier   	@85
				    vertices   	(list Points
					(224, 663)
					(717, 663))
				    line_style 	3
				    origin_attachment 	(224, 663)
				    terminal_attachment 	(717, 663)
				    label      	(object SegLabel @89
					Parent_View 	@87
					location   	(673, 695)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.910204
					height     	32
					orientation 	1))
				(object RoleView "$UNNAMED$10" @90
				    Parent_View 	@86
				    location   	(-504, -483)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9A99700DC"
				    client     	@86
				    supplier   	@83
				    vertices   	(list Points
					(224, 663)
					(87, 663)
					(87, 1018))
				    line_style 	3
				    origin_attachment 	(224, 663)
				    terminal_attachment 	(87, 1018)
				    label      	(object SegLabel @91
					Parent_View 	@90
					location   	(129, 985)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.932166
					height     	42
					orientation 	0))))
			(object InheritView "" @92
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A98500EA"
			    client     	@85
			    supplier   	@69
			    vertices   	(list Points
				(863, 600)
				(863, 448))
			    line_style 	3
			    origin_attachment 	(863, 600)
			    terminal_attachment 	(863, 448))
			(object AssociationViewNew "$UNNAMED$12" @93
			    location   	(1346, 663)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF4180109"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerTypedElement" @94
				    Parent_View 	@93
				    location   	(475, 0)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @95
					Parent_View 	@94
					location   	(1448, 624)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	393
					justify    	0
					label      	"+ownerTypedElement"
					pctDist    	0.316770
					height     	40
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010B"
				    client     	@93
				    supplier   	@84
				    vertices   	(list Points
					(1346, 663)
					(1668, 663))
				    line_style 	3
				    origin_attachment 	(1346, 663)
				    terminal_attachment 	(1668, 663)
				    label      	(object SegLabel @96
					Parent_View 	@94
					location   	(1611, 711)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.826087
					height     	48
					orientation 	1))
				(object RoleView "ownedTypeDefinition" @97
				    Parent_View 	@93
				    location   	(475, 0)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @98
					Parent_View 	@97
					location   	(1229, 714)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownedTypeDefinition"
					pctDist    	0.367601
					height     	51
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010A"
				    client     	@93
				    supplier   	@85
				    vertices   	(list Points
					(1346, 663)
					(1025, 663))
				    line_style 	3
				    origin_attachment 	(1346, 663)
				    terminal_attachment 	(1025, 663)
				    label      	(object SegLabel @99
					Parent_View 	@97
					location   	(1074, 633)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.846596
					height     	31
					orientation 	1))))
			(object InheritTreeView "" @100
			    location   	(871, 946)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@85
			    vertices   	(list Points
				(871, 946)
				(871, 726)))
			(object InheritView "" @101
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A99B0177"
			    client     	@83
			    supplier   	@85
			    vertices   	(list Points
				(269, 1017)
				(269, 946))
			    line_style 	3
			    origin_attachment 	(269, 1017)
			    terminal_attachment 	(269, 946)
			    drawSupplier 	@100)
			(object InheritView "" @102
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A982030D"
			    client     	@73
			    supplier   	@85
			    vertices   	(list Points
				(1298, 1002)
				(1298, 946))
			    line_style 	3
			    origin_attachment 	(1298, 1002)
			    terminal_attachment 	(1298, 946)
			    drawSupplier 	@100)
			(object ClassView "Class" "Logical View::data::classes::Signature" @103
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(789, 1574)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@103
				location   	(522, 1393)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Signature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432198602CB"
			    width      	552
			    height     	386
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritTreeView "" @104
			    location   	(789, 1857)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@103
			    vertices   	(list Points
				(789, 1857)
				(789, 1767)))
			(object InheritView "" @105
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67D1D035D"
			    client     	@71
			    supplier   	@103
			    vertices   	(list Points
				(400, 1966)
				(400, 1857))
			    line_style 	3
			    origin_attachment 	(400, 1966)
			    terminal_attachment 	(400, 1857)
			    drawSupplier 	@104)
			(object InheritView "" @106
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67D2001B3"
			    client     	@70
			    supplier   	@103
			    vertices   	(list Points
				(1290, 1921)
				(1290, 1857))
			    line_style 	3
			    origin_attachment 	(1290, 1921)
			    terminal_attachment 	(1290, 1857)
			    drawSupplier 	@104)
			(object ClassView "Class" "Logical View::data::classes::FunctionSignatureTypeDefinition" @107
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(805, 1107)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@107
				location   	(494, 1056)
				fill_color 	13434879
				nlines     	1
				max_width  	622
				justify    	0
				label      	"FunctionSignatureTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A9AD03B9"
			    width      	640
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @108
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A9C20109"
			    client     	@107
			    supplier   	@85
			    vertices   	(list Points
				(806, 1044)
				(806, 946))
			    line_style 	3
			    origin_attachment 	(806, 1044)
			    terminal_attachment 	(806, 946)
			    drawSupplier 	@100)
			(object AssociationViewNew "$UNNAMED$19" @109
			    location   	(775, 1274)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A02BD6000F"
			    roleview_list 	(list RoleViews
				(object RoleView "signature" @110
				    Parent_View 	@109
				    location   	(-193, 141)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @111
					Parent_View 	@110
					location   	(646, 1349)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	206
					justify    	0
					label      	"+signature"
					pctDist    	0.709924
					height     	130
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A02BD6002E"
				    client     	@109
				    supplier   	@103
				    vertices   	(list Points
					(775, 1274)
					(775, 1380))
				    line_style 	3
				    origin_attachment 	(775, 1274)
				    terminal_attachment 	(775, 1380)
				    label      	(object SegLabel @112
					Parent_View 	@110
					location   	(817, 1357)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.778626
					height     	42
					orientation 	0))
				(object RoleView "typeDefinition" @113
				    Parent_View 	@109
				    location   	(-193, 141)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @114
					Parent_View 	@113
					location   	(621, 1199)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	266
					justify    	0
					label      	"+typeDefinition"
					pctDist    	0.714286
					height     	154
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A02BD6007D"
				    client     	@109
				    supplier   	@107
				    vertices   	(list Points
					(775, 1274)
					(775, 1169))
				    line_style 	3
				    origin_attachment 	(775, 1274)
				    terminal_attachment 	(775, 1169)
				    label      	(object SegLabel @115
					Parent_View 	@113
					location   	(829, 1200)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.709091
					height     	54
					orientation 	1))))
			(object AttachView "" @116
			    stereotype 	TRUE
			    line_color 	3342489
			    client     	@82
			    supplier   	@109
			    vertices   	(list Points
				(1383, 1511)
				(775, 1274))
			    line_style 	0)
			(object AssociationViewNew "$UNNAMED$20" @117
			    location   	(985, 1274)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4935A90C031D"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedSignature" @118
				    Parent_View 	@117
				    location   	(180, 167)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @119
					Parent_View 	@118
					location   	(1278, 1352)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	326
					justify    	0
					label      	"+ownedSignature"
					pctDist    	0.748092
					height     	293
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4935A90F037B"
				    client     	@117
				    supplier   	@103
				    vertices   	(list Points
					(985, 1274)
					(985, 1380))
				    line_style 	3
				    origin_attachment 	(985, 1274)
				    terminal_attachment 	(985, 1380)
				    label      	(object SegLabel @120
					Parent_View 	@118
					location   	(1049, 1352)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.748092
					height     	64
					orientation 	0))
				(object RoleView "$UNNAMED$21" @121
				    Parent_View 	@117
				    location   	(180, 167)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4935A9160243"
				    client     	@117
				    supplier   	@107
				    vertices   	(list Points
					(985, 1274)
					(985, 1169))
				    line_style 	3
				    origin_attachment 	(985, 1274)
				    terminal_attachment 	(985, 1169)
				    label      	(object SegLabel @122
					Parent_View 	@121
					location   	(1045, 1198)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.723077
					height     	60
					orientation 	1))))))
		(object ClassDiagram "Context"
		    quid       	"4717C5090378"
		    title      	"Context"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::SapClass" @123
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(964, 952)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@123
				location   	(767, 897)
				fill_color 	13434879
				nlines     	1
				max_width  	394
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@123
				location   	(767, 958)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	412
			    height     	134
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Context" @124
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1515, 1310)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@124
				location   	(1430, 1260)
				fill_color 	13434879
				nlines     	1
				max_width  	170
				justify    	0
				label      	"Context")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"46FB5A85031C"
			    width      	188
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$0" @125
			    location   	(1411, 952)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"46FB5B290213"
			    roleview_list 	(list RoleViews
				(object RoleView "$UNNAMED$1" @126
				    Parent_View 	@125
				    location   	(908, 683)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @127
					Parent_View 	@126
					location   	(1430, 1176)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB5B2A0271"
				    client     	@125
				    supplier   	@124
				    vertices   	(list Points
					(1411, 952)
					(1471, 952)
					(1471, 1248))
				    line_style 	3
				    origin_attachment 	(1411, 952)
				    terminal_attachment 	(1471, 1248)
				    label      	(object SegLabel @128
					Parent_View 	@126
					location   	(1428, 1208)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.887006
					height     	44
					orientation 	1))
				(object RoleView "for_" @129
				    Parent_View 	@125
				    location   	(908, 683)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @130
					Parent_View 	@129
					location   	(1230, 993)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	97
					justify    	0
					label      	"+for_"
					pctDist    	0.752174
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB5B2A01A5"
				    client     	@125
				    supplier   	@123
				    vertices   	(list Points
					(1411, 952)
					(1170, 952))
				    line_style 	3
				    origin_attachment 	(1411, 952)
				    terminal_attachment 	(1170, 952)
				    label      	(object SegLabel @131
					Parent_View 	@129
					location   	(1194, 899)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::constraints::Constraint" @132
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(293, 1588)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@132
				location   	(153, 1510)
				fill_color 	13434879
				nlines     	1
				max_width  	280
				justify    	0
				label      	"Constraint")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E61B602EE"
			    width      	298
			    height     	180
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$2" @133
			    location   	(1064, 1553)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"46FB601003B9"
			    roleview_list 	(list RoleViews
				(object RoleView "theContext" @134
				    Parent_View 	@133
				    location   	(623, 403)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @135
					Parent_View 	@134
					location   	(1363, 1406)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	230
					justify    	0
					label      	"+theContext"
					pctDist    	0.945873
					height     	144
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB601102FD"
				    client     	@133
				    supplier   	@124
				    vertices   	(list Points
					(1064, 1553)
					(1506, 1553)
					(1506, 1372))
				    line_style 	3
				    origin_attachment 	(1064, 1553)
				    terminal_attachment 	(1506, 1372)
				    label      	(object SegLabel @136
					Parent_View 	@134
					location   	(1560, 1435)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.900000
					height     	54
					orientation 	1))
				(object RoleView "constraints" @137
				    Parent_View 	@133
				    location   	(623, 403)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @138
					Parent_View 	@137
					location   	(662, 1521)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	230
					justify    	0
					label      	"+constraints"
					pctDist    	0.648649
					height     	33
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB601102EE"
				    client     	@133
				    supplier   	@132
				    vertices   	(list Points
					(1064, 1553)
					(442, 1553))
				    line_style 	3
				    origin_attachment 	(1064, 1553)
				    terminal_attachment 	(442, 1553)
				    label      	(object SegLabel @139
					Parent_View 	@137
					location   	(508, 1521)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.893243
					height     	33
					orientation 	1))))
			(object AssociationViewNew "Constrains" @140
			    location   	(339, 1006)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @141
				Parent_View 	@140
				location   	(339, 947)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"Constrains"
				pctDist    	0.500000
				height     	60
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"450E61D203A2"
			    roleview_list 	(list RoleViews
				(object RoleView "constraints" @142
				    Parent_View 	@140
				    location   	(-102, 766)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @143
					Parent_View 	@142
					location   	(464, 1412)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	230
					justify    	0
					label      	"+constraints"
					pctDist    	0.826401
					height     	125
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E61D302E5"
				    client     	@140
				    supplier   	@132
				    vertices   	(list Points
					(339, 1006)
					(339, 1497))
				    line_style 	3
				    origin_attachment 	(339, 1006)
				    terminal_attachment 	(339, 1497)
				    label      	(object SegLabel @144
					Parent_View 	@142
					location   	(392, 1465)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.933092
					height     	53
					orientation 	0))
				(object RoleView "constrainedType" @145
				    Parent_View 	@140
				    location   	(-102, 766)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @146
					Parent_View 	@145
					location   	(588, 882)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	322
					justify    	0
					label      	"+constrainedType"
					pctDist    	0.655031
					height     	52
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E61D30245"
				    client     	@140
				    supplier   	@123
				    vertices   	(list Points
					(339, 1006)
					(339, 933)
					(758, 933))
				    line_style 	3
				    origin_attachment 	(339, 1006)
				    terminal_attachment 	(758, 933)
				    label      	(object SegLabel @147
					Parent_View 	@145
					location   	(724, 976)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.933213
					height     	43
					orientation 	1))))
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @148
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2217, 1299)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@148
				location   	(2005, 1170)
				fill_color 	13434879
				nlines     	1
				max_width  	424
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    compartment 	(object Compartment
				Parent_View 	@148
				location   	(2005, 1391)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	7
				max_width  	0)
			    width      	442
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$3" @149
			    location   	(1802, 1326)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"46FB6203031C"
			    roleview_list 	(list RoleViews
				(object RoleView "$UNNAMED$4" @150
				    Parent_View 	@149
				    location   	(96, 1045)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @151
					Parent_View 	@150
					location   	(1649, 1285)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB6204030D"
				    client     	@149
				    supplier   	@124
				    vertices   	(list Points
					(1802, 1326)
					(1609, 1326))
				    line_style 	3
				    origin_attachment 	(1802, 1326)
				    terminal_attachment 	(1609, 1326)
				    label      	(object SegLabel @152
					Parent_View 	@150
					location   	(1642, 1373)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.827362
					height     	47
					orientation 	0))
				(object RoleView "condition" @153
				    Parent_View 	@149
				    location   	(96, 1045)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @154
					Parent_View 	@153
					location   	(1923, 1280)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	204
					justify    	0
					label      	"+condition"
					pctDist    	0.622150
					height     	47
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"46FB620402BF"
				    client     	@149
				    supplier   	@148
				    vertices   	(list Points
					(1802, 1326)
					(1996, 1326))
				    line_style 	3
				    origin_attachment 	(1802, 1326)
				    terminal_attachment 	(1996, 1326)
				    label      	(object SegLabel @155
					Parent_View 	@153
					location   	(1977, 1380)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object AssociationViewNew "" @156
			    location   	(1438, 1622)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"450E63F20390"
			    roleview_list 	(list RoleViews
				(object RoleView "" @157
				    Parent_View 	@156
				    location   	(-268, 1341)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @158
					Parent_View 	@157
					location   	(641, 1581)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E63F301B3"
				    client     	@156
				    supplier   	@132
				    vertices   	(list Points
					(1438, 1622)
					(442, 1622))
				    line_style 	3
				    origin_attachment 	(1438, 1622)
				    terminal_attachment 	(442, 1622)
				    label      	(object SegLabel @159
					Parent_View 	@157
					location   	(542, 1676)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.900000
					height     	54
					orientation 	0))
				(object RoleView "constraintExpression" @160
				    Parent_View 	@156
				    location   	(-268, 1341)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @161
					Parent_View 	@160
					location   	(2024, 1498)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	422
					justify    	0
					label      	"+constraintExpression"
					pctDist    	0.941781
					height     	229
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E63F301B1"
				    client     	@156
				    supplier   	@148
				    vertices   	(list Points
					(1438, 1622)
					(2252, 1622)
					(2252, 1440))
				    line_style 	3
				    origin_attachment 	(1438, 1622)
				    terminal_attachment 	(2252, 1440)
				    label      	(object SegLabel @162
					Parent_View 	@160
					location   	(2304, 1496)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.945205
					height     	52
					orientation 	1))))
			(object NoteView @163
			    location   	(1109, 2263)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@163
				location   	(668, 2128)
				fill_color 	13434879
				nlines     	5
				max_width  	847
				label      	
|TODO: When an object's type A c
|onforms to a class B and there are contexts defined for B, will the B contexts w
|hose conditions are fufilled by the A instance get applied to the A instance?
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	907
			    height     	282)
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @164
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(878, 325)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@164
				location   	(600, 196)
				fill_color 	13434879
				nlines     	1
				max_width  	556
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	574
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritTreeView "" @165
			    location   	(878, 622)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@164
			    vertices   	(list Points
				(878, 622)
				(878, 466)))
			(object InheritView "" @166
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"478BC293014F"
			    client     	@124
			    supplier   	@164
			    vertices   	(list Points
				(1562, 1248)
				(1562, 622))
			    line_style 	3
			    origin_attachment 	(1562, 1248)
			    terminal_attachment 	(1562, 622)
			    drawSupplier 	@165)
			(object InheritView "" @167
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"478BC2CD03A1"
			    client     	@132
			    supplier   	@164
			    vertices   	(list Points
				(200, 1497)
				(200, 622))
			    line_style 	3
			    origin_attachment 	(200, 1497)
			    terminal_attachment 	(200, 622)
			    drawSupplier 	@165)))
		(object ClassDiagram "Association-based Signature Implementations"
		    quid       	"47837229029F"
		    title      	"Association-based Signature Implementations"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::LinkTraversal" @168
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(403, 1780)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@168
				location   	(268, 1729)
				fill_color 	13434879
				nlines     	1
				max_width  	270
				justify    	0
				label      	"LinkTraversal")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47837252006D"
			    width      	288
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::LinkAddition" @169
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1754, 2347)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@169
				location   	(1624, 2296)
				fill_color 	13434879
				nlines     	1
				max_width  	260
				justify    	0
				label      	"LinkAddition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47837252033C"
			    width      	278
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::LinkRemoval" @170
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1090, 2352)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@170
				location   	(955, 2301)
				fill_color 	13434879
				nlines     	1
				max_width  	270
				justify    	0
				label      	"LinkRemoval")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47837254000F"
			    width      	288
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @171
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1351, 232)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@171
				location   	(1059, 103)
				fill_color 	13434879
				nlines     	1
				max_width  	584
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	602
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object NoteView @172
			    location   	(2226, 226)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@172
				location   	(1872, 113)
				fill_color 	13434879
				nlines     	4
				max_width  	672
				label      	"name needs to be a derived property since for Signature it may be computed based on the implementation.")
			    line_color 	3342489
			    fill_color 	13434879
			    width      	732
			    height     	238)
			(object AttachView "" @173
			    stereotype 	TRUE
			    line_color 	3342489
			    client     	@172
			    supplier   	@171
			    vertices   	(list Points
				(1859, 228)
				(1652, 229))
			    line_style 	0)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @174
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2442, 681)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@174
				location   	(2297, 630)
				fill_color 	13434879
				nlines     	1
				max_width  	290
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	308
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Signature" @175
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    ShowOperationSignature 	TRUE
			    location   	(541, 628)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@175
				location   	(256, 559)
				fill_color 	13434879
				nlines     	1
				max_width  	570
				justify    	0
				label      	"Signature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432198602CB"
			    compartment 	(object Compartment
				Parent_View 	@175
				location   	(256, 620)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	1956
				compartmentItems 	(list Compartment
				    "+ conformsTo(s : Signature) : Boolean"
				    "+ conformsToExcluding(s : Signature, excludingConforming : SapClass, excludingTo : SapClass) : Boolean"))
			    width      	588
			    height     	163
			    annotation 	8)
			(object ClassView "Class" "Logical View::data::classes::AssociationEndSignatureImplementation" @176
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(836, 1522)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@176
				location   	(452, 1471)
				fill_color 	13434879
				nlines     	1
				max_width  	768
				justify    	0
				label      	"AssociationEndSignatureImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"478372D00242"
			    width      	786
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::AssociationEnd" @177
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2622, 1481)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@177
				location   	(2308, 1325)
				fill_color 	13434879
				nlines     	1
				max_width  	628
				justify    	0
				label      	"AssociationEnd")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44EC55FB03B8"
			    width      	646
			    height     	336
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$5" @178
			    location   	(1764, 1531)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4783730C003E"
			    roleview_list 	(list RoleViews
				(object RoleView "end" @179
				    Parent_View 	@178
				    location   	(-335, -154)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @180
					Parent_View 	@179
					location   	(2235, 1573)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	91
					justify    	0
					label      	"+end"
					pctDist    	0.881391
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4783730C01A5"
				    client     	@178
				    supplier   	@177
				    vertices   	(list Points
					(1764, 1531)
					(2299, 1531))
				    line_style 	3
				    origin_attachment 	(1764, 1531)
				    terminal_attachment 	(2299, 1531)
				    label      	(object SegLabel @181
					Parent_View 	@179
					location   	(2260, 1501)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.928425
					height     	31
					orientation 	0))
				(object RoleView "signatureImplementations" @182
				    Parent_View 	@178
				    location   	(-335, -154)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @183
					Parent_View 	@182
					location   	(1511, 1570)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	488
					justify    	0
					label      	"+signatureImplementations"
					pctDist    	0.475410
					height     	39
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4783730C01A7"
				    client     	@178
				    supplier   	@176
				    vertices   	(list Points
					(1764, 1531)
					(1229, 1531))
				    line_style 	3
				    origin_attachment 	(1764, 1531)
				    terminal_attachment 	(1229, 1531)
				    label      	(object SegLabel @184
					Parent_View 	@182
					location   	(1304, 1498)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.860656
					height     	34
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::SapClass" @185
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1568, 1060)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@185
				location   	(1360, 1004)
				fill_color 	13434879
				nlines     	1
				max_width  	416
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@185
				location   	(1360, 1065)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	434
			    height     	136
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::ClassTypeDefinition" @186
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2528, 1068)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@186
				location   	(2233, 962)
				fill_color 	13434879
				nlines     	1
				max_width  	590
				justify    	0
				label      	"ClassTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4784F7E800AB"
			    width      	608
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$11" @187
			    location   	(2610, 1249)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9ABAE00AB"
			    roleview_list 	(list RoleViews
				(object RoleView "associationEnd" @188
				    Parent_View 	@187
				    location   	(555, 2)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @189
					Parent_View 	@188
					location   	(2421, 1291)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	304
					justify    	0
					label      	"+associationEnd"
					pctDist    	0.653846
					height     	190
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02BF"
				    client     	@187
				    supplier   	@177
				    vertices   	(list Points
					(2610, 1249)
					(2610, 1313))
				    line_style 	3
				    origin_attachment 	(2610, 1249)
				    terminal_attachment 	(2610, 1313)
				    label      	(object SegLabel @190
					Parent_View 	@188
					location   	(2673, 1291)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.653846
					height     	63
					orientation 	0))
				(object RoleView "type" @191
				    Parent_View 	@187
				    location   	(555, 2)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @192
					Parent_View 	@191
					location   	(2544, 1210)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.621359
					height     	67
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02AF"
				    client     	@187
				    supplier   	@186
				    vertices   	(list Points
					(2610, 1249)
					(2610, 1186))
				    line_style 	3
				    origin_attachment 	(2610, 1249)
				    terminal_attachment 	(2610, 1186)
				    label      	(object SegLabel @193
					Parent_View 	@191
					location   	(2653, 1208)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.650485
					height     	43
					orientation 	1))))
			(object InheritView "" @194
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A982030D"
			    client     	@186
			    supplier   	@174
			    vertices   	(list Points
				(2539, 950)
				(2539, 743))
			    line_style 	3
			    origin_attachment 	(2539, 950)
			    terminal_attachment 	(2539, 743))
			(object AssociationViewNew "$UNNAMED$6" @195
			    location   	(2004, 1041)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4784F7F5005D"
			    roleview_list 	(list RoleViews
				(object RoleView "clazz" @196
				    Parent_View 	@195
				    location   	(-51, -206)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @197
					Parent_View 	@196
					location   	(1855, 1079)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	136
					justify    	0
					label      	"+clazz"
					pctDist    	0.679803
					height     	38
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005F"
				    client     	@195
				    supplier   	@185
				    vertices   	(list Points
					(2004, 1041)
					(1785, 1041))
				    line_style 	3
				    origin_attachment 	(2004, 1041)
				    terminal_attachment 	(1785, 1041)
				    label      	(object SegLabel @198
					Parent_View 	@196
					location   	(1803, 1005)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.921182
					height     	37
					orientation 	1))
				(object RoleView "elementsOfType" @199
				    Parent_View 	@195
				    location   	(-51, -206)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @200
					Parent_View 	@199
					location   	(2045, 1009)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	320
					justify    	0
					label      	"+elementsOfType"
					pctDist    	0.186275
					height     	33
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005E"
				    client     	@195
				    supplier   	@186
				    vertices   	(list Points
					(2004, 1041)
					(2224, 1041))
				    line_style 	3
				    origin_attachment 	(2004, 1041)
				    terminal_attachment 	(2224, 1041)
				    label      	(object SegLabel @201
					Parent_View 	@199
					location   	(2177, 1079)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.784314
					height     	38
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::SignatureImplementation" @202
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(883, 1292)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@202
				location   	(614, 1211)
				fill_color 	13434879
				nlines     	1
				max_width  	538
				justify    	0
				label      	"SignatureImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47836ECF037A"
			    width      	556
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @203
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4783730402FD"
			    client     	@176
			    supplier   	@202
			    vertices   	(list Points
				(882, 1458)
				(882, 1385))
			    line_style 	3
			    origin_attachment 	(882, 1458)
			    terminal_attachment 	(882, 1385))
			(object ClassView "Class" "Logical View::data::classes::MethodSignature" @204
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(878, 1006)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@204
				location   	(702, 925)
				fill_color 	13434879
				nlines     	1
				max_width  	352
				justify    	0
				label      	"MethodSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D15030D"
			    width      	370
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$15" @205
			    location   	(878, 1148)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67F7201BB"
			    roleview_list 	(list RoleViews
				(object RoleView "implementation" @206
				    Parent_View 	@205
				    location   	(0, 195)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @207
					Parent_View 	@206
					location   	(689, 1176)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	304
					justify    	0
					label      	"+implementation"
					pctDist    	0.562500
					height     	190
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47D67F7201BD"
				    client     	@205
				    supplier   	@202
				    vertices   	(list Points
					(878, 1148)
					(878, 1198))
				    line_style 	3
				    origin_attachment 	(878, 1148)
				    terminal_attachment 	(878, 1198)
				    label      	(object SegLabel @208
					Parent_View 	@206
					location   	(931, 1179)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.612500
					height     	53
					orientation 	0))
				(object RoleView "implements_" @209
				    Parent_View 	@205
				    location   	(0, 195)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @210
					Parent_View 	@209
					location   	(723, 1116)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	260
					justify    	0
					label      	"+implements_"
					pctDist    	0.675000
					height     	156
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47D67F7201BC"
				    client     	@205
				    supplier   	@204
				    vertices   	(list Points
					(878, 1148)
					(878, 1099))
				    line_style 	3
				    origin_attachment 	(878, 1148)
				    terminal_attachment 	(878, 1099)
				    label      	(object SegLabel @211
					Parent_View 	@209
					location   	(931, 1114)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.687500
					height     	53
					orientation 	1))))
			(object InheritView "" @212
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67D1D035D"
			    client     	@204
			    supplier   	@175
			    vertices   	(list Points
				(763, 913)
				(763, 709))
			    line_style 	3
			    origin_attachment 	(763, 913)
			    terminal_attachment 	(763, 709))
			(object ClassView "Class" "Logical View::data::classes::LinkSetting" @213
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(678, 2068)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@213
				location   	(556, 2017)
				fill_color 	13434879
				nlines     	1
				max_width  	244
				justify    	0
				label      	"LinkSetting")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47DEB88201E2"
			    width      	262
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::ExtentModifyingAssociationEndSignatureImplementation" @214
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1132, 1784)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@214
				location   	(607, 1733)
				fill_color 	13434879
				nlines     	1
				max_width  	1050
				justify    	0
				label      	"ExtentModifyingAssociationEndSignatureImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49425BBA0251"
			    width      	1068
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritTreeView "" @215
			    location   	(836, 1675)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@176
			    vertices   	(list Points
				(836, 1675)
				(836, 1585)))
			(object InheritView "" @216
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4783727003B9"
			    client     	@168
			    supplier   	@176
			    vertices   	(list Points
				(453, 1716)
				(453, 1675))
			    line_style 	3
			    origin_attachment 	(453, 1716)
			    terminal_attachment 	(453, 1675)
			    drawSupplier 	@215)
			(object InheritView "" @217
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49425BEE02FD"
			    client     	@214
			    supplier   	@176
			    vertices   	(list Points
				(1132, 1721)
				(1132, 1675))
			    line_style 	3
			    origin_attachment 	(1132, 1721)
			    terminal_attachment 	(1132, 1675)
			    drawSupplier 	@215)
			(object InheritTreeView "" @218
			    location   	(1351, 485)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@171
			    vertices   	(list Points
				(1351, 485)
				(1351, 373)))
			(object InheritView "" @219
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D6805A0300"
			    client     	@204
			    supplier   	@171
			    vertices   	(list Points
				(878, 913)
				(878, 485))
			    line_style 	3
			    origin_attachment 	(878, 913)
			    terminal_attachment 	(878, 485)
			    drawSupplier 	@218)
			(object InheritView "" @220
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"457436EC01C4"
			    client     	@177
			    supplier   	@171
			    vertices   	(list Points
				(2874, 1312)
				(2874, 485))
			    line_style 	3
			    origin_attachment 	(2874, 1312)
			    terminal_attachment 	(2874, 485)
			    drawSupplier 	@218)
			(object ClassView "Class" "Logical View::data::classes::LinkManipulationAtPosition" @221
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1412, 2063)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@221
				location   	(1144, 1982)
				fill_color 	13434879
				nlines     	1
				max_width  	536
				justify    	0
				label      	"LinkManipulationAtPosition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4A6D631E01A5"
			    width      	554
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritTreeView "" @222
			    location   	(1132, 1938)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@214
			    vertices   	(list Points
				(1132, 1938)
				(1132, 1847)))
			(object InheritView "" @223
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47DEB8A501DE"
			    client     	@213
			    supplier   	@214
			    vertices   	(list Points
				(685, 2005)
				(685, 1938))
			    line_style 	3
			    origin_attachment 	(685, 2005)
			    terminal_attachment 	(685, 1938)
			    drawSupplier 	@222)
			(object InheritView "" @224
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4A6D63480280"
			    client     	@221
			    supplier   	@214
			    vertices   	(list Points
				(1412, 1970)
				(1412, 1938))
			    line_style 	3
			    origin_attachment 	(1412, 1970)
			    terminal_attachment 	(1412, 1938)
			    drawSupplier 	@222)
			(object InheritTreeView "" @225
			    location   	(1412, 2246)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@221
			    vertices   	(list Points
				(1412, 2246)
				(1412, 2156)))
			(object InheritView "" @226
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47837272003E"
			    client     	@169
			    supplier   	@221
			    vertices   	(list Points
				(1737, 2283)
				(1737, 2246))
			    line_style 	3
			    origin_attachment 	(1737, 2283)
			    terminal_attachment 	(1737, 2246)
			    drawSupplier 	@225)
			(object InheritView "" @227
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4783727300FA"
			    client     	@170
			    supplier   	@221
			    vertices   	(list Points
				(1115, 2289)
				(1115, 2246))
			    line_style 	3
			    origin_attachment 	(1115, 2289)
			    terminal_attachment 	(1115, 2246)
			    drawSupplier 	@225)))
		(object ClassDiagram "Package Ownership"
		    quid       	"4795A45C0290"
		    title      	"Package Ownership"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @228
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1332, 206)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@228
				location   	(1038, 77)
				fill_color 	13434879
				nlines     	1
				max_width  	588
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	606
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::PackageOwner" @229
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1662, 648)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@229
				location   	(1247, 544)
				fill_color 	13434879
				nlines     	1
				max_width  	830
				justify    	0
				label      	"PackageOwner")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"479592D900FA"
			    width      	848
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Association" @230
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(540, 1621)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@230
				location   	(345, 1515)
				fill_color 	13434879
				nlines     	1
				max_width  	390
				justify    	0
				label      	"Association")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44321DA40150"
			    width      	408
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::Package" @231
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(854, 1026)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@231
				location   	(448, 872)
				fill_color 	13434879
				nlines     	1
				max_width  	812
				justify    	0
				label      	"Package")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"452B7C8B00D8"
			    compartment 	(object Compartment
				Parent_View 	@231
				location   	(448, 1118)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	5
				max_width  	0)
			    width      	830
			    height     	332
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "" @232
			    location   	(940, 625)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"479592FF003E"
			    roleview_list 	(list RoleViews
				(object RoleView "owner" @233
				    Parent_View 	@232
				    location   	(687, 441)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @234
					Parent_View 	@233
					location   	(1152, 585)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	"+owner"
					pctDist    	0.713816
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"479592FF0252"
				    client     	@232
				    supplier   	@229
				    vertices   	(list Points
					(940, 625)
					(1238, 625))
				    line_style 	3
				    origin_attachment 	(940, 625)
				    terminal_attachment 	(1238, 625)
				    label      	(object SegLabel @235
					Parent_View 	@233
					location   	(1190, 676)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.842105
					height     	51
					orientation 	1))
				(object RoleView "ownedPackages" @236
				    Parent_View 	@232
				    location   	(687, 441)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @237
					Parent_View 	@236
					location   	(1064, 820)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	335
					justify    	0
					label      	"+ownedPackages"
					pctDist    	0.866667
					height     	188
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"479592FF0242"
				    client     	@232
				    supplier   	@231
				    vertices   	(list Points
					(940, 625)
					(876, 625)
					(876, 860))
				    line_style 	3
				    origin_attachment 	(940, 625)
				    terminal_attachment 	(876, 860)
				    label      	(object SegLabel @238
					Parent_View 	@236
					location   	(816, 823)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.880658
					height     	61
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$7" @239
			    location   	(706, 1347)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4795A52A00EA"
			    roleview_list 	(list RoleViews
				(object RoleView "associations" @240
				    Parent_View 	@239
				    location   	(-148, 486)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @241
					Parent_View 	@240
					location   	(855, 1409)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	253
					justify    	0
					label      	"+associations"
					pctDist    	0.397959
					height     	149
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795A52A03A9"
				    client     	@239
				    supplier   	@230
				    vertices   	(list Points
					(706, 1347)
					(706, 1502))
				    line_style 	3
				    origin_attachment 	(706, 1347)
				    terminal_attachment 	(706, 1502)
				    label      	(object SegLabel @242
					Parent_View 	@240
					location   	(765, 1451)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.668367
					height     	59
					orientation 	0))
				(object RoleView "package_" @243
				    Parent_View 	@239
				    location   	(-148, 486)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @244
					Parent_View 	@243
					location   	(849, 1284)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	205
					justify    	0
					label      	"+package_"
					pctDist    	0.411111
					height     	143
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795A52A03B9"
				    client     	@239
				    supplier   	@231
				    vertices   	(list Points
					(706, 1347)
					(706, 1192))
				    line_style 	3
				    origin_attachment 	(706, 1347)
				    terminal_attachment 	(706, 1192)
				    label      	(object SegLabel @245
					Parent_View 	@243
					location   	(752, 1222)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.805128
					height     	46
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::TypeAdapter" @246
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(575, 2135)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@246
				location   	(330, 1979)
				fill_color 	13434879
				nlines     	1
				max_width  	490
				justify    	0
				label      	"TypeAdapter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F112210022"
			    width      	508
			    height     	336
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @247
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2178, 1936)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@247
				location   	(1694, 1355)
				fill_color 	13434879
				nlines     	1
				max_width  	968
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@247
				location   	(1694, 1416)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	22
				max_width  	0)
			    width      	986
			    height     	1186
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$8" @248
			    location   	(1771, 977)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4795967B001F"
			    roleview_list 	(list RoleViews
				(object RoleView "package_" @249
				    Parent_View 	@248
				    location   	(-132, 295)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @250
					Parent_View 	@249
					location   	(1446, 1030)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	205
					justify    	0
					label      	"+package_"
					pctDist    	0.649416
					height     	53
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795967B0020"
				    client     	@248
				    supplier   	@231
				    vertices   	(list Points
					(1771, 977)
					(1269, 977))
				    line_style 	3
				    origin_attachment 	(1771, 977)
				    terminal_attachment 	(1269, 977)
				    label      	(object SegLabel @251
					Parent_View 	@249
					location   	(1320, 1024)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.898164
					height     	47
					orientation 	0))
				(object RoleView "classes" @252
				    Parent_View 	@248
				    location   	(-132, 295)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @253
					Parent_View 	@252
					location   	(2012, 1301)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	180
					justify    	0
					label      	"+classes"
					pctDist    	0.919014
					height     	106
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795967B0021"
				    client     	@248
				    supplier   	@247
				    vertices   	(list Points
					(1771, 977)
					(1906, 977)
					(1906, 1343))
				    line_style 	3
				    origin_attachment 	(1771, 977)
				    terminal_attachment 	(1906, 1343)
				    label      	(object SegLabel @254
					Parent_View 	@252
					location   	(1863, 1319)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.954925
					height     	44
					orientation 	1))))
			(object AssociationViewNew "AdaptedTo" @255
			    location   	(1257, 2061)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @256
				Parent_View 	@255
				location   	(1277, 2040)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"AdaptedTo"
				pctDist    	0.833333
				height     	21
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F112BD0399"
			    roleview_list 	(list RoleViews
				(object RoleView "adaptedBy" @257
				    Parent_View 	@255
				    location   	(-884, 477)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @258
					Parent_View 	@257
					location   	(969, 2026)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	224
					justify    	0
					label      	"+adaptedBy"
					pctDist    	0.672897
					height     	35
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112BE0232"
				    client     	@255
				    supplier   	@246
				    vertices   	(list Points
					(1257, 2061)
					(829, 2061))
				    line_style 	3
				    origin_attachment 	(1257, 2061)
				    terminal_attachment 	(829, 2061)
				    label      	(object SegLabel @259
					Parent_View 	@257
					location   	(913, 2124)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.807025
					height     	63
					orientation 	0))
				(object RoleView "to" @260
				    Parent_View 	@255
				    location   	(-884, 477)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @261
					Parent_View 	@260
					location   	(1598, 2020)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	60
					justify    	0
					label      	"+to"
					pctDist    	0.800000
					height     	42
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112BE01FC"
				    client     	@255
				    supplier   	@247
				    vertices   	(list Points
					(1257, 2061)
					(1685, 2061))
				    line_style 	3
				    origin_attachment 	(1257, 2061)
				    terminal_attachment 	(1685, 2061)
				    label      	(object SegLabel @262
					Parent_View 	@260
					location   	(1642, 2115)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$16" @263
			    location   	(1257, 2270)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F112ED01E4"
			    roleview_list 	(list RoleViews
				(object RoleView "adapters" @264
				    Parent_View 	@263
				    location   	(-884, 686)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @265
					Parent_View 	@264
					location   	(944, 2233)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	186
					justify    	0
					label      	"+adapters"
					pctDist    	0.731308
					height     	37
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112EE01EC"
				    client     	@263
				    supplier   	@246
				    vertices   	(list Points
					(1257, 2270)
					(829, 2270))
				    line_style 	3
				    origin_attachment 	(1257, 2270)
				    terminal_attachment 	(829, 2270)
				    label      	(object SegLabel @266
					Parent_View 	@264
					location   	(872, 2324)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.900000
					height     	54
					orientation 	0))
				(object RoleView "adapted" @267
				    Parent_View 	@263
				    location   	(-884, 686)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @268
					Parent_View 	@267
					location   	(1565, 2234)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	176
					justify    	0
					label      	"+adapted"
					pctDist    	0.719626
					height     	36
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112EE01B9"
				    client     	@263
				    supplier   	@247
				    vertices   	(list Points
					(1257, 2270)
					(1685, 2270))
				    line_style 	3
				    origin_attachment 	(1257, 2270)
				    terminal_attachment 	(1685, 2270)
				    label      	(object SegLabel @269
					Parent_View 	@267
					location   	(1642, 2324)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object InheritTreeView "" @270
			    location   	(1332, 453)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@228
			    vertices   	(list Points
				(1332, 453)
				(1332, 347)))
			(object InheritView "" @271
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47959544033C"
			    client     	@229
			    supplier   	@228
			    vertices   	(list Points
				(1662, 532)
				(1662, 453))
			    line_style 	3
			    origin_attachment 	(1662, 532)
			    terminal_attachment 	(1662, 453)
			    drawSupplier 	@270)
			(object InheritView "" @272
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"453F571D025B"
			    client     	@230
			    supplier   	@228
			    vertices   	(list Points
				(391, 1502)
				(391, 453))
			    line_style 	3
			    origin_attachment 	(391, 1502)
			    terminal_attachment 	(391, 453)
			    drawSupplier 	@270)))
		(object ClassDiagram "TypeDefinition Ownership"
		    quid       	"479A15C70252"
		    title      	"TypeDefinition Ownership"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @273
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(373, 1251)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@273
				location   	(225, 1145)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@273
				location   	(225, 1206)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Signature" @274
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2807, 239)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@274
				location   	(2540, 58)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Signature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432198602CB"
			    width      	552
			    height     	386
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @275
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1103, 269)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@275
				location   	(940, 156)
				fill_color 	13434879
				nlines     	1
				max_width  	326
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	344
			    height     	250
			    annotation 	8)
			(object AssociationViewNew "$UNNAMED$12" @276
			    location   	(269, 325)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF4180109"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedTypeDefinition" @277
				    Parent_View 	@276
				    location   	(-195, -1748)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @278
					Parent_View 	@277
					location   	(566, 126)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownedTypeDefinition"
					pctDist    	0.548961
					height     	55
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010A"
				    client     	@276
				    supplier   	@275
				    vertices   	(list Points
					(269, 325)
					(269, 180)
					(931, 180))
				    line_style 	3
				    origin_attachment 	(269, 325)
				    terminal_attachment 	(931, 180)
				    label      	(object SegLabel @279
					Parent_View 	@277
					location   	(898, 151)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.958932
					height     	30
					orientation 	0))
				(object RoleView "ownerTypedElement" @280
				    Parent_View 	@276
				    location   	(-195, -1748)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @281
					Parent_View 	@280
					location   	(486, 1022)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	393
					justify    	0
					label      	"+ownerTypedElement"
					pctDist    	0.863685
					height     	217
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010B"
				    client     	@276
				    supplier   	@273
				    vertices   	(list Points
					(269, 325)
					(269, 1133))
				    line_style 	3
				    origin_attachment 	(269, 325)
				    terminal_attachment 	(269, 1133)
				    label      	(object SegLabel @282
					Parent_View 	@280
					location   	(344, 1095)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.953142
					height     	75
					orientation 	0))))
			(object AssociationViewNew "OutputOfSignature" @283
			    location   	(1903, 175)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @284
				Parent_View 	@283
				location   	(1869, 209)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"OutputOfSignature"
				pctDist    	-0.083333
				height     	34
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9EDFD0000"
			    roleview_list 	(list RoleViews
				(object RoleView "signaturesWithOutput" @285
				    Parent_View 	@283
				    location   	(697, -212)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @286
					Parent_View 	@285
					location   	(2175, 143)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	426
					justify    	0
					label      	"+signaturesWithOutput"
					pctDist    	0.433692
					height     	33
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9EDFD0002"
				    client     	@283
				    supplier   	@274
				    vertices   	(list Points
					(1903, 175)
					(2531, 175))
				    line_style 	3
				    origin_attachment 	(1903, 175)
				    terminal_attachment 	(2531, 175)
				    label      	(object SegLabel @287
					Parent_View 	@285
					location   	(2486, 152)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.930328
					height     	24
					orientation 	0))
				(object RoleView "output" @288
				    Parent_View 	@283
				    location   	(697, -212)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @289
					Parent_View 	@288
					location   	(1493, 147)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	140
					justify    	0
					label      	"+output"
					pctDist    	0.653689
					height     	29
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9EDFD0001"
				    client     	@283
				    supplier   	@275
				    vertices   	(list Points
					(1903, 175)
					(1275, 175))
				    line_style 	3
				    origin_attachment 	(1903, 175)
				    terminal_attachment 	(1275, 175)
				    label      	(object SegLabel @290
					Parent_View 	@288
					location   	(1340, 142)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.897541
					height     	34
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$13" @291
			    location   	(1903, 319)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF46E03D8"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerSignature" @292
				    Parent_View 	@291
				    location   	(457, -1185)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @293
					Parent_View 	@292
					location   	(2215, 287)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	319
					justify    	0
					label      	"+ownerSignature"
					pctDist    	0.497951
					height     	33
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF46E03DA"
				    client     	@291
				    supplier   	@274
				    vertices   	(list Points
					(1903, 319)
					(2531, 319))
				    line_style 	3
				    origin_attachment 	(1903, 319)
				    terminal_attachment 	(2531, 319)
				    label      	(object SegLabel @294
					Parent_View 	@292
					location   	(2476, 284)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.913934
					height     	36
					orientation 	0))
				(object RoleView "ownedTypeDefinitions" @295
				    Parent_View 	@291
				    location   	(457, -1185)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @296
					Parent_View 	@295
					location   	(1604, 291)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	416
					justify    	0
					label      	"+ownedTypeDefinitions"
					pctDist    	0.477237
					height     	29
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF46E03D9"
				    client     	@291
				    supplier   	@275
				    vertices   	(list Points
					(1903, 319)
					(1275, 319))
				    line_style 	3
				    origin_attachment 	(1903, 319)
				    terminal_attachment 	(1275, 319)
				    label      	(object SegLabel @297
					Parent_View 	@295
					location   	(1336, 293)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.903689
					height     	27
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::NestedTypeDefinition" @298
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(753, 889)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@298
				location   	(546, 808)
				fill_color 	13434879
				nlines     	1
				max_width  	414
				justify    	0
				label      	"NestedTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A98D0138"
			    width      	432
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$9" @299
			    location   	(403, 365)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A9960148"
			    roleview_list 	(list RoleViews
				(object RoleView "$UNNAMED$10" @300
				    Parent_View 	@299
				    location   	(-803, -22)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @301
					Parent_View 	@300
					location   	(410, 908)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9A99700DC"
				    client     	@299
				    supplier   	@298
				    vertices   	(list Points
					(403, 365)
					(403, 866)
					(537, 866))
				    line_style 	3
				    origin_attachment 	(403, 365)
				    terminal_attachment 	(537, 866)
				    label      	(object SegLabel @302
					Parent_View 	@300
					location   	(470, 905)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.894397
					height     	39
					orientation 	1))
				(object RoleView "type" @303
				    Parent_View 	@299
				    location   	(-803, -22)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @304
					Parent_View 	@303
					location   	(728, 235)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.680315
					height     	23
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9A99700DA"
				    client     	@299
				    supplier   	@275
				    vertices   	(list Points
					(403, 365)
					(403, 258)
					(931, 258))
				    line_style 	3
				    origin_attachment 	(403, 365)
				    terminal_attachment 	(931, 258)
				    label      	(object SegLabel @305
					Parent_View 	@303
					location   	(895, 226)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.943307
					height     	32
					orientation 	0))))
			(object AssociationViewNew "$UNNAMED$14" @306
			    location   	(731, 474)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CD54E4031C"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedTypeDefinition" @307
				    Parent_View 	@306
				    location   	(-118, -298)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @308
					Parent_View 	@307
					location   	(1008, 267)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownedTypeDefinition"
					pctDist    	1.245902
					height     	87
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CD54E60251"
				    client     	@306
				    supplier   	@275
				    vertices   	(list Points
					(731, 474)
					(731, 353)
					(931, 353))
				    line_style 	3
				    origin_attachment 	(731, 474)
				    terminal_attachment 	(931, 353)
				    label      	(object SegLabel @309
					Parent_View 	@307
					location   	(886, 327)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.863354
					height     	27
					orientation 	0))
				(object RoleView "owningNestedTypeDefinition" @310
				    Parent_View 	@306
				    location   	(-118, -298)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @311
					Parent_View 	@310
					location   	(749, 685)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	530
					justify    	0
					label      	"+owningNestedTypeDefinition"
					pctDist    	0.655689
					height     	18
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CD54E60261"
				    client     	@306
				    supplier   	@298
				    vertices   	(list Points
					(731, 474)
					(731, 795))
				    line_style 	3
				    origin_attachment 	(731, 474)
				    terminal_attachment 	(731, 795)
				    label      	(object SegLabel @312
					Parent_View 	@310
					location   	(667, 763)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.898204
					height     	65
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::AssociationEnd" @313
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1598, 1483)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@313
				location   	(1284, 1327)
				fill_color 	13434879
				nlines     	1
				max_width  	628
				justify    	0
				label      	"AssociationEnd")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44EC55FB03B8"
			    width      	646
			    height     	336
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::ClassTypeDefinition" @314
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1593, 856)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@314
				location   	(1321, 703)
				fill_color 	13434879
				nlines     	1
				max_width  	545
				justify    	0
				label      	"ClassTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4784F7E800AB"
			    width      	563
			    height     	331
			    annotation 	8)
			(object AssociationViewNew "$UNNAMED$11" @315
			    location   	(1596, 1168)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9ABAE00AB"
			    roleview_list 	(list RoleViews
				(object RoleView "associationEnd" @316
				    Parent_View 	@315
				    location   	(150, -336)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @317
					Parent_View 	@316
					location   	(1405, 1285)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	304
					justify    	0
					label      	"+associationEnd"
					pctDist    	0.801653
					height     	192
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02BF"
				    client     	@315
				    supplier   	@313
				    vertices   	(list Points
					(1596, 1168)
					(1596, 1315))
				    line_style 	3
				    origin_attachment 	(1596, 1168)
				    terminal_attachment 	(1596, 1315)
				    label      	(object SegLabel @318
					Parent_View 	@316
					location   	(1661, 1277)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.741176
					height     	65
					orientation 	0))
				(object RoleView "type" @319
				    Parent_View 	@315
				    location   	(150, -336)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @320
					Parent_View 	@319
					location   	(1533, 1045)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.834320
					height     	64
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9ABAF02AF"
				    client     	@315
				    supplier   	@314
				    vertices   	(list Points
					(1596, 1168)
					(1596, 1021))
				    line_style 	3
				    origin_attachment 	(1596, 1168)
				    terminal_attachment 	(1596, 1021)
				    label      	(object SegLabel @321
					Parent_View 	@319
					location   	(1635, 1052)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.786982
					height     	39
					orientation 	1))))
			(object InheritTreeView "" @322
			    location   	(1103, 528)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@275
			    vertices   	(list Points
				(1103, 528)
				(1103, 394)))
			(object InheritView "" @323
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A982030D"
			    client     	@314
			    supplier   	@275
			    vertices   	(list Points
				(1398, 690)
				(1398, 528))
			    line_style 	3
			    origin_attachment 	(1398, 690)
			    terminal_attachment 	(1398, 528)
			    drawSupplier 	@322)
			(object InheritView "" @324
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9A99B0177"
			    client     	@298
			    supplier   	@275
			    vertices   	(list Points
				(878, 795)
				(878, 528))
			    line_style 	3
			    origin_attachment 	(878, 795)
			    terminal_attachment 	(878, 528)
			    drawSupplier 	@322)))
		(object ClassDiagram "Signatures"
		    quid       	"47D67CF103B4"
		    title      	"Signatures"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @325
			    ShowCompartmentStereotypes 	TRUE
			    SuppressAttribute 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2220, 1604)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@325
				location   	(2039, 1554)
				fill_color 	13434879
				nlines     	1
				max_width  	362
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	380
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @326
			    ShowCompartmentStereotypes 	TRUE
			    SuppressAttribute 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(901, 227)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@326
				location   	(720, 177)
				fill_color 	13434879
				nlines     	1
				max_width  	362
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	380
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @327
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(359, 186)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@327
				location   	(211, 80)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@327
				location   	(211, 141)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SignatureImplementation" @328
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(999, 1891)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@328
				location   	(731, 1810)
				fill_color 	13434879
				nlines     	1
				max_width  	536
				justify    	0
				label      	"SignatureImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47836ECF037A"
			    width      	554
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::MethodSignature" @329
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2071, 1889)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@329
				location   	(1895, 1808)
				fill_color 	13434879
				nlines     	1
				max_width  	352
				justify    	0
				label      	"MethodSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D15030D"
			    width      	370
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$15" @330
			    location   	(1581, 1885)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67F7201BB"
			    roleview_list 	(list RoleViews
				(object RoleView "implementation" @331
				    Parent_View 	@330
				    location   	(-362, 67)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @332
					Parent_View 	@331
					location   	(1437, 1850)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	304
					justify    	0
					label      	"+implementation"
					pctDist    	0.475728
					height     	36
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47D67F7201BD"
				    client     	@330
				    supplier   	@328
				    vertices   	(list Points
					(1581, 1885)
					(1276, 1885))
				    line_style 	3
				    origin_attachment 	(1581, 1885)
				    terminal_attachment 	(1276, 1885)
				    label      	(object SegLabel @333
					Parent_View 	@331
					location   	(1325, 1932)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.838188
					height     	47
					orientation 	0))
				(object RoleView "implements_" @334
				    Parent_View 	@330
				    location   	(-362, 67)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @335
					Parent_View 	@334
					location   	(1739, 1930)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	256
					justify    	0
					label      	"+implements_"
					pctDist    	0.522581
					height     	45
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47D67F7201BC"
				    client     	@330
				    supplier   	@329
				    vertices   	(list Points
					(1581, 1885)
					(1886, 1885))
				    line_style 	3
				    origin_attachment 	(1581, 1885)
				    terminal_attachment 	(1886, 1885)
				    label      	(object SegLabel @336
					Parent_View 	@334
					location   	(1822, 1845)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.793548
					height     	41
					orientation 	0))))
			(object InheritView "" @337
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D6805A0300"
			    client     	@329
			    supplier   	@325
			    vertices   	(list Points
				(2234, 1795)
				(2234, 1666))
			    line_style 	3
			    origin_attachment 	(2234, 1795)
			    terminal_attachment 	(2234, 1666))
			(object ClassView "Class" "Logical View::data::classes::NamedValue" @338
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(634, 529)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@338
				location   	(367, 448)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"NamedValue")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4522A56F0149"
			    width      	552
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::behavioral::actions::Block" @339
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(479, 2672)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@339
				location   	(212, 2493)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Block")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"454606CB020A"
			    width      	552
			    height     	382
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::PlatformSpecificImplementation" @340
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1371, 2585)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@340
				location   	(1066, 2479)
				fill_color 	13434879
				nlines     	1
				max_width  	610
				justify    	0
				label      	"PlatformSpecificImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"489C71AE029F"
			    width      	628
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::NativeImpl" @341
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1216, 2208)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@341
				location   	(1108, 2157)
				fill_color 	13434879
				nlines     	1
				max_width  	216
				justify    	0
				label      	"NativeImpl")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"489CAD05038A"
			    width      	234
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$17" @342
			    location   	(1216, 2369)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"489CAD34032C"
			    roleview_list 	(list RoleViews
				(object RoleView "platformSpecificImplementaiton" @343
				    Parent_View 	@342
				    location   	(135, 360)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @344
					Parent_View 	@343
					location   	(1551, 2411)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	588
					justify    	0
					label      	"+platformSpecificImplementaiton"
					pctDist    	0.428571
					height     	335
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"489CAD350177"
				    client     	@342
				    supplier   	@340
				    vertices   	(list Points
					(1216, 2369)
					(1216, 2467))
				    line_style 	3
				    origin_attachment 	(1216, 2369)
				    terminal_attachment 	(1216, 2467)
				    label      	(object SegLabel @345
					Parent_View 	@343
					location   	(1155, 2420)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.532468
					height     	62
					orientation 	1))
				(object RoleView "$UNNAMED$18" @346
				    Parent_View 	@342
				    location   	(135, 360)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"489CAD350196"
				    client     	@342
				    supplier   	@341
				    vertices   	(list Points
					(1216, 2369)
					(1216, 2271))
				    line_style 	3
				    origin_attachment 	(1216, 2369)
				    terminal_attachment 	(1216, 2271)
				    label      	(object SegLabel @347
					Parent_View 	@346
					location   	(1169, 2304)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.671053
					height     	48
					orientation 	0))))
			(object NoteView @348
			    location   	(1630, 347)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@348
				location   	(1164, 172)
				fill_color 	13434879
				nlines     	7
				max_width  	896
				label      	
|TODO / Idea: make Signature inherit from TypedElement, replacing the "output" association. This would allow the result type to be inferred if possible or being overridden by an explicit type definition.
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	956
			    height     	363)
			(object ClassView "Class" "Logical View::data::classes::FunctionSignatureImplementation" @349
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(499, 2236)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@349
				location   	(180, 2155)
				fill_color 	13434879
				nlines     	1
				max_width  	638
				justify    	0
				label      	"FunctionSignatureImplementation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4974995A0069"
			    width      	656
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::FunctionSignature" @350
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(641, 1632)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@350
				location   	(171, 1526)
				fill_color 	13434879
				nlines     	1
				max_width  	940
				justify    	0
				label      	"FunctionSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D190077"
			    width      	958
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$22" @351
			    location   	(294, 1946)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4975FB7F01F4"
			    roleview_list 	(list RoleViews
				(object RoleView "implementation" @352
				    Parent_View 	@351
				    location   	(-2264, 880)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @353
					Parent_View 	@352
					location   	(466, 2116)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	392
					justify    	0
					label      	"+implementation"
					pctDist    	0.863014
					height     	172
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4975FB7F01F5"
				    client     	@351
				    supplier   	@349
				    vertices   	(list Points
					(294, 1946)
					(294, 2143))
				    line_style 	3
				    origin_attachment 	(294, 1946)
				    terminal_attachment 	(294, 2143)
				    label      	(object SegLabel @354
					Parent_View 	@352
					location   	(236, 2118)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.876712
					height     	59
					orientation 	1))
				(object RoleView "functionSignature" @355
				    Parent_View 	@351
				    location   	(-2264, 880)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @356
					Parent_View 	@355
					location   	(488, 1791)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	346
					justify    	0
					label      	"+functionSignature"
					pctDist    	0.798165
					height     	194
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4975FB7F01F6"
				    client     	@351
				    supplier   	@350
				    vertices   	(list Points
					(294, 1946)
					(294, 1750))
				    line_style 	3
				    origin_attachment 	(294, 1946)
				    terminal_attachment 	(294, 1750)
				    label      	(object SegLabel @357
					Parent_View 	@355
					location   	(223, 1794)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.779817
					height     	72
					orientation 	0))))
			(object InheritTreeView "" @358
			    location   	(999, 2076)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@328
			    vertices   	(list Points
				(999, 2076)
				(999, 1984)))
			(object InheritView "" @359
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"489CAD2D0186"
			    client     	@341
			    supplier   	@328
			    vertices   	(list Points
				(1217, 2145)
				(1217, 2076))
			    line_style 	3
			    origin_attachment 	(1217, 2145)
			    terminal_attachment 	(1217, 2076)
			    drawSupplier 	@358)
			(object InheritView "" @360
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4974996A0390"
			    client     	@349
			    supplier   	@328
			    vertices   	(list Points
				(754, 2142)
				(754, 2076))
			    line_style 	3
			    origin_attachment 	(754, 2142)
			    terminal_attachment 	(754, 2076)
			    drawSupplier 	@358)
			(object InheritView "" @361
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4975FB74030D"
			    client     	@339
			    supplier   	@349
			    vertices   	(list Points
				(467, 2480)
				(467, 2329))
			    line_style 	3
			    origin_attachment 	(467, 2480)
			    terminal_attachment 	(467, 2329))
			(object InheritView "" @362
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"45472E5E0375"
			    client     	@338
			    supplier   	@326
			    vertices   	(list Points
				(741, 435)
				(741, 288))
			    line_style 	3
			    origin_attachment 	(741, 435)
			    terminal_attachment 	(741, 288))
			(object InheritTreeView "" @363
			    location   	(360, 410)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@327
			    vertices   	(list Points
				(360, 410)
				(360, 304)))
			(object InheritView "" @364
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717B85102FB"
			    client     	@338
			    supplier   	@327
			    vertices   	(list Points
				(599, 436)
				(599, 410))
			    line_style 	3
			    origin_attachment 	(599, 436)
			    terminal_attachment 	(599, 410)
			    drawSupplier 	@363)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @365
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(454, 1182)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@365
				location   	(54, 901)
				fill_color 	13434879
				nlines     	1
				max_width  	800
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	818
			    height     	586
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @366
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2584, 2352)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@366
				location   	(2384, 2183)
				fill_color 	13434879
				nlines     	1
				max_width  	401
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@366
				location   	(2384, 2244)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	22
				max_width  	0)
			    width      	419
			    height     	363
			    annotation 	8)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @367
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(200, 556)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@367
				location   	(67, 481)
				fill_color 	13434879
				nlines     	1
				max_width  	266
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    width      	284
			    height     	174
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "l" @368
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@368
				location   	(194, 439)
				anchor_loc 	1
				nlines     	1
				max_width  	60
				justify    	0
				label      	"l")
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717B87503E5"
			    client     	@367
			    supplier   	@327
			    vertices   	(list Points
				(194, 469)
				(194, 410))
			    line_style 	3
			    origin_attachment 	(194, 469)
			    terminal_attachment 	(194, 410)
			    drawSupplier 	@363)
			(object ClassView "Class" "Logical View::data::classes::Signature" @369
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    ShowOperationSignature 	TRUE
			    location   	(2217, 1250)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@369
				location   	(1735, 1106)
				fill_color 	13434879
				nlines     	1
				max_width  	964
				justify    	0
				label      	"Signature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432198602CB"
			    compartment 	(object Compartment
				Parent_View 	@369
				location   	(1735, 1167)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	1956
				compartmentItems 	(list Compartment
				    "+ conformsTo(s : Signature) : Boolean"
				    "+ conformsToExcluding(s : Signature, excludingConforming : SapClass, excludingTo : SapClass) : Boolean"))
			    width      	982
			    height     	313
			    annotation 	8)
			(object AssociationViewNew "OutputOfSignature" @370
			    location   	(1294, 1354)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @371
				Parent_View 	@370
				location   	(1208, 1398)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	349
				justify    	0
				label      	"OutputOfSignature"
				pctDist    	-0.950000
				height     	44
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9EDFD0000"
			    roleview_list 	(list RoleViews
				(object RoleView "signaturesWithOutput" @372
				    Parent_View 	@370
				    location   	(-402, 1098)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @373
					Parent_View 	@372
					location   	(1472, 1325)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	537
					justify    	0
					label      	"+signaturesWithOutput"
					pctDist    	0.414352
					height     	30
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9EDFD0002"
				    client     	@370
				    supplier   	@369
				    vertices   	(list Points
					(1294, 1354)
					(1726, 1354))
				    line_style 	3
				    origin_attachment 	(1294, 1354)
				    terminal_attachment 	(1726, 1354)
				    label      	(object SegLabel @374
					Parent_View 	@372
					location   	(1678, 1395)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.891652
					height     	41
					orientation 	1))
				(object RoleView "output" @375
				    Parent_View 	@370
				    location   	(-402, 1098)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @376
					Parent_View 	@375
					location   	(938, 1319)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	303
					justify    	0
					label      	"+output"
					pctDist    	0.826389
					height     	36
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B9EDFD0001"
				    client     	@370
				    supplier   	@365
				    vertices   	(list Points
					(1294, 1354)
					(863, 1354))
				    line_style 	3
				    origin_attachment 	(1294, 1354)
				    terminal_attachment 	(863, 1354)
				    label      	(object SegLabel @377
					Parent_View 	@375
					location   	(907, 1397)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	75
					justify    	0
					label      	"0..1"
					pctDist    	0.900356
					height     	43
					orientation 	0))))
			(object AttachView "" @378
			    stereotype 	TRUE
			    line_color 	3342489
			    client     	@348
			    supplier   	@370
			    vertices   	(list Points
				(1568, 528)
				(1294, 1354))
			    line_style 	0)
			(object AssociationViewNew "$UNNAMED$13" @379
			    location   	(1294, 1169)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF46E03D8"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerSignature" @380
				    Parent_View 	@379
				    location   	(905, -187)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @381
					Parent_View 	@380
					location   	(1556, 1121)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownerSignature"
					pctDist    	0.606481
					height     	49
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF46E03DA"
				    client     	@379
				    supplier   	@369
				    vertices   	(list Points
					(1294, 1169)
					(1726, 1169))
				    line_style 	3
				    origin_attachment 	(1294, 1169)
				    terminal_attachment 	(1726, 1169)
				    label      	(object SegLabel @382
					Parent_View 	@380
					location   	(1679, 1225)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.894075
					height     	56
					orientation 	1))
				(object RoleView "ownedTypeDefinitions" @383
				    Parent_View 	@379
				    location   	(905, -187)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @384
					Parent_View 	@383
					location   	(1095, 1118)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	548
					justify    	0
					label      	"+ownedTypeDefinitions"
					pctDist    	0.460648
					height     	52
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF46E03D9"
				    client     	@379
				    supplier   	@365
				    vertices   	(list Points
					(1294, 1169)
					(863, 1169))
				    line_style 	3
				    origin_attachment 	(1294, 1169)
				    terminal_attachment 	(863, 1169)
				    label      	(object SegLabel @385
					Parent_View 	@383
					location   	(922, 1208)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.865741
					height     	39
					orientation 	0))))
			(object AssociationViewNew "FaultsOfSignature" @386
			    location   	(2546, 1787)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @387
				Parent_View 	@386
				location   	(2562, 1719)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	341
				justify    	0
				label      	"FaultsOfSignature"
				pctDist    	0.783333
				height     	69
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"443B531C0296"
			    roleview_list 	(list RoleViews
				(object RoleView "faults" @388
				    Parent_View 	@386
				    location   	(866, 939)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @389
					Parent_View 	@388
					location   	(2473, 2141)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	166
					justify    	0
					label      	"+faults"
					pctDist    	0.926391
					height     	74
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"443B53200210"
				    client     	@386
				    supplier   	@366
				    vertices   	(list Points
					(2546, 1787)
					(2546, 2170))
				    line_style 	3
				    origin_attachment 	(2546, 1787)
				    terminal_attachment 	(2546, 2170)
				    label      	(object SegLabel @390
					Parent_View 	@388
					location   	(2626, 2137)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.913824
					height     	80
					orientation 	0))
				(object RoleView "signaturesWithFault" @391
				    Parent_View 	@386
				    location   	(866, 939)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @392
					Parent_View 	@391
					location   	(2768, 1427)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	502
					justify    	0
					label      	"+signaturesWithFault"
					pctDist    	0.943026
					height     	222
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"443B53200224"
				    client     	@386
				    supplier   	@369
				    vertices   	(list Points
					(2546, 1787)
					(2546, 1405))
				    line_style 	3
				    origin_attachment 	(2546, 1787)
				    terminal_attachment 	(2546, 1405)
				    label      	(object SegLabel @393
					Parent_View 	@391
					location   	(2474, 1427)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.944251
					height     	73
					orientation 	0))))
			(object InheritTreeView "" @394
			    location   	(2217, 1497)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@369
			    vertices   	(list Points
				(2217, 1497)
				(2217, 1406)))
			(object InheritView "" @395
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67D1D035D"
			    client     	@329
			    supplier   	@369
			    vertices   	(list Points
				(1956, 1796)
				(1956, 1497))
			    line_style 	3
			    origin_attachment 	(1956, 1796)
			    terminal_attachment 	(1956, 1497)
			    drawSupplier 	@394)
			(object InheritView "" @396
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47D67D2001B3"
			    client     	@350
			    supplier   	@369
			    vertices   	(list Points
				(622, 1513)
				(622, 1497))
			    line_style 	3
			    origin_attachment 	(622, 1513)
			    terminal_attachment 	(622, 1497)
			    drawSupplier 	@394)
			(object ClassView "Class" "Logical View::data::classes::Parameter" @397
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(627, 752)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@397
				location   	(513, 700)
				fill_color 	13434879
				nlines     	1
				max_width  	228
				justify    	0
				label      	"Parameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F12A7E0062"
			    width      	246
			    height     	128
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @398
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48566FFF0196"
			    client     	@397
			    supplier   	@338
			    vertices   	(list Points
				(612, 687)
				(612, 622))
			    line_style 	3
			    origin_attachment 	(612, 687)
			    terminal_attachment 	(612, 622))
			(object AssociationViewNew "$UNNAMED$30" @399
			    location   	(294, 756)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49D2B2E10271"
			    roleview_list 	(list RoleViews
				(object RoleView "defaultValue" @400
				    Parent_View 	@399
				    location   	(-293, 79)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @401
					Parent_View 	@400
					location   	(342, 678)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	248
					justify    	0
					label      	"+defaultValue"
					pctDist    	-0.494845
					height     	78
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49D2B2E30119"
				    client     	@399
				    supplier   	@367
				    vertices   	(list Points
					(294, 756)
					(197, 756)
					(197, 643))
				    line_style 	3
				    origin_attachment 	(294, 756)
				    terminal_attachment 	(197, 643)
				    label      	(object SegLabel @402
					Parent_View 	@400
					location   	(144, 683)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.813131
					height     	54
					orientation 	0))
				(object RoleView "$UNNAMED$31" @403
				    Parent_View 	@399
				    location   	(-293, 79)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49D2B2E30186"
				    client     	@399
				    supplier   	@397
				    vertices   	(list Points
					(294, 756)
					(504, 756))
				    line_style 	3
				    origin_attachment 	(294, 756)
				    terminal_attachment 	(504, 756)
				    label      	(object SegLabel @404
					Parent_View 	@403
					location   	(446, 798)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.723810
					height     	42
					orientation 	1))))
			(object AssociationViewNew "InputOfSignature" @405
			    location   	(1541, 741)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @406
				Parent_View 	@405
				location   	(1411, 779)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	319
				justify    	0
				label      	"InputOfSignature"
				pctDist    	-1.683333
				height     	38
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F12A8C021A"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerSignature" @407
				    Parent_View 	@405
				    location   	(-155, 485)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @408
					Parent_View 	@407
					location   	(2171, 1040)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	319
					justify    	0
					label      	"+ownerSignature"
					pctDist    	0.933424
					height     	193
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F12A8C021C"
				    client     	@405
				    supplier   	@369
				    vertices   	(list Points
					(1541, 741)
					(1978, 741)
					(1978, 1094))
				    line_style 	3
				    origin_attachment 	(1541, 741)
				    terminal_attachment 	(1978, 1094)
				    label      	(object SegLabel @409
					Parent_View 	@407
					location   	(1918, 1048)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.942857
					height     	61
					orientation 	1))
				(object RoleView "input" @410
				    Parent_View 	@405
				    location   	(-155, 485)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @411
					Parent_View 	@410
					location   	(819, 703)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	153
					justify    	0
					label      	"+input"
					pctDist    	0.912378
					height     	39
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F12A8C021B"
				    client     	@405
				    supplier   	@397
				    vertices   	(list Points
					(1541, 741)
					(750, 741))
				    line_style 	3
				    origin_attachment 	(1541, 741)
				    terminal_attachment 	(750, 741)
				    label      	(object SegLabel @412
					Parent_View 	@410
					location   	(811, 780)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.923160
					height     	39
					orientation 	0)
				    label      	(object SegLabel @413
					Parent_View 	@410
					location   	(983, 784)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	159
					justify    	0
					label      	"{ordered}"
					pctDist    	0.705718
					height     	43
					orientation 	0))))))
		(object ClassDiagram "Classes, Signatures and Type Adapters"
		    quid       	"47F111E000A5"
		    title      	"Classes, Signatures and Type Adapters"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	706
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::SapClass" @414
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2062, 1131)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@414
				location   	(1843, 1037)
				fill_color 	13434879
				nlines     	1
				max_width  	438
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@414
				location   	(1843, 1098)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	456
			    height     	213
			    annotation 	8)
			(object ClassView "Class" "Logical View::data::classes::TypeAdapter" @415
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1013, 1165)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@415
				location   	(768, 1009)
				fill_color 	13434879
				nlines     	1
				max_width  	490
				justify    	0
				label      	"TypeAdapter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F112210022"
			    width      	508
			    height     	336
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "AdaptedTo" @416
			    location   	(1550, 1075)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @417
				Parent_View 	@416
				location   	(1581, 1075)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"AdaptedTo"
				pctDist    	1.016667
				height     	1
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F112BD0399"
			    roleview_list 	(list RoleViews
				(object RoleView "to" @418
				    Parent_View 	@416
				    location   	(259, 713)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @419
					Parent_View 	@418
					location   	(1777, 1034)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	60
					justify    	0
					label      	"+to"
					pctDist    	0.800000
					height     	42
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112BE01FC"
				    client     	@416
				    supplier   	@414
				    vertices   	(list Points
					(1550, 1075)
					(1834, 1075))
				    line_style 	3
				    origin_attachment 	(1550, 1075)
				    terminal_attachment 	(1834, 1075)
				    label      	(object SegLabel @420
					Parent_View 	@418
					location   	(1808, 1110)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.911032
					height     	35
					orientation 	1))
				(object RoleView "adaptedBy" @421
				    Parent_View 	@416
				    location   	(259, 713)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @422
					Parent_View 	@421
					location   	(1394, 1026)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	224
					justify    	0
					label      	"+adaptedBy"
					pctDist    	0.553571
					height     	50
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112BE0232"
				    client     	@416
				    supplier   	@415
				    vertices   	(list Points
					(1550, 1075)
					(1267, 1075))
				    line_style 	3
				    origin_attachment 	(1550, 1075)
				    terminal_attachment 	(1267, 1075)
				    label      	(object SegLabel @423
					Parent_View 	@421
					location   	(1316, 1101)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.832143
					height     	26
					orientation 	0))))
			(object AssociationViewNew "$UNNAMED$16" @424
			    location   	(1550, 1213)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F112ED01E4"
			    roleview_list 	(list RoleViews
				(object RoleView "adapted" @425
				    Parent_View 	@424
				    location   	(442, 854)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @426
					Parent_View 	@425
					location   	(1723, 1174)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	176
					justify    	0
					label      	"+adapted"
					pctDist    	0.610294
					height     	40
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112EE01B9"
				    client     	@424
				    supplier   	@414
				    vertices   	(list Points
					(1550, 1213)
					(1834, 1213))
				    line_style 	3
				    origin_attachment 	(1550, 1213)
				    terminal_attachment 	(1834, 1213)
				    label      	(object SegLabel @427
					Parent_View 	@425
					location   	(1805, 1267)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))
				(object RoleView "adapters" @428
				    Parent_View 	@424
				    location   	(442, 854)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @429
					Parent_View 	@428
					location   	(1377, 1174)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	186
					justify    	0
					label      	"+adapters"
					pctDist    	0.613971
					height     	40
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F112EE01EC"
				    client     	@424
				    supplier   	@415
				    vertices   	(list Points
					(1550, 1213)
					(1267, 1213))
				    line_style 	3
				    origin_attachment 	(1550, 1213)
				    terminal_attachment 	(1267, 1213)
				    label      	(object SegLabel @430
					Parent_View 	@428
					location   	(1316, 1263)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.829545
					height     	50
					orientation 	0))))
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @431
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1499, 232)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@431
				location   	(1207, 103)
				fill_color 	13434879
				nlines     	1
				max_width  	584
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	602
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::MethodSignature" @432
			    ShowCompartmentStereotypes 	TRUE
			    SuppressAttribute 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(294, 666)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@432
				location   	(118, 625)
				fill_color 	13434879
				nlines     	1
				max_width  	352
				justify    	0
				label      	"MethodSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D15030D"
			    width      	370
			    height     	107
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SignatureOwner" @433
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1544, 653)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@433
				location   	(1386, 602)
				fill_color 	13434879
				nlines     	1
				max_width  	316
				justify    	0
				label      	"SignatureOwner")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"48A0412B002E"
			    width      	334
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "OwnedSignatures" @434
			    location   	(928, 666)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @435
				Parent_View 	@434
				location   	(1005, 664)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"OwnedSignatures"
				pctDist    	1.800000
				height     	3
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A041470119"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedSignatures" @436
				    Parent_View 	@434
				    location   	(-906, 16)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @437
					Parent_View 	@436
					location   	(660, 622)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	345
					justify    	0
					label      	"+ownedSignatures"
					pctDist    	0.596026
					height     	45
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A04147011B"
				    client     	@434
				    supplier   	@432
				    vertices   	(list Points
					(928, 666)
					(479, 666))
				    line_style 	3
				    origin_attachment 	(928, 666)
				    terminal_attachment 	(479, 666)
				    label      	(object SegLabel @438
					Parent_View 	@436
					location   	(536, 707)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.871965
					height     	41
					orientation 	0))
				(object RoleView "owner" @439
				    Parent_View 	@434
				    location   	(-906, 16)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @440
					Parent_View 	@439
					location   	(1287, 625)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	140
					justify    	0
					label      	"+owner"
					pctDist    	0.800000
					height     	42
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A04147011A"
				    client     	@434
				    supplier   	@433
				    vertices   	(list Points
					(928, 666)
					(1377, 666))
				    line_style 	3
				    origin_attachment 	(928, 666)
				    terminal_attachment 	(1377, 666)
				    label      	(object SegLabel @441
					Parent_View 	@439
					location   	(1332, 720)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object InheritTreeView "" @442
			    location   	(1544, 835)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@433
			    vertices   	(list Points
				(1544, 835)
				(1544, 716)))
			(object InheritView "" @443
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A0413400CB"
			    client     	@415
			    supplier   	@433
			    vertices   	(list Points
				(1146, 996)
				(1146, 835))
			    line_style 	3
			    origin_attachment 	(1146, 996)
			    terminal_attachment 	(1146, 835)
			    drawSupplier 	@442)
			(object InheritView "" @444
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A041320196"
			    client     	@414
			    supplier   	@433
			    vertices   	(list Points
				(1977, 1024)
				(1977, 835))
			    line_style 	3
			    origin_attachment 	(1977, 1024)
			    terminal_attachment 	(1977, 835)
			    drawSupplier 	@442)
			(object InheritView "" @445
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F524E900A5"
			    client     	@433
			    supplier   	@431
			    vertices   	(list Points
				(1537, 590)
				(1537, 373))
			    line_style 	3
			    origin_attachment 	(1537, 590)
			    terminal_attachment 	(1537, 373))))
		(object ClassDiagram "TypedElement subclasses"
		    quid       	"4905DDC10167"
		    title      	"TypedElement subclasses"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @446
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1111, 238)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@446
				location   	(963, 132)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@446
				location   	(963, 193)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::tuples::TupleElement" @447
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(211, 772)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@447
				location   	(69, 698)
				fill_color 	13434879
				nlines     	1
				max_width  	284
				justify    	0
				label      	"TupleElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"491463630280"
			    width      	302
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @448
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4914637B008C"
			    client     	@447
			    supplier   	@446
			    vertices   	(list Points
				(353, 685)
				(953, 329))
			    line_style 	0)
			(object ClassView "Class" "Logical View::configuration::businessconfiguration::ValueSet" @449
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(811, 772)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@449
				location   	(600, 668)
				fill_color 	13434879
				nlines     	1
				max_width  	422
				justify    	0
				label      	"ValueSet")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"46E7DBE202CE"
			    width      	440
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @450
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4869E81900FA"
			    client     	@449
			    supplier   	@446
			    vertices   	(list Points
				(875, 655)
				(1043, 356))
			    line_style 	0)
			(object ClassView "Class" "Logical View::behavioral::actions::NamedValueWithOptionalInitExpression" @451
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(661, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@451
				location   	(278, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	766
				justify    	0
				label      	"NamedValueWithOptionalInitExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49889B6400B0"
			    width      	784
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::NamedValue" @452
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1411, 772)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@452
				location   	(1144, 691)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"NamedValue")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4522A56F0149"
			    width      	552
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @453
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717B85102FB"
			    client     	@452
			    supplier   	@446
			    vertices   	(list Points
				(1357, 678)
				(1177, 356))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::VariableExpression" @454
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(3211, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@454
				location   	(3015, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	392
				justify    	0
				label      	"VariableExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4522AC6A022F"
			    width      	410
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::ObjectBasedExpression" @455
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(11386, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@455
				location   	(11152, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	468
				justify    	0
				label      	"ObjectBasedExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"453E0FC80335"
			    width      	486
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::This" @456
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(5011, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@456
				location   	(4880, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"This")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45A9433E03D2"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Equals" @457
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(5461, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@457
				location   	(5330, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Equals")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"475958230399"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::SignatureCallExpression" @458
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(6061, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@458
				location   	(5786, 1200)
				fill_color 	13434879
				nlines     	1
				max_width  	550
				justify    	0
				label      	"SignatureCallExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F3B80500BD"
			    width      	568
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Ternary" @459
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(7111, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@459
				location   	(6980, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Ternary")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4A389707002E"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::Literal" @460
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(7561, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@460
				location   	(7414, 1225)
				fill_color 	13434879
				nlines     	1
				max_width  	294
				justify    	0
				label      	"Literal")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"454746D10018"
			    width      	312
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::ObjectLiteral" @461
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(8686, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@461
				location   	(8552, 1225)
				fill_color 	13434879
				nlines     	1
				max_width  	268
				justify    	0
				label      	"ObjectLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D20502BC"
			    width      	286
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::fp::AnonymousFunctionExpr" @462
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(9286, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@462
				location   	(9043, 1225)
				fill_color 	13434879
				nlines     	1
				max_width  	486
				justify    	0
				label      	"AnonymousFunctionExpr")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47A0757E02EC"
			    width      	504
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::query::OqlQuery" @463
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(4261, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@463
				location   	(4160, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	202
				justify    	0
				label      	"OqlQuery")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4B2755FC01F4"
			    width      	220
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Parameter" @464
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1411, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@464
				location   	(1297, 1278)
				fill_color 	13434879
				nlines     	1
				max_width  	228
				justify    	0
				label      	"Parameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F12A7E0062"
			    width      	246
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @465
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48566FFF0196"
			    client     	@464
			    supplier   	@452
			    vertices   	(list Points
				(1411, 1265)
				(1411, 865))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::analytics::DimensionExpression" @466
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(3661, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@466
				location   	(3448, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	426
				justify    	0
				label      	"DimensionExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4718AA7E0167"
			    width      	444
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::persistence::expressions::All" @467
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2461, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@467
				location   	(2163, 1225)
				fill_color 	13434879
				nlines     	1
				max_width  	596
				justify    	0
				label      	"All")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4979C34B01C3"
			    width      	614
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::persistence::expressions::Commit" @468
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(9886, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@468
				location   	(9755, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Commit")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4981A010001F"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::behavioral::actions::Variable" @469
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1486, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@469
				location   	(1155, 1632)
				fill_color 	13434879
				nlines     	1
				max_width  	662
				justify    	0
				label      	"Variable")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47A717EF035B"
			    width      	680
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @470
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49889B7F0280"
			    client     	@469
			    supplier   	@451
			    vertices   	(list Points
				(1250, 1619)
				(837, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::MethodCallExpression" @471
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(6061, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@471
				location   	(5816, 1632)
				fill_color 	13434879
				nlines     	1
				max_width  	490
				justify    	0
				label      	"MethodCallExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4522E05D00A8"
			    width      	508
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::ObjectCreationExpression" @472
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(3961, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@472
				location   	(3711, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	500
				justify    	0
				label      	"ObjectCreationExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"454BA26C0254"
			    width      	518
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @473
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47BC30F40203"
			    client     	@471
			    supplier   	@455
			    vertices   	(list Points
				(6315, 1715)
				(11142, 1346))
			    line_style 	0)
			(object InheritView "" @474
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F3B83200B9"
			    client     	@471
			    supplier   	@458
			    vertices   	(list Points
				(6061, 1619)
				(6061, 1470))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::AssociationEndNavigationExpression" @475
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(9511, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@475
				location   	(9154, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	714
				justify    	0
				label      	"AssociationEndNavigationExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"478620130157"
			    width      	732
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @476
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4786201B036B"
			    client     	@475
			    supplier   	@455
			    vertices   	(list Points
				(9877, 1654)
				(11142, 1380))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::ObjectCount" @477
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(10261, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@477
				location   	(10130, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"ObjectCount")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"48E9DE8C030D"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @478
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48E9DEC500AB"
			    client     	@477
			    supplier   	@455
			    vertices   	(list Points
				(10401, 1685)
				(11143, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Replace" @479
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(10711, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@479
				location   	(10580, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Replace")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"499C2988038A"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @480
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"499C2A7A004E"
			    client     	@479
			    supplier   	@455
			    vertices   	(list Points
				(10850, 1649)
				(11240, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Head" @481
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(11161, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@481
				location   	(11030, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Head")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49BFCF80001E"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @482
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49BFCFE2021E"
			    client     	@481
			    supplier   	@455
			    vertices   	(list Points
				(11208, 1649)
				(11336, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Tail" @483
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(11611, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@483
				location   	(11480, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Tail")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49BFCF9E020B"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @484
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49BFCFDF0087"
			    client     	@483
			    supplier   	@455
			    vertices   	(list Points
				(11562, 1649)
				(11434, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::AsList" @485
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(12061, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@485
				location   	(11930, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"AsList")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49BFD73E033E"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @486
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49BFD7480223"
			    client     	@485
			    supplier   	@455
			    vertices   	(list Points
				(11920, 1650)
				(11530, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::fp::FunctionFromMethodExpr" @487
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(12661, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@487
				location   	(12408, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	506
				justify    	0
				label      	"FunctionFromMethodExpr")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"487F6B6D0177"
			    width      	524
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @488
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"487F6B76036B"
			    client     	@487
			    supplier   	@455
			    vertices   	(list Points
				(12398, 1651)
				(11629, 1405))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::query::Selection" @489
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(13261, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@489
				location   	(13161, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	200
				justify    	0
				label      	"Selection")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4ACC4F790222"
			    width      	218
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @490
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4ACC4F8503E7"
			    client     	@489
			    supplier   	@455
			    vertices   	(list Points
				(13151, 1711)
				(11629, 1380))
			    line_style 	0)
			(object ClassView "Class" "Logical View::persistence::expressions::Snapshot" @491
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(13711, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@491
				location   	(13580, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	262
				justify    	0
				label      	"Snapshot")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49AEBB73011C"
			    width      	280
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @492
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49AEBBDE0006"
			    client     	@491
			    supplier   	@455
			    vertices   	(list Points
				(13570, 1710)
				(11629, 1369))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::ContentEquals" @493
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(4711, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@493
				location   	(4564, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	294
				justify    	0
				label      	"ContentEquals")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4B06A82B0109"
			    width      	312
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @494
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4B06A83500CB"
			    client     	@493
			    supplier   	@457
			    vertices   	(list Points
				(4866, 1649)
				(5320, 1404))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::FunctionCallExpression" @495
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(5311, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@495
				location   	(5082, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	458
				justify    	0
				label      	"FunctionCallExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45473F620076"
			    width      	476
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @496
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F3B84601D1"
			    client     	@495
			    supplier   	@458
			    vertices   	(list Points
				(5466, 1649)
				(5797, 1470))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::BinaryLiteral" @497
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(6661, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@497
				location   	(6531, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	260
				justify    	0
				label      	"BinaryLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D1FE0387"
			    width      	278
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @498
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717D2310193"
			    client     	@497
			    supplier   	@460
			    vertices   	(list Points
				(6800, 1672)
				(7404, 1397))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::StringLiteral" @499
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(7111, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@499
				location   	(6986, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	250
				justify    	0
				label      	"StringLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D20103C6"
			    width      	268
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @500
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717D2330126"
			    client     	@499
			    supplier   	@460
			    vertices   	(list Points
				(7204, 1649)
				(7430, 1445))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::NumberLiteral" @501
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(7561, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@501
				location   	(7417, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	288
				justify    	0
				label      	"NumberLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D202026E"
			    width      	306
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @502
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717D2340378"
			    client     	@501
			    supplier   	@460
			    vertices   	(list Points
				(7561, 1649)
				(7561, 1445))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::TimePointLiteral" @503
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(8161, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@503
				location   	(8002, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	318
				justify    	0
				label      	"TimePointLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D2030107"
			    width      	336
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @504
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717D23602FB"
			    client     	@503
			    supplier   	@460
			    vertices   	(list Points
				(8034, 1649)
				(7717, 1434))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::literals::BooleanLiteral" @505
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(8761, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@505
				location   	(8614, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	294
				justify    	0
				label      	"BooleanLiteral")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717D204001C"
			    width      	312
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @506
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717D2380397"
			    client     	@505
			    supplier   	@460
			    vertices   	(list Points
				(8604, 1682)
				(7717, 1381))
			    line_style 	0)
			(object ClassView "Class" "Logical View::behavioral::actions::Iterator" @507
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1861, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@507
				location   	(1761, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	200
				justify    	0
				label      	"Iterator")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47A719D200EA"
			    width      	218
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @508
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47A719D70280"
			    client     	@507
			    supplier   	@452
			    vertices   	(list Points
				(1790, 1242)
				(1487, 865))
			    line_style 	0)
			(object ClassView "Class" "Logical View::behavioral::actions::Constant" @509
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2086, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@509
				location   	(1986, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	200
				justify    	0
				label      	"Constant")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47A717EE033C"
			    width      	218
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @510
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49889B790210"
			    client     	@509
			    supplier   	@451
			    vertices   	(list Points
				(1976, 1703)
				(966, 1415))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::Iterate" @511
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(14311, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@511
				location   	(14107, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	408
				justify    	0
				label      	"Iterate")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47595676008C"
			    width      	426
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::CollectionExpressionWithArgument" @512
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(15061, 1736)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@512
				location   	(14726, 1662)
				fill_color 	13434879
				nlines     	1
				max_width  	670
				justify    	0
				label      	"CollectionExpressionWithArgument")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4ADF36A4001F"
			    width      	688
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::Including" @513
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(14761, 2088)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@513
				location   	(14557, 2014)
				fill_color 	13434879
				nlines     	1
				max_width  	408
				justify    	0
				label      	"Including")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"475956720213"
			    width      	426
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @514
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4ADF36F5002E"
			    client     	@513
			    supplier   	@512
			    vertices   	(list Points
				(14834, 2001)
				(14987, 1822))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::Excluding" @515
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(15361, 2088)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@515
				location   	(15157, 2014)
				fill_color 	13434879
				nlines     	1
				max_width  	408
				justify    	0
				label      	"Excluding")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47595673001F"
			    width      	426
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @516
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4ADF36FA0119"
			    client     	@515
			    supplier   	@512
			    vertices   	(list Points
				(15287, 2001)
				(15134, 1822))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::IncludingAt" @517
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(14761, 2410)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@517
				location   	(14557, 2336)
				fill_color 	13434879
				nlines     	1
				max_width  	408
				justify    	0
				label      	"IncludingAt")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"475956750280"
			    width      	426
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @518
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B9FCA403D8"
			    client     	@517
			    supplier   	@513
			    vertices   	(list Points
				(14761, 2323)
				(14761, 2174))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::ExcludingAt" @519
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(15361, 2410)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@519
				location   	(15157, 2336)
				fill_color 	13434879
				nlines     	1
				max_width  	408
				justify    	0
				label      	"ExcludingAt")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B5ABAC0232"
			    width      	426
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @520
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B5AC13007D"
			    client     	@519
			    supplier   	@515
			    vertices   	(list Points
				(15361, 2323)
				(15361, 2174))
			    line_style 	0)
			(object InheritView "" @521
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49889B750153"
			    client     	@451
			    supplier   	@452
			    vertices   	(list Points
				(775, 1242)
				(1282, 865))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @522
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(5761, 772)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@522
				location   	(5494, 543)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    compartment 	(object Compartment
				Parent_View 	@522
				location   	(5494, 864)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	7
				max_width  	0)
			    width      	552
			    height     	482
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "l" @523
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@523
				location   	(3376, 497)
				anchor_loc 	1
				nlines     	1
				max_width  	60
				justify    	0
				label      	"l")
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4717B87503E5"
			    client     	@522
			    supplier   	@446
			    vertices   	(list Points
				(5484, 739)
				(1268, 255))
			    line_style 	0)
			(object InheritView "" @524
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4545FDBE01AE"
			    client     	@454
			    supplier   	@522
			    vertices   	(list Points
				(3416, 1282)
				(5484, 830))
			    line_style 	0)
			(object InheritView "" @525
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"454BA274017C"
			    client     	@472
			    supplier   	@522
			    vertices   	(list Points
				(4220, 1247)
				(5484, 855))
			    line_style 	0)
			(object InheritView "" @526
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"45A94345036E"
			    client     	@456
			    supplier   	@522
			    vertices   	(list Points
				(5125, 1242)
				(5484, 975))
			    line_style 	0)
			(object InheritView "" @527
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4759582D007D"
			    client     	@457
			    supplier   	@522
			    vertices   	(list Points
				(5506, 1242)
				(5629, 1013))
			    line_style 	0)
			(object InheritView "" @528
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F3B890000D"
			    client     	@458
			    supplier   	@522
			    vertices   	(list Points
				(5985, 1187)
				(5891, 1013))
			    line_style 	0)
			(object InheritView "" @529
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4A38971503A9"
			    client     	@459
			    supplier   	@522
			    vertices   	(list Points
				(6970, 1270)
				(6037, 885))
			    line_style 	0)
			(object InheritView "" @530
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"454746F00167"
			    client     	@460
			    supplier   	@522
			    vertices   	(list Points
				(7404, 1279)
				(6037, 855))
			    line_style 	0)
			(object InheritView "" @531
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4974A3CE030D"
			    client     	@461
			    supplier   	@522
			    vertices   	(list Points
				(8542, 1301)
				(6037, 823))
			    line_style 	0)
			(object InheritView "" @532
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47A0773A011C"
			    client     	@462
			    supplier   	@522
			    vertices   	(list Points
				(9033, 1288)
				(6037, 814))
			    line_style 	0)
			(object InheritView "" @533
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4B27561D0203"
			    client     	@463
			    supplier   	@522
			    vertices   	(list Points
				(4371, 1663)
				(5484, 948))
			    line_style 	0)
			(object InheritView "" @534
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4718AA8703D8"
			    client     	@466
			    supplier   	@522
			    vertices   	(list Points
				(3845, 1649)
				(5484, 897))
			    line_style 	0)
			(object InheritView "" @535
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49AC5E6D0029"
			    client     	@468
			    supplier   	@522
			    vertices   	(list Points
				(9745, 1308)
				(6037, 808))
			    line_style 	0)
			(object InheritView "" @536
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"453E0FF30001"
			    client     	@455
			    supplier   	@522
			    vertices   	(list Points
				(11142, 1303)
				(6037, 798))
			    line_style 	0)
			(object ClassView "Class" "Logical View::dataaccess::expressions::collectionExpressions::CollectionExpression" @537
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(14686, 1329)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@537
				location   	(14477, 1255)
				fill_color 	13434879
				nlines     	1
				max_width  	418
				justify    	0
				label      	"CollectionExpression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47595F60033C"
			    width      	436
			    height     	172
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @538
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47595F5801A5"
			    client     	@511
			    supplier   	@537
			    vertices   	(list Points
				(14388, 1649)
				(14604, 1415))
			    line_style 	0)
			(object InheritView "" @539
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4ADF36E80271"
			    client     	@512
			    supplier   	@537
			    vertices   	(list Points
				(14981, 1649)
				(14765, 1415))
			    line_style 	0)
			(object InheritView "" @540
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47595F6A036B"
			    client     	@537
			    supplier   	@522
			    vertices   	(list Points
				(14467, 1314)
				(6037, 788))
			    line_style 	0)
			(object InheritView "" @541
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4979C3550136"
			    client     	@467
			    supplier   	@522
			    vertices   	(list Points
				(2768, 1276)
				(5484, 816))
			    line_style 	0)))
		(object ClassDiagram "Object-Parameterized Classes"
		    quid       	"49B1500A02EE"
		    title      	"Object-Parameterized Classes"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::SignatureOwner" @542
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1413, 293)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@542
				location   	(1255, 242)
				fill_color 	13434879
				nlines     	1
				max_width  	316
				justify    	0
				label      	"SignatureOwner")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"48A0412B002E"
			    width      	334
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::MethodSignature" @543
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(479, 297)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@543
				location   	(303, 216)
				fill_color 	13434879
				nlines     	1
				max_width  	352
				justify    	0
				label      	"MethodSignature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47D67D15030D"
			    width      	370
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "OwnedSignatures" @544
			    location   	(955, 293)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @545
				Parent_View 	@544
				location   	(959, 217)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	450
				justify    	0
				label      	"OwnedSignatures"
				pctDist    	0.583333
				height     	77
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A041470119"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedSignatures" @546
				    Parent_View 	@544
				    location   	(-444, 30)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @547
					Parent_View 	@546
					location   	(839, 332)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	345
					justify    	0
					label      	"+ownedSignatures"
					pctDist    	0.402062
					height     	39
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A04147011B"
				    client     	@544
				    supplier   	@543
				    vertices   	(list Points
					(955, 293)
					(664, 293))
				    line_style 	3
				    origin_attachment 	(955, 293)
				    terminal_attachment 	(664, 293)
				    label      	(object SegLabel @548
					Parent_View 	@546
					location   	(705, 260)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.859107
					height     	34
					orientation 	1))
				(object RoleView "owner" @549
				    Parent_View 	@544
				    location   	(-444, 30)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @550
					Parent_View 	@549
					location   	(1161, 262)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	140
					justify    	0
					label      	"+owner"
					pctDist    	0.711340
					height     	32
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"48A04147011A"
				    client     	@544
				    supplier   	@542
				    vertices   	(list Points
					(955, 293)
					(1246, 293))
				    line_style 	3
				    origin_attachment 	(955, 293)
				    terminal_attachment 	(1246, 293)
				    label      	(object SegLabel @551
					Parent_View 	@549
					location   	(1203, 334)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.855670
					height     	41
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::ConverterBetweenParametrizations" @552
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(544, 573)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@552
				location   	(212, 522)
				fill_color 	13434879
				nlines     	1
				max_width  	664
				justify    	0
				label      	"ConverterBetweenParametrizations")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49B15A3F03D8"
			    width      	682
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$29" @553
			    location   	(510, 449)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B15BB5036B"
			    roleview_list 	(list RoleViews
				(object RoleView "conversionMethod" @554
				    Parent_View 	@553
				    location   	(-868, -100)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @555
					Parent_View 	@554
					location   	(707, 412)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	361
					justify    	0
					label      	"+conversionMethod"
					pctDist    	0.627119
					height     	197
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B15BB60138"
				    client     	@553
				    supplier   	@543
				    vertices   	(list Points
					(510, 449)
					(510, 390))
				    line_style 	3
				    origin_attachment 	(510, 449)
				    terminal_attachment 	(510, 390)
				    label      	(object SegLabel @556
					Parent_View 	@554
					location   	(462, 416)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.559322
					height     	49
					orientation 	0))
				(object RoleView "converter" @557
				    Parent_View 	@553
				    location   	(-868, -100)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @558
					Parent_View 	@557
					location   	(622, 481)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	192
					justify    	0
					label      	"+converter"
					pctDist    	0.533333
					height     	112
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B15BB60196"
				    client     	@553
				    supplier   	@552
				    vertices   	(list Points
					(510, 449)
					(510, 509))
				    line_style 	3
				    origin_attachment 	(510, 449)
				    terminal_attachment 	(510, 509)
				    label      	(object SegLabel @559
					Parent_View 	@557
					location   	(449, 487)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.652893
					height     	62
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::ClassTypeDefinition" @560
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2311, 1137)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@560
				location   	(2016, 1031)
				fill_color 	13434879
				nlines     	1
				max_width  	590
				justify    	0
				label      	"ClassTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4784F7E800AB"
			    width      	608
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @561
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1421, 873)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@561
				location   	(1213, 817)
				fill_color 	13434879
				nlines     	1
				max_width  	416
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@561
				location   	(1213, 878)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	434
			    height     	136
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$28" @562
			    location   	(755, 830)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B15A610251"
			    roleview_list 	(list RoleViews
				(object RoleView "converterBetweenParametrizations" @563
				    Parent_View 	@562
				    location   	(-597, 585)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @564
					Parent_View 	@563
					location   	(850, 679)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	660
					justify    	0
					label      	"+converterBetweenParametrizations"
					pctDist    	-0.372549
					height     	151
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B15A620399"
				    client     	@562
				    supplier   	@552
				    vertices   	(list Points
					(755, 830)
					(500, 830)
					(500, 636))
				    line_style 	3
				    origin_attachment 	(755, 830)
				    terminal_attachment 	(500, 636)
				    label      	(object SegLabel @565
					Parent_View 	@563
					location   	(449, 671)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.922518
					height     	52
					orientation 	0))
				(object RoleView "clazz" @566
				    Parent_View 	@562
				    location   	(-597, 585)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @567
					Parent_View 	@566
					location   	(1048, 793)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	136
					justify    	0
					label      	"+clazz"
					pctDist    	0.651481
					height     	38
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B15A62039B"
				    client     	@562
				    supplier   	@561
				    vertices   	(list Points
					(755, 830)
					(1204, 830))
				    line_style 	3
				    origin_attachment 	(755, 830)
				    terminal_attachment 	(1204, 830)
				    label      	(object SegLabel @568
					Parent_View 	@566
					location   	(1163, 788)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.908884
					height     	43
					orientation 	0))))
			(object InheritView "" @569
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"48A041320196"
			    client     	@561
			    supplier   	@542
			    vertices   	(list Points
				(1413, 805)
				(1413, 356))
			    line_style 	3
			    origin_attachment 	(1413, 805)
			    terminal_attachment 	(1413, 356))
			(object AssociationViewNew "$UNNAMED$6" @570
			    location   	(2057, 859)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4784F7F5005D"
			    roleview_list 	(list RoleViews
				(object RoleView "clazz" @571
				    Parent_View 	@570
				    location   	(-673, -48)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @572
					Parent_View 	@571
					location   	(1695, 895)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	136
					justify    	0
					label      	"+clazz"
					pctDist    	0.865762
					height     	36
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005F"
				    client     	@570
				    supplier   	@561
				    vertices   	(list Points
					(2057, 859)
					(1638, 859))
				    line_style 	3
				    origin_attachment 	(2057, 859)
				    terminal_attachment 	(1638, 859)
				    label      	(object SegLabel @573
					Parent_View 	@571
					location   	(1670, 815)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.926094
					height     	45
					orientation 	1))
				(object RoleView "elementsOfType" @574
				    Parent_View 	@570
				    location   	(-673, -48)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @575
					Parent_View 	@574
					location   	(2137, 992)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	320
					justify    	0
					label      	"+elementsOfType"
					pctDist    	0.936652
					height     	180
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4784F7F5005E"
				    client     	@570
				    supplier   	@560
				    vertices   	(list Points
					(2057, 859)
					(2316, 859)
					(2316, 1019))
				    line_style 	3
				    origin_attachment 	(2057, 859)
				    terminal_attachment 	(2316, 1019)
				    label      	(object SegLabel @576
					Parent_View 	@574
					location   	(2370, 992)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.936652
					height     	54
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::classes::ActualObjectParameter" @577
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1387, 1415)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@577
				location   	(1159, 1363)
				fill_color 	13434879
				nlines     	1
				max_width  	456
				justify    	0
				label      	"ActualObjectParameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49B1547F0167"
			    width      	474
			    height     	128
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$26" @578
			    location   	(2052, 1416)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B1561D0222"
			    roleview_list 	(list RoleViews
				(object RoleView "objectParameters" @579
				    Parent_View 	@578
				    location   	(-775, 455)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @580
					Parent_View 	@579
					location   	(1802, 1459)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	354
					justify    	0
					label      	"+objectParameters"
					pctDist    	0.584091
					height     	43
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B1561E0157"
				    client     	@578
				    supplier   	@577
				    vertices   	(list Points
					(2052, 1416)
					(1624, 1416))
				    line_style 	3
				    origin_attachment 	(2052, 1416)
				    terminal_attachment 	(1624, 1416)
				    label      	(object SegLabel @581
					Parent_View 	@579
					location   	(1663, 1379)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.911364
					height     	38
					orientation 	1)
				    label      	(object SegLabel @582
					Parent_View 	@579
					location   	(1807, 1382)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	159
					justify    	0
					label      	"{ordered}"
					pctDist    	0.575000
					height     	35
					orientation 	1))
				(object RoleView "classTypeDefinitions" @583
				    Parent_View 	@578
				    location   	(-775, 455)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @584
					Parent_View 	@583
					location   	(2104, 1324)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+classTypeDefinitions"
					pctDist    	0.123786
					height     	93
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B1561E0159"
				    client     	@578
				    supplier   	@560
				    vertices   	(list Points
					(2052, 1416)
					(2319, 1416)
					(2319, 1255))
				    line_style 	3
				    origin_attachment 	(2052, 1416)
				    terminal_attachment 	(2319, 1255)
				    label      	(object SegLabel @585
					Parent_View 	@583
					location   	(2367, 1278)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.946296
					height     	48
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$32" @586
			    location   	(1589, 1125)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4AD595BF02EE"
			    roleview_list 	(list RoleViews
				(object RoleView "ownedObjectParameters" @587
				    Parent_View 	@586
				    location   	(-722, -12)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @588
					Parent_View 	@587
					location   	(1355, 1267)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	469
					justify    	0
					label      	"+ownedObjectParameters"
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4AD595C100DA"
				    client     	@586
				    supplier   	@577
				    vertices   	(list Points
					(1589, 1125)
					(1396, 1125)
					(1396, 1351))
				    line_style 	3
				    origin_attachment 	(1589, 1125)
				    terminal_attachment 	(1396, 1351)
				    label      	(object SegLabel @589
					Parent_View 	@587
					location   	(1450, 1308)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.900000
					height     	54
					orientation 	0)
				    label      	(object SegLabel @590
					Parent_View 	@587
					location   	(1296, 1310)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	159
					justify    	0
					label      	"{ordered}"
					pctDist    	0.901914
					height     	101
					orientation 	1))
				(object RoleView "owningClassTypeDefinition" @591
				    Parent_View 	@586
				    location   	(-722, -12)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @592
					Parent_View 	@591
					location   	(1744, 1076)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	507
					justify    	0
					label      	"+owningClassTypeDefinition"
					pctDist    	0.369928
					height     	50
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4AD595C100DC"
				    client     	@586
				    supplier   	@560
				    vertices   	(list Points
					(1589, 1125)
					(2007, 1125))
				    line_style 	3
				    origin_attachment 	(1589, 1125)
				    terminal_attachment 	(2007, 1125)
				    label      	(object SegLabel @593
					Parent_View 	@591
					location   	(1964, 1179)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::classes::Parameter" @594
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(495, 1172)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@594
				location   	(381, 1121)
				fill_color 	13434879
				nlines     	1
				max_width  	228
				justify    	0
				label      	"Parameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47F12A7E0062"
			    width      	246
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$23" @595
			    location   	(748, 919)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B150D50186"
			    roleview_list 	(list RoleViews
				(object RoleView "formalObjectParameters" @596
				    Parent_View 	@595
				    location   	(237, 297)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @597
					Parent_View 	@596
					location   	(748, 1079)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	462
					justify    	0
					label      	"+formalObjectParameters"
					pctDist    	0.936345
					height     	267
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B150D6032C"
				    client     	@595
				    supplier   	@594
				    vertices   	(list Points
					(748, 919)
					(481, 919)
					(481, 1109))
				    line_style 	3
				    origin_attachment 	(748, 919)
				    terminal_attachment 	(481, 1109)
				    label      	(object SegLabel @598
					Parent_View 	@596
					location   	(432, 1078)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.932597
					height     	50
					orientation 	1)
				    label      	(object SegLabel @599
					Parent_View 	@596
					location   	(375, 1021)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	159
					justify    	0
					label      	"{ordered}"
					pctDist    	0.809035
					height     	107
					orientation 	1))
				(object RoleView "parameterOfClass" @600
				    Parent_View 	@595
				    location   	(237, 297)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @601
					Parent_View 	@600
					location   	(958, 865)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	362
					justify    	0
					label      	"+parameterOfClass"
					pctDist    	0.459821
					height     	55
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B150D6035B"
				    client     	@595
				    supplier   	@561
				    vertices   	(list Points
					(748, 919)
					(1204, 919))
				    line_style 	3
				    origin_attachment 	(748, 919)
				    terminal_attachment 	(1204, 919)
				    label      	(object SegLabel @602
					Parent_View 	@600
					location   	(1172, 962)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.929174
					height     	43
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$24" @603
			    location   	(739, 1411)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B15486030D"
			    roleview_list 	(list RoleViews
				(object RoleView "formalObjectParameter" @604
				    Parent_View 	@603
				    location   	(-1506, -258)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @605
					Parent_View 	@604
					location   	(757, 1264)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	445
					justify    	0
					label      	"+formalObjectParameter"
					pctDist    	0.931408
					height     	254
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B154870128"
				    client     	@603
				    supplier   	@594
				    vertices   	(list Points
					(739, 1411)
					(503, 1411)
					(503, 1235))
				    line_style 	3
				    origin_attachment 	(739, 1411)
				    terminal_attachment 	(503, 1235)
				    label      	(object SegLabel @606
					Parent_View 	@604
					location   	(459, 1264)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.933213
					height     	45
					orientation 	0))
				(object RoleView "$UNNAMED$25" @607
				    Parent_View 	@603
				    location   	(-1506, -258)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B15487012A"
				    client     	@603
				    supplier   	@577
				    vertices   	(list Points
					(739, 1411)
					(1150, 1411))
				    line_style 	3
				    origin_attachment 	(739, 1411)
				    terminal_attachment 	(1150, 1411)
				    label      	(object SegLabel @608
					Parent_View 	@607
					location   	(1105, 1452)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.891566
					height     	41
					orientation 	1))))
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @609
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1407, 1965)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@609
				location   	(1140, 1736)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    compartment 	(object Compartment
				Parent_View 	@609
				location   	(1140, 2057)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	7
				max_width  	0)
			    width      	552
			    height     	482
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$27" @610
			    location   	(1410, 1601)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49B1561C000F"
			    roleview_list 	(list RoleViews
				(object RoleView "value" @611
				    Parent_View 	@610
				    location   	(-585, 14)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @612
					Parent_View 	@611
					location   	(1328, 1692)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	132
					justify    	0
					label      	"+value"
					pctDist    	0.751592
					height     	83
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B1561C02CE"
				    client     	@610
				    supplier   	@609
				    vertices   	(list Points
					(1410, 1601)
					(1410, 1723))
				    line_style 	3
				    origin_attachment 	(1410, 1601)
				    terminal_attachment 	(1410, 1723)
				    label      	(object SegLabel @613
					Parent_View 	@611
					location   	(1443, 1696)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.777070
					height     	33
					orientation 	0))
				(object RoleView "actualObjectParameter" @614
				    Parent_View 	@610
				    location   	(-585, 14)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @615
					Parent_View 	@614
					location   	(1164, 1529)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	445
					justify    	0
					label      	"+actualObjectParameter"
					pctDist    	0.594203
					height     	247
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49B1561D007D"
				    client     	@610
				    supplier   	@577
				    vertices   	(list Points
					(1410, 1601)
					(1410, 1479))
				    line_style 	3
				    origin_attachment 	(1410, 1601)
				    terminal_attachment 	(1410, 1479)
				    label      	(object SegLabel @616
					Parent_View 	@614
					location   	(1471, 1518)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.679487
					height     	61
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$30" @617
			    location   	(462, 1834)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"49D2B2E10271"
			    roleview_list 	(list RoleViews
				(object RoleView "$UNNAMED$31" @618
				    Parent_View 	@617
				    location   	(-943, 29)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @619
					Parent_View 	@618
					location   	(352, 1370)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49D2B2E30186"
				    client     	@617
				    supplier   	@594
				    vertices   	(list Points
					(462, 1834)
					(393, 1834)
					(393, 1235))
				    line_style 	3
				    origin_attachment 	(462, 1834)
				    terminal_attachment 	(393, 1235)
				    label      	(object SegLabel @620
					Parent_View 	@618
					location   	(313, 1268)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.951807
					height     	81
					orientation 	0))
				(object RoleView "defaultValue" @621
				    Parent_View 	@617
				    location   	(-943, 29)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @622
					Parent_View 	@621
					location   	(996, 1876)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	248
					justify    	0
					label      	"+defaultValue"
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"49D2B2E30119"
				    client     	@617
				    supplier   	@609
				    vertices   	(list Points
					(462, 1834)
					(1131, 1834))
				    line_style 	3
				    origin_attachment 	(462, 1834)
				    terminal_attachment 	(1131, 1834)
				    label      	(object SegLabel @623
					Parent_View 	@621
					location   	(1064, 1781)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.900000
					height     	54
					orientation 	0))))))
		(object ClassDiagram "Scopes"
		    quid       	"4B85514600EA"
		    title      	"Scopes"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::InScope" @624
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1610, 212)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@624
				location   	(1267, 131)
				fill_color 	13434879
				nlines     	1
				max_width  	686
				justify    	0
				label      	"InScope")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4B85514B0119"
			    width      	704
			    height     	186
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @625
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(625, 828)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@625
				location   	(358, 599)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    compartment 	(object Compartment
				Parent_View 	@625
				location   	(358, 920)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	7
				max_width  	0)
			    width      	552
			    height     	482
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::behavioral::actions::Block" @626
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1294, 797)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@626
				location   	(1027, 618)
				fill_color 	13434879
				nlines     	1
				max_width  	534
				justify    	0
				label      	"Block")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"454606CB020A"
			    width      	552
			    height     	382
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::behavioral::actions::Statement" @627
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2387, 806)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@627
				location   	(2043, 577)
				fill_color 	13434879
				nlines     	1
				max_width  	688
				justify    	0
				label      	"Statement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4545FC1D0190"
			    width      	706
			    height     	482
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "" @628
			    location   	(1802, 797)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"454606F903AA"
			    roleview_list 	(list RoleViews
				(object RoleView "block" @629
				    Parent_View 	@628
				    location   	(-204, 19)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @630
					Parent_View 	@629
					location   	(1651, 759)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	132
					justify    	0
					label      	"+block"
					pctDist    	0.650862
					height     	38
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"454606FA01FD"
				    client     	@628
				    supplier   	@626
				    vertices   	(list Points
					(1802, 797)
					(1570, 797))
				    line_style 	3
				    origin_attachment 	(1802, 797)
				    terminal_attachment 	(1570, 797)
				    label      	(object SegLabel @631
					Parent_View 	@629
					location   	(1593, 851)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	0))
				(object RoleView "statements" @632
				    Parent_View 	@628
				    location   	(-204, 19)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @633
					Parent_View 	@632
					location   	(1891, 759)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	236
					justify    	0
					label      	"+statements"
					pctDist    	0.383621
					height     	38
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"454606FA01F3"
				    client     	@628
				    supplier   	@627
				    vertices   	(list Points
					(1802, 797)
					(2034, 797))
				    line_style 	3
				    origin_attachment 	(1802, 797)
				    terminal_attachment 	(2034, 797)
				    label      	(object SegLabel @634
					Parent_View 	@632
					location   	(1971, 839)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.728448
					height     	42
					orientation 	1)
				    label      	(object SegLabel @635
					Parent_View 	@632
					location   	(1915, 910)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	159
					justify    	0
					label      	"{ordered}"
					pctDist    	0.487069
					height     	113
					orientation 	1))))
			(object InheritTreeView "" @636
			    location   	(1610, 487)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@624
			    vertices   	(list Points
				(1610, 487)
				(1610, 305)))
			(object InheritView "" @637
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4B85517B009C"
			    client     	@625
			    supplier   	@624
			    vertices   	(list Points
				(844, 586)
				(844, 487))
			    line_style 	3
			    origin_attachment 	(844, 586)
			    terminal_attachment 	(844, 487)
			    drawSupplier 	@636)
			(object InheritView "" @638
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4B85518D0167"
			    client     	@626
			    supplier   	@624
			    vertices   	(list Points
				(1293, 606)
				(1293, 487))
			    line_style 	3
			    origin_attachment 	(1293, 606)
			    terminal_attachment 	(1293, 487)
			    drawSupplier 	@636)
			(object InheritView "" @639
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4B85518E036B"
			    client     	@627
			    supplier   	@624
			    vertices   	(list Points
				(2387, 565)
				(2387, 487))
			    line_style 	3
			    origin_attachment 	(2387, 565)
			    terminal_attachment 	(2387, 487)
			    drawSupplier 	@636)))))
	(object Class_Category "constraints"
	    attributes 	(list Attribute_Set)
	    quid       	"44350AE0011F"
	    documentation 	"Complex data types (as opposed to the basic data types that are plain CCTS types)"
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "Constraint"
		    quid       	"450E61B602EE"
		    documentation 	
|An instance of this class defines a subset of the instances of the type it constains. It does so by providing a predicate ("characteristic function"). Instances of the type constrained for which the predicate holds are part of the subset, the others are not.
		    
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"478BC2CD03A1"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030"))
		    nestedClasses 	(list nestedClasses
			(object Class "ExpressionTypeMustBeBoolean"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Expression type must be Boolean'")))
			    quid       	"47B9834100FA"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47B9834E0399"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Constraint
|inv:
|  self.constraintExpression.getType().upperMultiplicity = 1 and
|  self.constraintExpression.getType().oclIsKindOf(data::classes::ClassTypeDefinition) and
|  self.constraintExpression.getType().oclAsType(data::classes::ClassTypeDefinition).clazz.name = 'Boolean'
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "MustBeOwned"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.violationMessageExpression"
				    value      	(value Text "'Constraint must be owned by Class or Context'")))
			    quid       	"47CC09070222"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"47CC090F01C5"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context Constraint
|inv:
|  self.constrainedType->notEmpty() or
|  self.theContext->notEmpty() or
|  self.preconditionForSignature->notEmpty() or
|  self.postconditionForSignature->notEmpty()
|
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "ObjectState"
		    quid       	"450E624800DB"
		    stereotype 	"enumeration"
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "INITIAL"
			    quid       	"450E626C0399"
			    exportControl 	"Public")
			(object ClassAttribute "TRANSIENT"
			    quid       	"450E627601B3"
			    exportControl 	"Public")
			(object ClassAttribute "SAVED"
			    quid       	"450E627B03AF"
			    exportControl 	"Public")
			(object ClassAttribute "ACTIVE"
			    quid       	"450E62800262"
			    exportControl 	"Public")
			(object ClassAttribute "COMPLIANT"
			    quid       	"450E62860058"
			    exportControl 	"Public")))
		(object Class "Severity"
		    quid       	"450E62B80064"
		    stereotype 	"enumeration"
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "WARNING"
			    quid       	"450E62C1005D"
			    exportControl 	"Public")
			(object ClassAttribute "ERROR"
			    quid       	"450E62CA03E5"
			    exportControl 	"Public")
			(object ClassAttribute "ILLEGAL"
			    quid       	"450E62CE014C"
			    exportControl 	"Public")))
		(object Class "SeverityInState"
		    quid       	"450E62DA010D"
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "state"
			    quid       	"450E6313017D"
			    type       	"ObjectState"
			    quidu      	"450E624800DB"
			    exportControl 	"Public")
			(object ClassAttribute "severity"
			    quid       	"450E631803B5"
			    type       	"Severity"
			    quidu      	"450E62B80064"
			    exportControl 	"Public")))
		(object Association "Constrains"
		    quid       	"450E61D203A2"
		    roles      	(list role_list
			(object Role "constrainedType"
			    quid       	"450E61D30245"
			    label      	"constrainedType"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "constraints"
			    attributes 	(list Attribute_Set)
			    quid       	"450E61D302E5"
			    label      	"constraints"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "SeveritiesForConstraint"
		    quid       	"450E62E10348"
		    roles      	(list role_list
			(object Role "severityInState"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"450E62E2023B"
			    label      	"severityInState"
			    supplier   	"Logical View::data::constraints::SeverityInState"
			    quidu      	"450E62DA010D"
			    keys       	(list class_attribute_list
				(object ClassAttribute "state"
				    quid       	"450E6330003E"
				    type       	"ObjectState"))
			    client_cardinality 	(value cardinality "1..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "constraint"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"450E62E2023D"
			    label      	"constraint"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$33"
		    quid       	"450E63F20390"
		    documentation 	"The expression is evaluated in the context of an instance of constrainedType which can be accessed using a This expression. It must return a Boolean value."
		    roles      	(list role_list
			(object Role "constraintExpression"
			    quid       	"450E63F301B1"
			    label      	"constraintExpression"
			    supplier   	"Logical View::dataaccess::expressions::Expression"
			    quidu      	"450E63AB03A2"
			    client_cardinality 	(value cardinality "1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$34"
			    quid       	"450E63F301B3"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$35"
		    quid       	"47B952B90119"
		    roles      	(list role_list
			(object Role "preconditions"
			    quid       	"47B952BA005D"
			    label      	"preconditions"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "preconditionForSignature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47B952BA006D"
			    label      	"preconditionForSignature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$36"
		    quid       	"47B952BC004E"
		    roles      	(list role_list
			(object Role "postconditions"
			    quid       	"47B952BD003E"
			    label      	"postconditions"
			    supplier   	"Logical View::data::constraints::Constraint"
			    quidu      	"450E61B602EE"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "postconditionForSignature"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"47B952BD0040"
			    label      	"postconditionForSignature"
			    supplier   	"Logical View::data::classes::Signature"
			    quidu      	"4432198602CB"
			    client_cardinality 	(value cardinality "0..1")
			    is_aggregate 	TRUE))))
	    logical_presentations 	(list unit_reference_list
		(object ClassDiagram "Qualified Types"
		    quid       	"4507C6FE016A"
		    title      	"Qualified Types"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object NoteView @640
			    location   	(397, 234)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@640
				location   	(65, 78)
				fill_color 	13434879
				nlines     	6
				max_width  	628
				label      	"Similar to CCTS qualifications or domains as known from the ABAP dictionary")
			    line_color 	3342489
			    fill_color 	13434879
			    width      	688
			    height     	325)))
		(object ClassDiagram "Constraints"
		    quid       	"450E60590382"
		    title      	"Constraints"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	972
		    items      	(list diagram_item_list
			(object NoteView @641
			    location   	(689, 156)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@641
				location   	(124, 6)
				fill_color 	13434879
				nlines     	6
				max_width  	1095
				label      	
|Constraints apply to objects. Each constraint defines a matrix of state/severity telling how "severe" its violation is in a given state. States could, e.g., be transient, saved, active, compliant. Severities could be warning, error, illegal.
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	1155
			    height     	313)
			(object ClassView "Class" "Logical View::data::constraints::ObjectState" @642
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(253, 946)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@642
				location   	(90, 787)
				fill_color 	13434879
				nlines     	1
				max_width  	326
				justify    	0
				label      	"ObjectState")
			    stereotype 	(object ItemLabel
				Parent_View 	@642
				location   	(90, 737)
				fill_color 	13434879
				anchor     	10
				nlines     	1
				max_width  	326
				justify    	0
				label      	"<<enumeration>>")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E624800DB"
			    width      	344
			    height     	442
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::constraints::Severity" @643
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(253, 1388)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@643
				location   	(90, 1279)
				fill_color 	13434879
				nlines     	1
				max_width  	326
				justify    	0
				label      	"Severity")
			    stereotype 	(object ItemLabel
				Parent_View 	@643
				location   	(90, 1229)
				fill_color 	13434879
				anchor     	10
				nlines     	1
				max_width  	326
				justify    	0
				label      	"<<enumeration>>")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E62B80064"
			    width      	344
			    height     	342
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::constraints::SeverityInState" @644
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(786, 1445)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@644
				location   	(588, 1339)
				fill_color 	13434879
				nlines     	1
				max_width  	396
				justify    	0
				label      	"SeverityInState")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E62DA010D"
			    width      	414
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::dataaccess::expressions::Expression" @645
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1833, 802)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@645
				location   	(1612, 673)
				fill_color 	13434879
				nlines     	1
				max_width  	442
				justify    	0
				label      	"Expression")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E63AB03A2"
			    compartment 	(object Compartment
				Parent_View 	@645
				location   	(1612, 894)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	7
				max_width  	0)
			    width      	460
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @646
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    location   	(1812, 528)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@646
				location   	(1605, 424)
				fill_color 	13434879
				nlines     	1
				max_width  	414
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@646
				location   	(1605, 620)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	2
				max_width  	0)
			    width      	432
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::constraints::Constraint" @647
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(780, 767)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@647
				location   	(667, 716)
				fill_color 	13434879
				nlines     	1
				max_width  	226
				justify    	0
				label      	"Constraint")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E61B602EE"
			    width      	244
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "SeveritiesForConstraint" @648
			    location   	(785, 1078)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @649
				Parent_View 	@648
				location   	(779, 1093)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	429
				justify    	0
				label      	"SeveritiesForConstraint"
				pctDist    	0.400000
				height     	15
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"450E62E10348"
			    roleview_list 	(list RoleViews
				(object RoleView "severityInState" @650
				    Parent_View 	@648
				    location   	(-256, -53)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @651
					Parent_View 	@650
					location   	(624, 1258)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	295
					justify    	0
					label      	"+severityInState"
					pctDist    	0.727273
					height     	162
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E62E2023B"
				    client     	@648
				    supplier   	@644
				    vertices   	(list Points
					(785, 1078)
					(785, 1327))
				    line_style 	3
				    origin_attachment 	(785, 1078)
				    terminal_attachment 	(785, 1327)
				    label      	(object SegLabel @652
					Parent_View 	@650
					location   	(858, 1265)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1..*"
					pctDist    	0.750000
					height     	73
					orientation 	0))
				(object RoleView "constraint" @653
				    Parent_View 	@648
				    location   	(-256, -53)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @654
					Parent_View 	@653
					location   	(649, 950)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	210
					justify    	0
					label      	"+constraint"
					pctDist    	0.520661
					height     	137
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E62E2023D"
				    client     	@648
				    supplier   	@647
				    vertices   	(list Points
					(785, 1078)
					(785, 830))
				    line_style 	3
				    origin_attachment 	(785, 1078)
				    terminal_attachment 	(785, 830)
				    label      	(object SegLabel @655
					Parent_View 	@653
					location   	(832, 953)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.508264
					height     	47
					orientation 	1)
				    label      	(object SegLabel @656
					Parent_View 	@653
					location   	(785, 869)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	5
					anchor_loc 	1
					nlines     	1
					max_width  	344
					justify    	0
					label      	"state : ObjectState"
					pctDist    	0.900000
					height     	12
					orientation 	0))))
			(object AssociationViewNew "$UNNAMED$33" @657
			    location   	(1252, 766)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"450E63F20390"
			    roleview_list 	(list RoleViews
				(object RoleView "constraintExpression" @658
				    Parent_View 	@657
				    location   	(412, 239)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @659
					Parent_View 	@658
					location   	(1369, 802)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	422
					justify    	0
					label      	"+constraintExpression"
					pctDist    	0.334211
					height     	36
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E63F301B1"
				    client     	@657
				    supplier   	@645
				    vertices   	(list Points
					(1252, 766)
					(1603, 766))
				    line_style 	3
				    origin_attachment 	(1252, 766)
				    terminal_attachment 	(1603, 766)
				    label      	(object SegLabel @660
					Parent_View 	@658
					location   	(1582, 802)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.939474
					height     	36
					orientation 	1))
				(object RoleView "$UNNAMED$34" @661
				    Parent_View 	@657
				    location   	(412, 239)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E63F301B3"
				    client     	@657
				    supplier   	@647
				    vertices   	(list Points
					(1252, 766)
					(902, 766))
				    line_style 	3
				    origin_attachment 	(1252, 766)
				    terminal_attachment 	(902, 766)
				    label      	(object SegLabel @662
					Parent_View 	@661
					location   	(1013, 807)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.683673
					height     	41
					orientation 	0))))
			(object AssociationViewNew "Constrains" @663
			    location   	(1079, 478)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @664
				Parent_View 	@663
				location   	(1021, 437)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	193
				justify    	0
				label      	"Constrains"
				pctDist    	-0.483333
				height     	42
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"450E61D203A2"
			    roleview_list 	(list RoleViews
				(object RoleView "constrainedType" @665
				    Parent_View 	@663
				    location   	(38, -653)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @666
					Parent_View 	@665
					location   	(1415, 522)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	322
					justify    	0
					label      	"+constrainedType"
					pctDist    	0.650485
					height     	44
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E61D30245"
				    client     	@663
				    supplier   	@646
				    vertices   	(list Points
					(1079, 478)
					(1596, 478))
				    line_style 	3
				    origin_attachment 	(1079, 478)
				    terminal_attachment 	(1596, 478)
				    label      	(object SegLabel @667
					Parent_View 	@665
					location   	(1554, 446)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.920844
					height     	33
					orientation 	0))
				(object RoleView "constraints" @668
				    Parent_View 	@663
				    location   	(38, -653)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @669
					Parent_View 	@668
					location   	(917, 661)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	230
					justify    	0
					label      	"+constraints"
					pctDist    	0.918605
					height     	129
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"450E61D302E5"
				    client     	@663
				    supplier   	@647
				    vertices   	(list Points
					(1079, 478)
					(788, 478)
					(788, 704))
				    line_style 	3
				    origin_attachment 	(1079, 478)
				    terminal_attachment 	(788, 704)
				    label      	(object SegLabel @670
					Parent_View 	@668
					location   	(726, 671)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.936046
					height     	63
					orientation 	1))))))
		(object ClassDiagram "Pre and Post Conditions"
		    quid       	"47959C8C0157"
		    title      	"Pre and Post Conditions"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::constraints::Constraint" @671
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1762, 312)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@671
				location   	(1637, 228)
				fill_color 	13434879
				nlines     	1
				max_width  	251
				justify    	0
				label      	"Constraint")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"450E61B602EE"
			    width      	269
			    height     	193
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Signature" @672
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(339, 300)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@672
				location   	(105, 147)
				fill_color 	13434879
				nlines     	1
				max_width  	468
				justify    	0
				label      	"Signature")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432198602CB"
			    width      	486
			    height     	330
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$35" @673
			    location   	(1105, 247)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B952B90119"
			    roleview_list 	(list RoleViews
				(object RoleView "preconditions" @674
				    Parent_View 	@673
				    location   	(135, -537)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @675
					Parent_View 	@674
					location   	(1402, 212)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	278
					justify    	0
					label      	"+preconditions"
					pctDist    	0.569364
					height     	36
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B952BA005D"
				    client     	@673
				    supplier   	@671
				    vertices   	(list Points
					(1105, 247)
					(1628, 247))
				    line_style 	3
				    origin_attachment 	(1105, 247)
				    terminal_attachment 	(1628, 247)
				    label      	(object SegLabel @676
					Parent_View 	@674
					location   	(1559, 286)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.869942
					height     	39
					orientation 	1))
				(object RoleView "preconditionForSignature" @677
				    Parent_View 	@673
				    location   	(135, -537)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @678
					Parent_View 	@677
					location   	(957, 284)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	473
					justify    	0
					label      	"+preconditionForSignature"
					pctDist    	0.284058
					height     	37
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B952BA006D"
				    client     	@673
				    supplier   	@672
				    vertices   	(list Points
					(1105, 247)
					(582, 247))
				    line_style 	3
				    origin_attachment 	(1105, 247)
				    terminal_attachment 	(582, 247)
				    label      	(object SegLabel @679
					Parent_View 	@677
					location   	(666, 201)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.840580
					height     	47
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$36" @680
			    location   	(1105, 381)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47B952BC004E"
			    roleview_list 	(list RoleViews
				(object RoleView "postconditions" @681
				    Parent_View 	@680
				    location   	(135, -403)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @682
					Parent_View 	@681
					location   	(1392, 343)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	291
					justify    	0
					label      	"+postconditions"
					pctDist    	0.549133
					height     	39
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B952BD003E"
				    client     	@680
				    supplier   	@671
				    vertices   	(list Points
					(1105, 381)
					(1628, 381))
				    line_style 	3
				    origin_attachment 	(1105, 381)
				    terminal_attachment 	(1628, 381)
				    label      	(object SegLabel @683
					Parent_View 	@681
					location   	(1552, 416)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.854430
					height     	35
					orientation 	1))
				(object RoleView "postconditionForSignature" @684
				    Parent_View 	@680
				    location   	(135, -403)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @685
					Parent_View 	@684
					location   	(986, 420)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	511
					justify    	0
					label      	"+postconditionForSignature"
					pctDist    	0.228986
					height     	39
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47B952BD0040"
				    client     	@680
				    supplier   	@672
				    vertices   	(list Points
					(1105, 381)
					(582, 381))
				    line_style 	3
				    origin_attachment 	(1105, 381)
				    terminal_attachment 	(582, 381)
				    label      	(object SegLabel @686
					Parent_View 	@684
					location   	(649, 340)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.872464
					height     	42
					orientation 	1))))))))
	(object Class_Category "quantitystructure"
	    quid       	"451A893801B4"
	    documentation 	"Helps modelers to specify the numbers of instances of types, relations and the access patterns over them. This can later be used to optimize data representation, partitioning and deployment."
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "Dummy"
		    quid       	"458161A7008A"))
	    logical_presentations 	(list unit_reference_list))
	(object Class_Category "timedependency"
	    quid       	"456557E402D2"
	    documentation 	
|Models the aspect of time-dependent data. If a structural feature such as a class or a property or an association is marked as time-dependent, clients expect to find time-dependent access operations for read access. If no time is specified, the time of access is implicitly assumed.
|
|Modifications to such structures keep the history of the data. Again, if no modification time is explicitly specified, the time at which the modification occurs is used implicitly.
|
|Clarify if it should be possible to "modify history." In other words, should it be possible to make structural changes in data that was already recorded in the past?
|
|TODO Perhaps this package should be separated out into an own top-level metamodel package because it has dependencies on behavioral/actions and dataaccess/expressions.
	    
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "TimeDependency"
		    quid       	"45655911018B"
		    documentation 	
|Captures the specification for how to deal in detail with the time-dependent nature of the annotated structural feature.
|
|Time dependence of a class means that the existence of an instance of that class is timie dependent. A time-dependent association means that the existence of each link of that association is time dependent.
|
|Read operations on time-dependent classes and associations (such as queries and navigation) can optionally specify a point in time or a timespan. If no time or timespan is specified, the current time is assumed.
|
|Write/update operations by default will use the current time as the point in time, or an open time interval starting at the current time (in case of a timespan feature). Any open previous timespan by default will be closed at the current time by an update.
|
|Read and update operations of time-dependent features can optionally be equipped with a time/timespan telling the temporal validity of the values updated or the values to be read.
		    
		    class_attributes 	(list class_attribute_list
			(object ClassAttribute "recordCutoffInMilliseconds"
			    quid       	"4565594C0095"
			    documentation 	"The number of milliseconds for which to keep historic versions of this feature. Only values greater or equal to zero are permitted. 0 means that no historic versions are kept at all."
			    type       	"Integer"
			    quidu      	"3B538AB300B3"
			    exportControl 	"Public")
			(object ClassAttribute "canChangePast"
			    quid       	"45655B1202BF"
			    documentation 	"If true, it is permissible to change values of the time-dependent feature for previous times."
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public")
			(object ClassAttribute "timespan"
			    quid       	"45655B590180"
			    documentation 	
|If true, data is valid over a given timespan, not only a single point in time. When writing data, the validity period is to be specified as a timespan rather than a point in time.
|
|If false, data samples are valid only at a single point in time, such as from an RFID reader or a temperature sensor. Access APIs would have to allow for conveniently finding the "nearest" match for a given point in time.
			    
			    type       	"Boolean"
			    quidu      	"39A2BDA60392"
			    exportControl 	"Public"))
		    nestedClasses 	(list nestedClasses
			(object Class "RecordCutoffGreaterOrEqualZero"
			    quid       	"45655A1100C0"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"45655A2500AB"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context TimeDependency
|inv:
|  self.recordCutoffInMilliseconds >= 0
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Association "$UNNAMED$37"
		    quid       	"45655A8E0201"
		    roles      	(list role_list
			(object Role "theClass"
			    quid       	"45655A8F020C"
			    label      	"theClass"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "timeDependency"
			    attributes 	(list Attribute_Set)
			    quid       	"45655A8F03A7"
			    label      	"timeDependency"
			    supplier   	"Logical View::data::timedependency::TimeDependency"
			    quidu      	"45655911018B"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$38"
		    quid       	"45655A900222"
		    roles      	(list role_list
			(object Role "association"
			    quid       	"45655A9100A6"
			    label      	"association"
			    supplier   	"Logical View::data::classes::Association"
			    quidu      	"44321DA40150"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "timeDependency"
			    attributes 	(list Attribute_Set)
			    quid       	"45655A9100A8"
			    label      	"timeDependency"
			    supplier   	"Logical View::data::timedependency::TimeDependency"
			    quidu      	"45655911018B"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE))))
	    logical_presentations 	(list unit_reference_list
		(object ClassDiagram "Time Depedency"
		    quid       	"456559000046"
		    title      	"Time Depedency"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::SapClass" @687
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(954, 616)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@687
				location   	(470, 12)
				fill_color 	13434879
				nlines     	1
				max_width  	968
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@687
				location   	(470, 708)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	22
				max_width  	0)
			    width      	986
			    height     	1232
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::Association" @688
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1684, 887)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@688
				location   	(1499, 809)
				fill_color 	13434879
				nlines     	1
				max_width  	370
				justify    	0
				label      	"Association")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"44321DA40150"
			    width      	388
			    height     	181
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::timedependency::TimeDependency" @689
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1395, 1706)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@689
				location   	(1053, 1575)
				fill_color 	13434879
				nlines     	1
				max_width  	684
				justify    	0
				label      	"TimeDependency")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45655911018B"
			    width      	702
			    height     	286
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$37" @690
			    location   	(1219, 1397)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"45655A8E0201"
			    roleview_list 	(list RoleViews
				(object RoleView "theClass" @691
				    Parent_View 	@690
				    location   	(-12, 463)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @692
					Parent_View 	@691
					location   	(1097, 1266)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	190
					justify    	0
					label      	"+theClass"
					pctDist    	0.796610
					height     	123
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"45655A8F020C"
				    client     	@690
				    supplier   	@687
				    vertices   	(list Points
					(1219, 1397)
					(1219, 1232))
				    line_style 	3
				    origin_attachment 	(1219, 1397)
				    terminal_attachment 	(1219, 1232)
				    label      	(object SegLabel @693
					Parent_View 	@691
					location   	(1278, 1269)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.775758
					height     	59
					orientation 	1))
				(object RoleView "timeDependency" @694
				    Parent_View 	@690
				    location   	(-12, 463)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @695
					Parent_View 	@694
					location   	(1036, 1492)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	327
					justify    	0
					label      	"+timeDependency"
					pctDist    	0.579646
					height     	184
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"45655A8F03A7"
				    client     	@690
				    supplier   	@689
				    vertices   	(list Points
					(1219, 1397)
					(1219, 1563))
				    line_style 	3
				    origin_attachment 	(1219, 1397)
				    terminal_attachment 	(1219, 1563)
				    label      	(object SegLabel @696
					Parent_View 	@694
					location   	(1161, 1534)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.832297
					height     	59
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$38" @697
			    location   	(1638, 1270)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"45655A900222"
			    roleview_list 	(list RoleViews
				(object RoleView "association" @698
				    Parent_View 	@697
				    location   	(407, 336)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @699
					Parent_View 	@698
					location   	(1784, 1083)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	234
					justify    	0
					label      	"+association"
					pctDist    	0.638191
					height     	146
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"45655A9100A6"
				    client     	@697
				    supplier   	@688
				    vertices   	(list Points
					(1638, 1270)
					(1638, 977))
				    line_style 	3
				    origin_attachment 	(1638, 1270)
				    terminal_attachment 	(1638, 977)
				    label      	(object SegLabel @700
					Parent_View 	@698
					location   	(1692, 1007)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.900000
					height     	54
					orientation 	1))
				(object RoleView "timeDependency" @701
				    Parent_View 	@697
				    location   	(407, 336)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @702
					Parent_View 	@701
					location   	(1819, 1452)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	327
					justify    	0
					label      	"+timeDependency"
					pctDist    	0.623431
					height     	181
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"45655A9100A8"
				    client     	@697
				    supplier   	@689
				    vertices   	(list Points
					(1638, 1270)
					(1638, 1563))
				    line_style 	3
				    origin_attachment 	(1638, 1270)
				    terminal_attachment 	(1638, 1563)
				    label      	(object SegLabel @703
					Parent_View 	@701
					location   	(1695, 1521)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.857741
					height     	57
					orientation 	0))))))))
	(object Class_Category "documents"
	    quid       	"4565C2580170"
	    documentation 	"Structures that help referencing and managing---typically external---document repositories. Structures shall allow to reference documents in such a repository, say something about the lifecycle of documents in such a repository in connection to the life cycle of other model elements, and integrate document repository capabilities into the modeling world, such as document ranking, versioning, etc."
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "Dummy"
		    quid       	"458161B202DF"))
	    logical_presentations 	(list unit_reference_list))
	(object Class_Category "generics"
	    quid       	"456EA81A030D"
	    documentation 	"Describes how types can be parameterized. Parameterizable types include classes and tuples. Classes can be declared to have a list of DataType arguments. Those arguments can then be used within a class definition wherever a DataType is allowed. If a type argument is a class, it may be used wherever a class is allowed."
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "FormalTypeParameter"
		    quid       	"456EAA6B008E"
		    documentation 	"A formal type argument to the ParameterizedClass owning this parameter object. It is valid only in the scope of the classDefinition owned by the ParameterizedClass that owns this parameter object."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"456ED74502A1"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"))
		    nestedClasses 	(list nestedClasses
			(object Class "UseInSignaturesOfOwningParamerizedClassOnly"
			    quid       	"4573F1290337"
			    documentation 	"If the formal type parameter is used as the type of an operation argument, this invariant requires the operation owner to be the classDefinition of the ParameterizedClass owning this formal type argument. In other words: the formal type parameter may only be used in operation signatures of the class that it parameterizes."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4573F1AC024F"
				    documentation 	"TODO Need to additionally allow blocks to use FormalTypeParameters as part of their signature if the block is defined in the scope of the ParameterizedClass."
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context FormalTypeParameter
|inv:
|  self.elementsOfType.getTypeUsage()->forAll(s | s.oclIsKindOf(data::classes::Parameter) implies 
|   (s.oclAsType(data::classes::Parameter).ownerSignature.oclIsKindOf(data::classes::MethodSignature) and
|    s.oclAsType(data::classes::Parameter).ownerSignature.oclAsType(data::classes::MethodSignature).owner=self.parameterOf .owningClassDefinition)) and
|  self.elementsOfType.signaturesWithOutput->forAll(s| s.oclIsKindOf(data::classes::MethodSignature) and 
|    s.oclAsType(data::classes::MethodSignature).owner->notEmpty() and
|    s.oclAsType(data::classes::MethodSignature).owner=self.parameterOf.owningClassDefinition) and
|  self.signaturesWithFault->forAll(s| s.oclIsKindOf(data::classes::MethodSignature)  and 
|    s.oclAsType(data::classes::MethodSignature).owner->notEmpty() and
|    s.oclAsType(data::classes::MethodSignature).owner=self.parameterOf.owningClassDefinition)
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "UseInAssociationsOfOwningParameterizedClassOnly"
			    quid       	"4573F088033F"
			    documentation 	"If the formal type parameter is used as the type of an association end, this invariant requires the other end's type to be the owning ClassDefinition of the ParameterizedClass of this formal type argument. In other words: the formal type parameter may only be used in associations of the class that it parameterizes."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"4573F0B3012E"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context FormalTypeParameter
|inv:
|  self.elementsOfType.associationEnd->
|    forAll(ae | ae.otherEnd().type.clazz = self.parameterOf.owningClassDefinition)
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "ParameterizedClassInstantiation"
		    quid       	"456EAB93030B"
		    documentation 	"An instantiation of a parameterized class (a class that has one or more FormalTypeParameters associated) with a set of data types that match the parameterized type's signature. The instantiation is itself usable as a Class. It may as such itself still have formal type parameters which then make it a parameterized class that itself requires instantiation before it it a fully-specified type."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"456EAE7A01AB"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"))
		    operations 	(list Operations
			(object Operation "resolveFormalTypeParameter"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.return.multiplicity"
				    value      	(value Text "0..1"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context ParameterizedClassInstantiation::resolveFormalTypeParameter(ftp:FormalTypeParameter):SapClass
|body:
|  self.actualTypeParametersForInstantiation->select(atp:ActualTypeParameter |
|    atp.formalTypeParameter = ftp)->asSequence()->at(1).type
				    ))
				(object Attribute
				    tool       	"Data Modeler"
				    name       	"KeyList"
				    value      	""))
			    quid       	"45E544E0026B"
			    documentation 	"Returns the ActualTypeParameter's type (a Class) from the actualTypeParameters association end whose formalTypeParameter is the one passed. If no such formal type parameter is found, no object (null) is returned."
			    parameters 	(list Parameters
				(object Parameter "ftp"
				    quid       	"45E544F101CF"
				    type       	"FormalTypeParameter"
				    quidu      	"456EAA6B008E"))
			    result     	"SapClass"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"4432171B031E")
			(object Operation "getClassParameterization"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"rose2mof.isQuery"
				    value      	(value Text "true"))
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.OperationCodeOcl"
				    value      	(value Text 
|context ParameterizedClassInstantiation::getClassParameterization():ClassParameterization
|body:
|  parameterizedClass.parameterization
				    )))
			    quid       	"494BBA930290"
			    result     	"ClassParameterization"
			    concurrency 	"Sequential"
			    opExportControl 	"Public"
			    uid        	0
			    quidu      	"456ECEC60286"))
		    nestedClasses 	(list nestedClasses
			(object Class "ActualTypeParametersMatchSignature"
			    quid       	"456EABEA02CA"
			    documentation 	"Ensures that the types used as actual parameters in the instantiation of the parameterized class match the signature as defined by the formal type parameters of the class."
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"456EAC300180"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ParameterizedClassInstantiation
|inv:
|  self.actualTypeParametersForInstantiation->size() = self.parameterizedClass.parameterization.formalTypeParameters->size() and
|  Sequence{1..self.actualTypeParametersForInstantiation->size()}->forAll(i:Integer|
|    self.actualTypeParametersForInstantiation->at(i).formalTypeParameter =
|    self.parameterizedClass.parameterization.formalTypeParameters->at(i))
					)
				    opExportControl 	"Public"
				    uid        	0)))
			(object Class "ClassMustBeParameterized"
			    quid       	"494BBA5B0128"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"494BBA6902DE"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ParameterizedClassInstantiation
|inv:
|  self.parameterizedClass.parameterization->notEmpty()
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "ClassParameterization"
		    quid       	"456ECEC60286"
		    nestedClasses 	(list nestedClasses
			(object Class "DistinctFormalTypeParameterNames"
			    quid       	"49479DFF034D"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"49479E4C02AE"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ClassParameterization
|inv:
|self.formalTypeParameters->forAll(i,j|i<>j implies i.name<>j.name)
|
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Class "ActualTypeParameter"
		    quid       	"456ED3CB0143"
		    nestedClasses 	(list nestedClasses
			(object Class "TypeConformsWithFormalParametersTypeConstraint"
			    quid       	"45742E940154"
			    stereotype 	"constraint"
			    operations 	(list Operations
				(object Operation "OCL"
				    quid       	"45742EA80211"
				    concurrency 	"Sequential"
				    semantics  	(object Semantic_Info
					PDL        	
|context ActualTypeParameter
|inv:
|  self.formalTypeParameter.typeConstraint->notEmpty() implies
|    self.type.conformsTo(self.formalTypeParameter.typeConstraint)
					)
				    opExportControl 	"Public"
				    uid        	0)))))
		(object Association "$UNNAMED$39"
		    quid       	"456EA99A03AF"
		    documentation 	
|A class with one or more formal type parameters is a "generic class."
		    
		    roles      	(list role_list
			(object Role "formalTypeParameters"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"456EA99C007D"
			    label      	"formalTypeParameters"
			    supplier   	"Logical View::data::generics::FormalTypeParameter"
			    quidu      	"456EAA6B008E"
			    client_cardinality 	(value cardinality "1..*")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "parameterOf"
			    quid       	"456EA99C00A5"
			    label      	"parameterOf"
			    supplier   	"Logical View::data::generics::ClassParameterization"
			    quidu      	"456ECEC60286"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$40"
		    quid       	"456EAAC60392"
		    documentation 	"Can be used to specify that any actual type used for the formal type parameter must conform to the class referenced by the typeConstraint end. With this, whenever the formal type parameter is used as a type in the class definition, the typeConstaint's features can be used."
		    roles      	(list role_list
			(object Role "typeConstraint"
			    quid       	"456EAACA004F"
			    label      	"typeConstraint"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$41"
			    quid       	"456EAACA0063"
			    supplier   	"Logical View::data::generics::FormalTypeParameter"
			    quidu      	"456EAA6B008E"
			    client_cardinality 	(value cardinality "0..*"))))
		(object Association "$UNNAMED$42"
		    quid       	"456EABC3013D"
		    roles      	(list role_list
			(object Role "actualTypeParametersForInstantiation"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"456EABC501CC"
			    label      	"actualTypeParametersForInstantiation"
			    supplier   	"Logical View::data::generics::ActualTypeParameter"
			    quidu      	"456ED3CB0143"
			    client_cardinality 	(value cardinality "1..*")
			    Constraints 	"ordered"
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "parameterizedClassInstantiation"
			    quid       	"456EABC501EA"
			    label      	"parameterizedClassInstantiation"
			    supplier   	"Logical View::data::generics::ParameterizedClassInstantiation"
			    quidu      	"456EAB93030B"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "ParameterizedClassDeclaration"
		    quid       	"456ECED301F8"
		    roles      	(list role_list
			(object Role "owningClassDefinition"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"456ECED401A0"
			    label      	"owningClassDefinition"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)
			(object Role "parameterization"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"456ECED401B4"
			    label      	"parameterization"
			    supplier   	"Logical View::data::generics::ClassParameterization"
			    quidu      	"456ECEC60286"
			    client_cardinality 	(value cardinality "0..1")
			    Containment 	"By Value"
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$43"
		    quid       	"478635EB0109"
		    roles      	(list role_list
			(object Role "type"
			    quid       	"478635F0029F"
			    label      	"type"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "actualTypeParametersOfClass"
			    quid       	"478635F002FD"
			    label      	"actualTypeParametersOfClass"
			    supplier   	"Logical View::data::generics::ActualTypeParameter"
			    quidu      	"456ED3CB0143"
			    client_cardinality 	(value cardinality "0..*"))))
		(object Association "$UNNAMED$44"
		    quid       	"47971235033C"
		    roles      	(list role_list
			(object Role "parameterizedClasses"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 202)))
			    quid       	"4797123801E4"
			    label      	"parameterizedClasses"
			    supplier   	"Logical View::data::generics::ClassParameterization"
			    quidu      	"456ECEC60286"
			    client_cardinality 	(value cardinality "0..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "package_"
			    quid       	"479712380261"
			    label      	"package_"
			    supplier   	"Logical View::modelmanagement::Package"
			    quidu      	"452B7C8B00D8"
			    client_cardinality 	(value cardinality "0..1")
			    is_navigable 	TRUE
			    is_aggregate 	TRUE)))
		(object Association "$UNNAMED$45"
		    quid       	"47F39E780261"
		    roles      	(list role_list
			(object Role "formalTypeParameter"
			    attributes 	(list Attribute_Set
				(object Attribute
				    tool       	"MOF"
				    name       	"sap2mof.store"
				    value      	("RoleStoreKindSet" 203)))
			    quid       	"47F39E79002E"
			    label      	"formalTypeParameter"
			    supplier   	"Logical View::data::generics::FormalTypeParameter"
			    quidu      	"456EAA6B008E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "actualTypeParameters"
			    quid       	"47F39E79003E"
			    label      	"actualTypeParameters"
			    supplier   	"Logical View::data::generics::ActualTypeParameter"
			    quidu      	"456ED3CB0143"
			    client_cardinality 	(value cardinality "0..*")
			    is_navigable 	TRUE)))
		(object Association "$UNNAMED$46"
		    quid       	"494BAF27002E"
		    roles      	(list role_list
			(object Role "parameterizedClass"
			    quid       	"494BAF27002F"
			    label      	"parameterizedClass"
			    supplier   	"Logical View::data::classes::SapClass"
			    quidu      	"4432171B031E"
			    client_cardinality 	(value cardinality "1")
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$47"
			    quid       	"494BAF270030"
			    supplier   	"Logical View::data::generics::ParameterizedClassInstantiation"
			    quidu      	"456EAB93030B"
			    client_cardinality 	(value cardinality "0..*")))))
	    logical_presentations 	(list unit_reference_list
		(object ClassDiagram "Class Parameterization with Classes"
		    quid       	"456EA90902B6"
		    title      	"Class Parameterization with Classes"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	757
		    items      	(list diagram_item_list
			(object NoteView @704
			    location   	(1703, 1950)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@704
				location   	(1362, 1571)
				fill_color 	13434879
				nlines     	15
				max_width  	646
				label      	
|TODO: contemplate pulling Class into two parts: one outer hull that can be used as a Featured and constitutes a real type, and an inner part that only contains the definitions but is not usable as a full type. ParameterizedClass would then refer only to the inner part.
|
|Until then, use of a Class that is owned by a ParameterizedClass should be prohibited by constraints.
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	706
			    height     	770)
			(object ClassView "Class" "Logical View::data::generics::ClassParameterization" @705
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(494, 369)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@705
				location   	(231, 316)
				fill_color 	13434879
				nlines     	1
				max_width  	526
				justify    	0
				label      	"ClassParameterization")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456ECEC60286"
			    width      	544
			    height     	131
			    annotation 	8)
			(object ClassView "Class" "Logical View::data::generics::FormalTypeParameter" @706
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1011, 1286)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@706
				location   	(794, 1236)
				fill_color 	13434879
				nlines     	1
				max_width  	434
				justify    	0
				label      	"FormalTypeParameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456EAA6B008E"
			    width      	452
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$39" @707
			    location   	(525, 986)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456EA99A03AF"
			    roleview_list 	(list RoleViews
				(object RoleView "formalTypeParameters" @708
				    Parent_View 	@707
				    location   	(-734, 261)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @709
					Parent_View 	@708
					location   	(547, 1364)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	440
					justify    	0
					label      	"+formalTypeParameters"
					pctDist    	0.568841
					height     	86
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EA99C007D"
				    client     	@707
				    supplier   	@706
				    vertices   	(list Points
					(525, 986)
					(525, 1278)
					(785, 1278))
				    line_style 	3
				    origin_attachment 	(525, 986)
				    terminal_attachment 	(785, 1278)
				    label      	(object SegLabel @710
					Parent_View 	@708
					location   	(734, 1246)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1..*"
					pctDist    	0.909274
					height     	33
					orientation 	0)
				    label      	(object SegLabel @711
					Parent_View 	@708
					location   	(666, 1314)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	158
					justify    	0
					label      	"{ordered}"
					pctDist    	0.786290
					height     	36
					orientation 	1))
				(object RoleView "parameterOf" @712
				    Parent_View 	@707
				    location   	(-734, 261)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @713
					Parent_View 	@712
					location   	(378, 523)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	253
					justify    	0
					label      	"+parameterOf"
					pctDist    	0.838768
					height     	147
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EA99C00A5"
				    client     	@707
				    supplier   	@705
				    vertices   	(list Points
					(525, 986)
					(525, 434))
				    line_style 	3
				    origin_attachment 	(525, 986)
				    terminal_attachment 	(525, 434)
				    label      	(object SegLabel @714
					Parent_View 	@712
					location   	(479, 473)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.929348
					height     	46
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::generics::ActualTypeParameter" @715
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2413, 672)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@715
				location   	(2199, 622)
				fill_color 	13434879
				nlines     	1
				max_width  	428
				justify    	0
				label      	"ActualTypeParameter")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456ED3CB0143"
			    width      	446
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$45" @716
			    location   	(2455, 1321)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47F39E780261"
			    roleview_list 	(list RoleViews
				(object RoleView "formalTypeParameter" @717
				    Parent_View 	@716
				    location   	(1961, -104)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @718
					Parent_View 	@717
					location   	(1505, 1287)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	409
					justify    	0
					label      	"+formalTypeParameter"
					pctDist    	0.779786
					height     	35
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F39E79002E"
				    client     	@716
				    supplier   	@706
				    vertices   	(list Points
					(2455, 1321)
					(1237, 1321))
				    line_style 	3
				    origin_attachment 	(2455, 1321)
				    terminal_attachment 	(1237, 1321)
				    label      	(object SegLabel @719
					Parent_View 	@717
					location   	(1265, 1287)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.976993
					height     	35
					orientation 	1))
				(object RoleView "actualTypeParameters" @720
				    Parent_View 	@716
				    location   	(1961, -104)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @721
					Parent_View 	@720
					location   	(2870, 636)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	442
					justify    	0
					label      	"+actualTypeParameters"
					pctDist    	1.068643
					height     	36
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47F39E79003E"
				    client     	@716
				    supplier   	@715
				    vertices   	(list Points
					(2455, 1321)
					(2834, 1321)
					(2834, 680)
					(2636, 680))
				    line_style 	3
				    origin_attachment 	(2455, 1321)
				    terminal_attachment 	(2636, 680)
				    label      	(object SegLabel @722
					Parent_View 	@720
					location   	(2691, 714)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.954844
					height     	34
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::classes::SapClass" @723
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1635, 389)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@723
				location   	(1427, 310)
				fill_color 	13434879
				nlines     	1
				max_width  	416
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@723
				location   	(1427, 481)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	434
			    height     	182
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "ParameterizedClassDeclaration" @724
			    location   	(1092, 331)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @725
				Parent_View 	@724
				location   	(1058, 326)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	572
				justify    	0
				label      	"ParameterizedClassDeclaration"
				pctDist    	-0.066667
				height     	6
				orientation 	0)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456ECED301F8"
			    roleview_list 	(list RoleViews
				(object RoleView "owningClassDefinition" @726
				    Parent_View 	@724
				    location   	(401, -826)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @727
					Parent_View 	@726
					location   	(1195, 271)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	416
					justify    	0
					label      	"+owningClassDefinition"
					pctDist    	0.318043
					height     	61
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456ECED401A0"
				    client     	@724
				    supplier   	@723
				    vertices   	(list Points
					(1092, 331)
					(1418, 331))
				    line_style 	3
				    origin_attachment 	(1092, 331)
				    terminal_attachment 	(1418, 331)
				    label      	(object SegLabel @728
					Parent_View 	@726
					location   	(1396, 378)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.935780
					height     	47
					orientation 	1))
				(object RoleView "parameterization" @729
				    Parent_View 	@724
				    location   	(401, -826)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @730
					Parent_View 	@729
					location   	(939, 379)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	322
					justify    	0
					label      	"+parameterization"
					pctDist    	0.469325
					height     	48
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456ECED401B4"
				    client     	@724
				    supplier   	@705
				    vertices   	(list Points
					(1092, 331)
					(766, 331))
				    line_style 	3
				    origin_attachment 	(1092, 331)
				    terminal_attachment 	(766, 331)
				    label      	(object SegLabel @731
					Parent_View 	@729
					location   	(805, 264)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.880368
					height     	68
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$40" @732
			    location   	(1053, 655)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456EAAC60392"
			    roleview_list 	(list RoleViews
				(object RoleView "typeConstraint" @733
				    Parent_View 	@732
				    location   	(725, -48)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @734
					Parent_View 	@733
					location   	(1248, 422)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	292
					justify    	0
					label      	"+typeConstraint"
					pctDist    	0.702091
					height     	31
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EAACA004F"
				    client     	@732
				    supplier   	@723
				    vertices   	(list Points
					(1053, 655)
					(1053, 452)
					(1418, 452))
				    line_style 	3
				    origin_attachment 	(1053, 655)
				    terminal_attachment 	(1418, 452)
				    label      	(object SegLabel @735
					Parent_View 	@733
					location   	(1346, 503)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.873394
					height     	51
					orientation 	1))
				(object RoleView "$UNNAMED$41" @736
				    Parent_View 	@732
				    location   	(725, -48)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EAACA0063"
				    client     	@732
				    supplier   	@706
				    vertices   	(list Points
					(1053, 655)
					(1053, 1223))
				    line_style 	3
				    origin_attachment 	(1053, 655)
				    terminal_attachment 	(1053, 1223)
				    label      	(object SegLabel @737
					Parent_View 	@736
					location   	(1006, 1194)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.948854
					height     	48
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$43" @738
			    location   	(2267, 335)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"478635EB0109"
			    roleview_list 	(list RoleViews
				(object RoleView "type" @739
				    Parent_View 	@738
				    location   	(1773, -1090)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @740
					Parent_View 	@739
					location   	(1956, 291)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	108
					justify    	0
					label      	"+type"
					pctDist    	0.751064
					height     	45
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"478635F0029F"
				    client     	@738
				    supplier   	@723
				    vertices   	(list Points
					(2267, 335)
					(1852, 335))
				    line_style 	3
				    origin_attachment 	(2267, 335)
				    terminal_attachment 	(1852, 335)
				    label      	(object SegLabel @741
					Parent_View 	@739
					location   	(1878, 300)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.939948
					height     	36
					orientation 	1))
				(object RoleView "actualTypeParametersOfClass" @742
				    Parent_View 	@738
				    location   	(1773, -1090)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @743
					Parent_View 	@742
					location   	(2721, 528)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	578
					justify    	0
					label      	"+actualTypeParametersOfClass"
					pctDist    	0.804721
					height     	314
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"478635F002FD"
				    client     	@738
				    supplier   	@715
				    vertices   	(list Points
					(2267, 335)
					(2407, 335)
					(2407, 610))
				    line_style 	3
				    origin_attachment 	(2267, 335)
				    terminal_attachment 	(2407, 610)
				    label      	(object SegLabel @744
					Parent_View 	@742
					location   	(2472, 569)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.900249
					height     	65
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::generics::ParameterizedClassInstantiation" @745
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2123, 1169)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@745
				location   	(1814, 1067)
				fill_color 	13434879
				nlines     	1
				max_width  	618
				justify    	0
				label      	"ParameterizedClassInstantiation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456EAB93030B"
			    width      	636
			    height     	228
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$42" @746
			    location   	(2250, 894)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456EABC3013D"
			    roleview_list 	(list RoleViews
				(object RoleView "actualTypeParametersForInstantiation" @747
				    Parent_View 	@746
				    location   	(109, 169)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @748
					Parent_View 	@747
					location   	(2418, 837)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	707
					justify    	0
					label      	"+actualTypeParametersForInstantiation"
					pctDist    	0.362319
					height     	168
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EABC501CC"
				    client     	@746
				    supplier   	@715
				    vertices   	(list Points
					(2250, 894)
					(2250, 733))
				    line_style 	3
				    origin_attachment 	(2250, 894)
				    terminal_attachment 	(2250, 733)
				    label      	(object SegLabel @749
					Parent_View 	@747
					location   	(2205, 773)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1..*"
					pctDist    	0.751825
					height     	46
					orientation 	0)
				    label      	(object SegLabel @750
					Parent_View 	@747
					location   	(2345, 776)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	3
					anchor_loc 	1
					nlines     	1
					max_width  	158
					justify    	0
					label      	"{ordered}"
					pctDist    	0.731884
					height     	95
					orientation 	1))
				(object RoleView "parameterizedClassInstantiation" @751
				    Parent_View 	@746
				    location   	(109, 169)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @752
					Parent_View 	@751
					location   	(2422, 963)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	605
					justify    	0
					label      	"+parameterizedClassInstantiation"
					pctDist    	0.430657
					height     	172
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456EABC501EA"
				    client     	@746
				    supplier   	@745
				    vertices   	(list Points
					(2250, 894)
					(2250, 1055))
				    line_style 	3
				    origin_attachment 	(2250, 894)
				    terminal_attachment 	(2250, 1055)
				    label      	(object SegLabel @753
					Parent_View 	@751
					location   	(2290, 1018)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.768116
					height     	40
					orientation 	0))))
			(object AssociationViewNew "$UNNAMED$46" @754
			    location   	(2028, 650)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"494BAF27002E"
			    roleview_list 	(list RoleViews
				(object RoleView "parameterizedClass" @755
				    Parent_View 	@754
				    location   	(-113, -75)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @756
					Parent_View 	@755
					location   	(1788, 507)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	389
					justify    	0
					label      	"+parameterizedClass"
					pctDist    	1.159292
					height     	85
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"494BAF27002F"
				    client     	@754
				    supplier   	@723
				    vertices   	(list Points
					(2028, 650)
					(2028, 422)
					(1852, 422))
				    line_style 	3
				    origin_attachment 	(2028, 650)
				    terminal_attachment 	(1852, 422)
				    label      	(object SegLabel @757
					Parent_View 	@755
					location   	(1893, 394)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.899772
					height     	29
					orientation 	1))
				(object RoleView "$UNNAMED$47" @758
				    Parent_View 	@754
				    location   	(-113, -75)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"494BAF270030"
				    client     	@754
				    supplier   	@745
				    vertices   	(list Points
					(2028, 650)
					(2028, 1054))
				    line_style 	3
				    origin_attachment 	(2028, 650)
				    terminal_attachment 	(2028, 1054)
				    label      	(object SegLabel @759
					Parent_View 	@758
					location   	(1972, 1029)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.938497
					height     	57
					orientation 	1))))
			(object InheritTreeView "" @760
			    location   	(1635, 738)
			    line_color 	3342489
			    fill_color 	13434879
			    supplier   	@723
			    vertices   	(list Points
				(1635, 738)
				(1635, 480)))
			(object InheritView "" @761
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456ED74502A1"
			    client     	@706
			    supplier   	@723
			    vertices   	(list Points
				(1163, 1224)
				(1163, 738))
			    line_style 	3
			    origin_attachment 	(1163, 1224)
			    terminal_attachment 	(1163, 738)
			    drawSupplier 	@760)
			(object InheritView "" @762
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456EAE7A01AB"
			    client     	@745
			    supplier   	@723
			    vertices   	(list Points
				(1866, 1055)
				(1866, 738))
			    line_style 	3
			    origin_attachment 	(1866, 1055)
			    terminal_attachment 	(1866, 738)
			    drawSupplier 	@760)))
		(object ClassDiagram "Package Ownership"
		    quid       	"479711930271"
		    title      	"Package Ownership"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	0
		    origin_y   	1451
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @763
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1421, 206)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@763
				location   	(1129, 77)
				fill_color 	13434879
				nlines     	1
				max_width  	584
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	602
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::PackageOwner" @764
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1751, 648)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@764
				location   	(1339, 544)
				fill_color 	13434879
				nlines     	1
				max_width  	824
				justify    	0
				label      	"PackageOwner")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"479592D900FA"
			    width      	842
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @765
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47959544033C"
			    client     	@764
			    supplier   	@763
			    vertices   	(list Points
				(1526, 531)
				(1526, 347))
			    line_style 	3
			    origin_attachment 	(1526, 531)
			    terminal_attachment 	(1526, 347))
			(object ClassView "Class" "Logical View::data::generics::ClassParameterization" @766
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(539, 1939)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@766
				location   	(319, 1888)
				fill_color 	13434879
				nlines     	1
				max_width  	440
				justify    	0
				label      	"ClassParameterization")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456ECEC60286"
			    width      	458
			    height     	126
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::modelmanagement::Package" @767
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(943, 861)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@767
				location   	(601, 757)
				fill_color 	13434879
				nlines     	1
				max_width  	684
				justify    	0
				label      	"Package")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"452B7C8B00D8"
			    compartment 	(object Compartment
				Parent_View 	@767
				location   	(601, 953)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	5
				max_width  	0)
			    width      	702
			    height     	232
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "" @768
			    location   	(1081, 609)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"479592FF003E"
			    roleview_list 	(list RoleViews
				(object RoleView "owner" @769
				    Parent_View 	@768
				    location   	(828, 425)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @770
					Parent_View 	@769
					location   	(1258, 569)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	"+owner"
					pctDist    	0.713816
					height     	41
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"479592FF0252"
				    client     	@768
				    supplier   	@764
				    vertices   	(list Points
					(1081, 609)
					(1330, 609))
				    line_style 	3
				    origin_attachment 	(1081, 609)
				    terminal_attachment 	(1330, 609)
				    label      	(object SegLabel @771
					Parent_View 	@769
					location   	(1290, 660)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.842105
					height     	51
					orientation 	1))
				(object RoleView "ownedPackages" @772
				    Parent_View 	@768
				    location   	(828, 425)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @773
					Parent_View 	@772
					location   	(790, 657)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	335
					justify    	0
					label      	"+ownedPackages"
					pctDist    	0.648000
					height     	178
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"479592FF0242"
				    client     	@768
				    supplier   	@767
				    vertices   	(list Points
					(1081, 609)
					(967, 609)
					(967, 745))
				    line_style 	3
				    origin_attachment 	(1081, 609)
				    terminal_attachment 	(967, 745)
				    label      	(object SegLabel @774
					Parent_View 	@772
					location   	(909, 711)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.864000
					height     	59
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$44" @775
			    location   	(529, 1337)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47971235033C"
			    roleview_list 	(list RoleViews
				(object RoleView "parameterizedClasses" @776
				    Parent_View 	@775
				    location   	(-325, 476)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @777
					Parent_View 	@776
					location   	(284, 1772)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	441
					justify    	0
					label      	"+parameterizedClasses"
					pctDist    	0.807050
					height     	246
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4797123801E4"
				    client     	@775
				    supplier   	@766
				    vertices   	(list Points
					(529, 1337)
					(529, 1876))
				    line_style 	3
				    origin_attachment 	(529, 1337)
				    terminal_attachment 	(529, 1876)
				    label      	(object SegLabel @778
					Parent_View 	@776
					location   	(481, 1851)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.952769
					height     	49
					orientation 	1))
				(object RoleView "package_" @779
				    Parent_View 	@775
				    location   	(-325, 476)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @780
					Parent_View 	@779
					location   	(388, 886)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	205
					justify    	0
					label      	"+package_"
					pctDist    	0.836735
					height     	142
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"479712380261"
				    client     	@775
				    supplier   	@767
				    vertices   	(list Points
					(529, 1337)
					(529, 861)
					(592, 861))
				    line_style 	3
				    origin_attachment 	(529, 1337)
				    terminal_attachment 	(592, 861)
				    label      	(object SegLabel @781
					Parent_View 	@779
					location   	(539, 820)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.901670
					height     	41
					orientation 	0))))
			(object ClassView "Class" "Logical View::data::generics::ParameterizedClassInstantiation" @782
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2297, 1944)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@782
				location   	(1987, 1838)
				fill_color 	13434879
				nlines     	1
				max_width  	620
				justify    	0
				label      	"ParameterizedClassInstantiation")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"456EAB93030B"
			    width      	638
			    height     	236
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::SapClass" @783
			    ShowCompartmentStereotypes 	TRUE
			    SuppressOperation 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2303, 1409)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@783
				location   	(2106, 1327)
				fill_color 	13434879
				nlines     	1
				max_width  	394
				justify    	0
				label      	"SapClass")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4432171B031E"
			    compartment 	(object Compartment
				Parent_View 	@783
				location   	(2106, 1501)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	FALSE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	1
				max_width  	0)
			    width      	412
			    height     	188
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "ParameterizedClassDeclaration" @784
			    location   	(1128, 1413)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object SegLabel @785
				Parent_View 	@784
				location   	(1228, 1445)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				anchor     	1
				anchor_loc 	1
				nlines     	1
				max_width  	571
				justify    	0
				label      	"ParameterizedClassDeclaration"
				pctDist    	2.166667
				height     	32
				orientation 	1)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456ECED301F8"
			    roleview_list 	(list RoleViews
				(object RoleView "parameterization" @786
				    Parent_View 	@784
				    location   	(-1086, 4)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @787
					Parent_View 	@786
					location   	(896, 1752)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	526
					justify    	0
					label      	"+parameterization"
					pctDist    	0.872027
					height     	275
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456ECED401B4"
				    client     	@784
				    supplier   	@766
				    vertices   	(list Points
					(1128, 1413)
					(621, 1413)
					(621, 1876))
				    line_style 	3
				    origin_attachment 	(1128, 1413)
				    terminal_attachment 	(621, 1876)
				    label      	(object SegLabel @788
					Parent_View 	@786
					location   	(677, 1825)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.947905
					height     	56
					orientation 	0))
				(object RoleView "owningClassDefinition" @789
				    Parent_View 	@784
				    location   	(-1086, 4)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @790
					Parent_View 	@789
					location   	(1857, 1369)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	419
					justify    	0
					label      	"+owningClassDefinition"
					pctDist    	0.753368
					height     	45
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"456ECED401A0"
				    client     	@784
				    supplier   	@783
				    vertices   	(list Points
					(1128, 1413)
					(2097, 1413))
				    line_style 	3
				    origin_attachment 	(1128, 1413)
				    terminal_attachment 	(2097, 1413)
				    label      	(object SegLabel @791
					Parent_View 	@789
					location   	(2033, 1454)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.933953
					height     	41
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$8" @792
			    location   	(1980, 808)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4795967B001F"
			    roleview_list 	(list RoleViews
				(object RoleView "package_" @793
				    Parent_View 	@792
				    location   	(77, 126)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @794
					Parent_View 	@793
					location   	(1536, 861)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	205
					justify    	0
					label      	"+package_"
					pctDist    	0.649416
					height     	53
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795967B0020"
				    client     	@792
				    supplier   	@767
				    vertices   	(list Points
					(1980, 808)
					(1294, 808))
				    line_style 	3
				    origin_attachment 	(1980, 808)
				    terminal_attachment 	(1294, 808)
				    label      	(object SegLabel @795
					Parent_View 	@793
					location   	(1365, 855)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.898164
					height     	47
					orientation 	0))
				(object RoleView "classes" @796
				    Parent_View 	@792
				    location   	(77, 126)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @797
					Parent_View 	@796
					location   	(2058, 1225)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	180
					justify    	0
					label      	"+classes"
					pctDist    	0.868114
					height     	101
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4795967B0021"
				    client     	@792
				    supplier   	@783
				    vertices   	(list Points
					(1980, 808)
					(2158, 808)
					(2158, 1315))
				    line_style 	3
				    origin_attachment 	(1980, 808)
				    terminal_attachment 	(2158, 1315)
				    label      	(object SegLabel @798
					Parent_View 	@796
					location   	(2115, 1283)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.954925
					height     	44
					orientation 	1))))
			(object AssociationViewNew "$UNNAMED$46" @799
			    location   	(2385, 1664)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"494BAF27002E"
			    roleview_list 	(list RoleViews
				(object RoleView "$UNNAMED$47" @800
				    Parent_View 	@799
				    location   	(82, 255)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @801
					Parent_View 	@800
					location   	(2344, 1793)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					hidden     	TRUE
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	450
					justify    	0
					label      	""
					pctDist    	0.800000
					height     	42
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"494BAF270030"
				    client     	@799
				    supplier   	@782
				    vertices   	(list Points
					(2385, 1664)
					(2385, 1826))
				    line_style 	3
				    origin_attachment 	(2385, 1664)
				    terminal_attachment 	(2385, 1826)
				    label      	(object SegLabel @802
					Parent_View 	@800
					location   	(2439, 1809)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..*"
					pctDist    	0.900000
					height     	54
					orientation 	0))
				(object RoleView "parameterizedClass" @803
				    Parent_View 	@799
				    location   	(82, 255)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @804
					Parent_View 	@803
					location   	(2607, 1581)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	389
					justify    	0
					label      	"+parameterizedClass"
					pctDist    	0.520000
					height     	222
					orientation 	1)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"494BAF27002F"
				    client     	@799
				    supplier   	@783
				    vertices   	(list Points
					(2385, 1664)
					(2385, 1503))
				    line_style 	3
				    origin_attachment 	(2385, 1664)
				    terminal_attachment 	(2385, 1503)
				    label      	(object SegLabel @805
					Parent_View 	@803
					location   	(2439, 1520)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.900000
					height     	54
					orientation 	1))))
			(object InheritView "" @806
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"456EAE7A01AB"
			    client     	@782
			    supplier   	@783
			    vertices   	(list Points
				(2235, 1825)
				(2235, 1502))
			    line_style 	3
			    origin_attachment 	(2235, 1825)
			    terminal_attachment 	(2235, 1502))))))
	(object Class_Category "tuples"
	    quid       	"4914633C0177"
	    exportControl 	"Public"
	    logical_models 	(list unit_reference_list
		(object Class "TupleTypeDefinition"
		    quid       	"49146359007D"
		    documentation 	"A tuple type defines named and typed elements. Conformance for tuple types is less strict. It need not be explicitly defined as is required for classes. This allows tuple types to conform to each other based on their structure."
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"491463C203B9"
			    supplier   	"Logical View::data::classes::TypeDefinition"
			    quidu      	"47B9A97A00CB")))
		(object Class "TupleElement"
		    quid       	"491463630280"
		    superclasses 	(list inheritance_relationship_list
			(object Inheritance_Relationship
			    quid       	"4914637B008C"
			    supplier   	"Logical View::data::classes::TypedElement"
			    quidu      	"4717B7BC031A")
			(object Inheritance_Relationship
			    quid       	"491463E9001F"
			    supplier   	"Logical View::modelmanagement::NamedElement"
			    quidu      	"45013C240030")))
		(object Association "$UNNAMED$48"
		    quid       	"4914639201E4"
		    roles      	(list role_list
			(object Role "elements"
			    quid       	"4914639203C8"
			    label      	"elements"
			    supplier   	"Logical View::data::tuples::TupleElement"
			    quidu      	"491463630280"
			    client_cardinality 	(value cardinality "1..*")
			    Containment 	"By Value"
			    is_navigable 	TRUE)
			(object Role "$UNNAMED$49"
			    quid       	"4914639203CA"
			    supplier   	"Logical View::data::tuples::TupleTypeDefinition"
			    quidu      	"49146359007D"
			    client_cardinality 	(value cardinality "1")
			    is_aggregate 	TRUE))))
	    logical_presentations 	(list unit_reference_list
		(object ClassDiagram "Tuple Types"
		    quid       	"49146344005D"
		    title      	"Tuple Types"
		    zoom       	100
		    max_height 	28350
		    max_width  	21600
		    origin_x   	440
		    origin_y   	0
		    items      	(list diagram_item_list
			(object ClassView "Class" "Logical View::data::classes::TypedElement" @807
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(1056, 334)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@807
				location   	(908, 205)
				fill_color 	13434879
				nlines     	1
				max_width  	296
				justify    	0
				label      	"TypedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"4717B7BC031A"
			    compartment 	(object Compartment
				Parent_View 	@807
				location   	(908, 426)
				font       	(object Font
				    size       	10
				    face       	"Arial"
				    bold       	FALSE
				    italics    	TRUE
				    underline  	FALSE
				    strike     	FALSE
				    color      	0
				    default_color 	TRUE)
				icon_style 	"Icon"
				fill_color 	16777215
				anchor     	2
				nlines     	3
				max_width  	0)
			    width      	314
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::classes::TypeDefinition" @808
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2280, 350)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@808
				location   	(1892, 126)
				fill_color 	13434879
				nlines     	1
				max_width  	776
				justify    	0
				label      	"TypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"47B9A97A00CB"
			    width      	794
			    height     	472
			    annotation 	8
			    autoResize 	TRUE)
			(object AssociationViewNew "$UNNAMED$12" @809
			    location   	(1548, 334)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"47CBF4180109"
			    roleview_list 	(list RoleViews
				(object RoleView "ownerTypedElement" @810
				    Parent_View 	@809
				    location   	(-1285, -797)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @811
					Parent_View 	@810
					location   	(1435, 383)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	393
					justify    	0
					label      	"+ownerTypedElement"
					pctDist    	0.337386
					height     	49
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010B"
				    client     	@809
				    supplier   	@807
				    vertices   	(list Points
					(1548, 334)
					(1213, 334))
				    line_style 	3
				    origin_attachment 	(1548, 334)
				    terminal_attachment 	(1213, 334)
				    label      	(object SegLabel @812
					Parent_View 	@810
					location   	(1283, 289)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.793313
					height     	46
					orientation 	1))
				(object RoleView "ownedTypeDefinition" @813
				    Parent_View 	@809
				    location   	(-1285, -797)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @814
					Parent_View 	@813
					location   	(1676, 299)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	396
					justify    	0
					label      	"+ownedTypeDefinition"
					pctDist    	0.386018
					height     	36
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"47CBF418010A"
				    client     	@809
				    supplier   	@808
				    vertices   	(list Points
					(1548, 334)
					(1883, 334))
				    line_style 	3
				    origin_attachment 	(1548, 334)
				    terminal_attachment 	(1883, 334)
				    label      	(object SegLabel @815
					Parent_View 	@813
					location   	(1838, 372)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"0..1"
					pctDist    	0.869301
					height     	38
					orientation 	1))))
			(object ClassView "Class" "Logical View::data::tuples::TupleElement" @816
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(922, 978)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@816
				location   	(780, 928)
				fill_color 	13434879
				nlines     	1
				max_width  	284
				justify    	0
				label      	"TupleElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"491463630280"
			    width      	302
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object ClassView "Class" "Logical View::data::tuples::TupleTypeDefinition" @817
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(2291, 975)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@817
				location   	(2093, 925)
				fill_color 	13434879
				nlines     	1
				max_width  	396
				justify    	0
				label      	"TupleTypeDefinition")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"49146359007D"
			    width      	414
			    height     	124
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @818
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"491463C203B9"
			    client     	@817
			    supplier   	@808
			    vertices   	(list Points
				(2291, 913)
				(2291, 586))
			    line_style 	3
			    origin_attachment 	(2291, 913)
			    terminal_attachment 	(2291, 586))
			(object AssociationViewNew "$UNNAMED$48" @819
			    location   	(1578, 960)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4914639201E4"
			    roleview_list 	(list RoleViews
				(object RoleView "elements" @820
				    Parent_View 	@819
				    location   	(203, -111)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    label      	(object SegLabel @821
					Parent_View 	@820
					location   	(1201, 1002)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	1
					anchor_loc 	1
					nlines     	1
					max_width  	191
					justify    	0
					label      	"+elements"
					pctDist    	0.748284
					height     	42
					orientation 	0)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4914639203C8"
				    client     	@819
				    supplier   	@816
				    vertices   	(list Points
					(1578, 960)
					(1073, 960))
				    line_style 	3
				    origin_attachment 	(1578, 960)
				    terminal_attachment 	(1073, 960)
				    label      	(object SegLabel @822
					Parent_View 	@820
					location   	(1155, 914)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1..*"
					pctDist    	0.837529
					height     	47
					orientation 	1))
				(object RoleView "$UNNAMED$49" @823
				    Parent_View 	@819
				    location   	(203, -111)
				    font       	(object Font
					size       	10
					face       	"Arial"
					bold       	FALSE
					italics    	FALSE
					underline  	FALSE
					strike     	FALSE
					color      	0
					default_color 	TRUE)
				    stereotype 	TRUE
				    line_color 	3342489
				    quidu      	"4914639203CA"
				    client     	@819
				    supplier   	@817
				    vertices   	(list Points
					(1578, 960)
					(2084, 960))
				    line_style 	3
				    origin_attachment 	(1578, 960)
				    terminal_attachment 	(2084, 960)
				    label      	(object SegLabel @824
					Parent_View 	@823
					location   	(2000, 920)
					font       	(object Font
					    size       	10
					    face       	"Arial"
					    bold       	FALSE
					    italics    	FALSE
					    underline  	FALSE
					    strike     	FALSE
					    color      	0
					    default_color 	TRUE)
					anchor     	2
					anchor_loc 	1
					nlines     	1
					max_width  	15
					justify    	0
					label      	"1"
					pctDist    	0.836842
					height     	41
					orientation 	0))))
			(object ClassView "Class" "Logical View::modelmanagement::NamedElement" @825
			    ShowCompartmentStereotypes 	TRUE
			    IncludeAttribute 	TRUE
			    IncludeOperation 	TRUE
			    location   	(534, 344)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	TRUE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@825
				location   	(256, 215)
				fill_color 	13434879
				nlines     	1
				max_width  	556
				justify    	0
				label      	"NamedElement")
			    icon_style 	"Icon"
			    line_color 	3342489
			    fill_color 	13434879
			    quidu      	"45013C240030"
			    width      	574
			    height     	282
			    annotation 	8
			    autoResize 	TRUE)
			(object InheritView "" @826
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"4914637B008C"
			    client     	@816
			    supplier   	@807
			    vertices   	(list Points
				(1016, 916)
				(1016, 475))
			    line_style 	3
			    origin_attachment 	(1016, 916)
			    terminal_attachment 	(1016, 475))
			(object InheritView "" @827
			    stereotype 	TRUE
			    line_color 	3342489
			    quidu      	"491463E9001F"
			    client     	@816
			    supplier   	@825
			    vertices   	(list Points
				(803, 915)
				(803, 484))
			    line_style 	3
			    origin_attachment 	(803, 915)
			    terminal_attachment 	(803, 484))
			(object NoteView @828
			    location   	(1390, 1344)
			    font       	(object Font
				size       	10
				face       	"Arial"
				bold       	FALSE
				italics    	FALSE
				underline  	FALSE
				strike     	FALSE
				color      	0
				default_color 	TRUE)
			    label      	(object ItemLabel
				Parent_View 	@828
				location   	(837, 1247)
				fill_color 	13434879
				nlines     	3
				max_width  	1071
				label      	
|We now may introduce a specific copy statement that can copy the contents of a tuple into an object according to "intuitive" rules (think MOVE CORRESPONDING).
				)
			    line_color 	3342489
			    fill_color 	13434879
			    width      	1131
			    height     	206))))))
    logical_presentations 	(list unit_reference_list))
