[ocl2qvti] - oclContainer opcall analysis in context X, will also
consider containment properties whose type is the subtype of X.
- Defining AST ops for PathNameCS and PathElementCS

Conflicts:
	plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl
	tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi
	tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl
	tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol
index 9df8e25..8ab06d3 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtiUtils.eol
@@ -1,8 +1,16 @@
-	
+-- globalVars: traceabilityPropName
+--  
+-- in order to use getTraceabilityProperty() helper operation a traceabilityPropName should have been defined
+--
+--
 operation OCL!ShadowExp getExpressionContextType () : OCL!Class {
 	return self.getContainingExpressionInOCL().ownedContext.type;
 }
 
+operation OCL!Operation getContextType () : OCL!Class {
+	return self.bodyExpression.ownedContext.type;
+}
+
 operation OCL!OCLExpression getContainingExpressionInOCL() {
 	var container = self.eContainer();
 	while (not container.isKindOf(OCL!ExpressionInOCL)) {
@@ -32,6 +40,16 @@
 	return 'u' + ShadowExp.getShadowTypeName() + '_' + refProp.name;
 }
 
+operation OCL!Operation getUpdateMappingName() : String {
+ 	var opType = self.bodyExpression.ownedContext.type; 	
+	return 'u' + opType.name + '_' + opType.getTraceabilityProperty().name;
+}
+
+operation OCL!Type getTraceabilityProperty() : OCL!Property {
+	// return self.ownedAttribute.selectOne(x | x.name = 'ast'); // FIXME can we parameterize the traceability property name ?
+	return self.asSequence().closure(x | x.superClasses).including(self).ownedProperties.flatten().selectOne(x | x.name = traceabilityPropName);
+}
+
 // FIXME clash naming
 // Remove if the traceMM-based transformation is discarded
 operation OCL!ShadowExp getTraceElementName() : String {	
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl
index 2bf5537..2d301ae 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/etl/ocl2qvtp_v2.etl
@@ -160,7 +160,7 @@
 	
 	var pAssignment = new QVTi!PropertyAssignment;
 	pAssignment.targetProperty = refProp;
-	pAssignment.value = s.createPropertyAssignmentValue(leftVar);
+	pAssignment.value = s.ownedInit.createPropertyAssignmentValue(leftVar);
 	pAssignment.slotExpression = asTypeOpCallExp;
 	
 	var guardPattern = new QVTi!GuardPattern;	
@@ -173,77 +173,131 @@
 	t.bottomPattern = bottomPattern;
 }
 
-operation OCL!ShadowExp createCreationMapping_LeftDomain ( ) : QVTi!CoreDomain {
-	var contextType = self.getExpressionContextType();
-	var domain = new QVTi!CoreDomain;	
-	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= LEFT);
-	domain.isCheckable = true;
+rule AstOpWithNoShadowExps2UpdateMapping
+	transform s : OCL!Operation
+	to t : QVTi!Mapping {
 	
-	var guardPattern = new QVTi!GuardPattern;	
+	guard {
+		// FIXME this is hazardy. Rework
+		// Ideally lazy transformation on the content of the OCL Model should avoid calling
+		// this rule on undesired elemenets (imported from other ocl files)
+		return s.closure(x|x.eContainer()).contains(LEFTCS_PACKAGE) and
+			   s.isAstOp() and 
+			   not s.isInvalidOp() and
+			   not s.getAllContents().exists(x | x.isKindOf(OCL!ShadowExp));
+	}
+	
+	t.name = s.getUpdateMappingName();
+	
+	var rightDomain = s.createUpdateMapping_RightDomain();
+	var leftDomain = s.createUpdateMapping_LeftDomain();
+	
+	t.domain.add(leftDomain);
+	t.domain.add(rightDomain);
+		
+	// Bottom pattern expression : AssignmentExp
+	var leftVar = leftDomain.guardPattern.variable.first();
+		
+	var varExpression = new QVTi!VariableExp;
+	varExpression.referredVariable = leftVar;
+	varExpression.type = varExpression.referredVariable.type;
+	var traceabilityProperty = varExpression.type.getTraceabilityProperty();
+	
+	var pAssignment = new QVTi!PropertyAssignment;
+	pAssignment.targetProperty = traceabilityProperty;
+	pAssignment.value = s.bodyExpression.ownedBody.createPropertyAssignmentValue(leftVar);
+	pAssignment.slotExpression = varExpression;
+	
+	var guardPattern = new QVTi!GuardPattern;
 	var bottomPattern = new QVTi!BottomPattern;
+	bottomPattern.assignment.add(pAssignment);
 	
-	var variable = new QVTi!Variable;
-	variable.name = contextType.name.firstToLowerCase();
-	variable.type = contextType;
+	t.guardPattern = guardPattern;
+	t.bottomPattern = bottomPattern;
 	
-	guardPattern.variable.add(variable);
-	
+}
+
+operation createDomain() : QVTi!CoreDomain {
+
+	var domain = new QVTi!CoreDomain;
+	var guardPattern = new QVTi!GuardPattern;	
+	var bottomPattern = new QVTi!BottomPattern;	
 	domain.guardPattern = guardPattern;
 	domain.bottomPattern = bottomPattern;
 	return domain;
 }
 
 
+operation OCL!Type create_LeftDomain() :  QVTi!CoreDomain {
+
+	var domain = createDomain();	
+	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= LEFT);
+	domain.isCheckable = true;
+		
+	var variable = new QVTi!Variable;
+	variable.name = self.name.firstToLowerCase();
+	variable.type = self;
+	
+	domain.guardPattern.variable.add(variable);
+	return domain;
+}
+
+operation OCL!Type create_RightDomain() : QVTi!CoreDomain {
+
+	var domain = createDomain();
+	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT);
+	domain.isEnforceable = true;
+	
+	var variable = new QVTi!RealizedVariable;
+	variable.name = self.name.firstToLowerCase();
+	variable.type = self;
+	
+	domain.bottomPattern.realizedVariable.add(variable);
+	return domain;
+}
+
+operation OCL!ShadowExp createCreationMapping_LeftDomain ( ) : QVTi!CoreDomain {
+	var contextType = self.getExpressionContextType();
+	return contextType.create_LeftDomain();
+}
+
+
 operation OCL!ShadowExp createCreationMapping_RightDomain () : QVTi!CoreDomain {
 	var constructedType = self.type;
-		
-	var domain = new QVTi!CoreDomain;
-	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT);
-	domain.isEnforceable = true;
-	
-	var guardPattern = new QVTi!GuardPattern;	
-	var bottomPattern = new QVTi!BottomPattern;
-	
-	var variable = new QVTi!RealizedVariable;
-	variable.name = constructedType.name.firstToLowerCase();
-	variable.type = constructedType;
-
-	bottomPattern.realizedVariable.add(variable);
-	
-	domain.guardPattern = guardPattern;
-	domain.bottomPattern = bottomPattern;
-	return domain;
+	return constructedType.create_RightDomain();	
 }
 
 operation OCL!ShadowExp createUpdateMapping_LeftDomain ( ) : QVTi!CoreDomain {
-	// It's exactly the same domain as we have for the creation mappings
-	return self.createCreationMapping_LeftDomain();
+	var contextType = self.getExpressionContextType();
+	return contextType.create_LeftDomain();
 }
 
-
 operation OCL!ShadowExp createUpdateMapping_RightDomain () : QVTi!CoreDomain {
-	var constructedType = self.type;
-		
-	var domain = new QVTi!CoreDomain;
+	var domain = createDomain();
 	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT);
 	domain.isEnforceable = true;
-	
-	var guardPattern = new QVTi!GuardPattern;	
-	var bottomPattern = new QVTi!BottomPattern;
-	
-	domain.guardPattern = guardPattern;
-	domain.bottomPattern = bottomPattern;
 	return domain;
 }
 
-operation OCL!ShadowPart createPropertyAssignmentValue(leftVar : QVTi!Variable) : OCL!OCLExpression {
-	-- FIXME what happens with synthetised types ????
-	var initExp = self.ownedInit;
-	var eUtil = emfTool.getEcoreUtil();
-	var newInitExp = eUtil.copy(initExp);
-	-- We need to replace the OCL refered "self" varible by the QVTi domain "leftVar" and ast op calls
-	return newInitExp.doReplacements(leftVar);
+operation OCL!Operation createUpdateMapping_LeftDomain ( ) : QVTi!CoreDomain {
+	var contextType = self.getContextType();
+	return contextType.create_LeftDomain();
+}
 
+
+operation OCL!Operation createUpdateMapping_RightDomain () : QVTi!CoreDomain {
+	var domain = createDomain();
+	domain.typedModel = QVTi!TypedModel.all.selectOne(x | x.name= RIGHT);
+	domain.isEnforceable = true;
+	return domain;
+}
+
+operation OCL!OCLExpression createPropertyAssignmentValue(leftVar : QVTi!Variable) : OCL!OCLExpression {
+	-- FIXME what happens with synthetised types ????
+	var eUtil = emfTool.getEcoreUtil();
+	var newExp = eUtil.copy(self);
+	-- We need to replace the OCL refered "self" varible by the QVTi domain "leftVar" and ast op calls
+	return newExp.doReplacements(leftVar);
 }
 
 operation OCL!OCLExpression doReplacements(leftVar : QVTi!Variable) : OCL!OCLExpression {
@@ -334,39 +388,54 @@
 }
 
 operation OCL!Element isAstOpCallExp() : Boolean {
-	return self.isKindOf(OCL!OperationCallExp) and self.referredOperation.name = 'ast';
+	return self.isKindOf(OCL!OperationCallExp) and self.referredOperation.isAstOp();
 }
 
+operation OCL!Operation isAstOp() : Boolean {
+	return self.name = 'ast'; 
+}
+
+operation OCL!Operation isInvalidOp () : Boolean {
+    // return not self.bodyExpression.ownedContext.type.isIsAbstract;
+	return self.bodyExpression.isDefined() and
+		self.bodyExpression.ownedBody.type = getOclInvalid();
+}
 
 operation OCL!ShadowPart getAstCalls() : Collection(OCL!OperationCallExpression) {
 	  
 	return self.ownedInit.getAllContents().including(self.ownedInit)
-			.select(x | x.isKindOf(OCL!OperationCallExp) and x.referredOperation.name = 'ast' );
+			.select(x | x.isAstOpCallExp());
 }
 
-operation OCL!Type getTraceabilityProperty() : OCL!Property {
-	// return self.ownedAttribute.selectOne(x | x.name = 'ast'); // FIXME can we parameterize the traceability property name ?
-	return self.asSequence().closure(x | x.superClasses).ownedProperties.flatten().selectOne(x | x.name = traceabilityPropName);
-}
 
+@cached
 operation getOclAnyEqualsOp() : OCL!Operation {
  	return OclStdLib!Class.all.selectOne(x | x.name = 'OclAny').ownedOperations
 						   .selectOne(x | x.name = '=');
 }
 
+@cached
 operation getOclMetaClass() : OCL!Class {
 	return OclStdLib!Class.all.selectOne(x | x.name = 'Class');
 }
 
+@cached
+operation getOclInvalid() : OCL!Class {
+	return OclStdLib!Class.all.selectOne(x | x.name = 'OclInvalid');
+}
+
+@cached
 operation getOclAnyOclAsTypeOp() : OCL!Operation {
 	return OclStdLib!Class.all.selectOne(x | x.name = 'OclAny').ownedOperations
 						   .selectOne(x | x.name = 'oclAsType');
 }
 
+@cached
 operation getBooleanPrimitiveType() : OCL!PrimitiveType {
 	return OclStdLib!PrimitiveType.all.selectOne(x | x.name = 'Boolean');
 }
 
+@cached
 operation getBooleanNotOp() : OCL!Operation {
  	return OclStdLib!Class.all.selectOne(x | x.name = 'Boolean').ownedOperations
 						   .selectOne(x | x.name = 'not');
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl
index ac4d466..2cdd905 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.ocl
@@ -3,18 +3,19 @@
 import 'SourceDisambiguation.ocl'
 import 'TargetLookup.ocl'
 
-
 package source
 
+context SElement
+def : ast() : target::Visitable =
+	invalid -- To be overriden by subtypes
+	
 context SRoot
 def : ast() : target::TRoot =
 	target::TRoot {
 		ownedA = ownedX.ast()
 	}
 
-context X
-def : ast() : target::A =
-	invalid -- To be overriden
+
 
 context X
 def : ast() : target::A =
@@ -47,22 +48,46 @@
 		ownsD = ownsZ.ast(),
 		name = name
 	}
-
-context Z
-def : ast() : target::D =
-	invalid -- To be overriden
 	
 context Z
 def : ast() : target::D =
-	if toY.oclIsKindOf(source::Y1)
+	if toY.oclIsKindOf(Y1)
 	then target::D {
-		toA = toY.oclAsType(source::Y1).ast().toA1,
-		refsB = ast().lookupB(self)
+		toA = toY.oclAsType(Y1).ast().toA1,
+		refsB = if refers = null
+				then null
+				else refers.ast().oclAsType(target::B)
+				endif
 	}
 	else target::D {
-		toA = toY.oclAsType(source::Y2).ast().toA2,
-		refsC = ast().lookupC(self)
+		toA = toY.oclAsType(Y2).ast().toA2,
+		refsC = if refers = null
+				then null
+				else refers.ast().oclAsType(target::C)
+				endif
 	}
 	endif
+
+context PathNameCS 
+def : ast() : target::NamedElement =
+	path->at(path->size()).ast()
 	
+context PathElementCS 
+def : ast() : target::NamedElement =
+	let path  = pathName.path,
+		lookupContext  = pathName.oclContainer().oclAsType(SElement).ast(),
+		first = path->at(1),
+		last = path->at(path->size())
+	in  if self = first  -- A lookup for the first path element, will be non local lookup
+		then if self = last
+			then lookupContext._lookupNamedElement(self, false)
+			else lookupContext._lookupNamespace(self, false)
+			endif
+		else -- else, we will perform a local lookup in the referred element of the previous PathElementCS
+			let prevPathElement = path->at(path->indexOf(self)-1)
+			in if self = last
+				then  prevPathElement.ast()._lookupNamedElement(self, true)
+				else  prevPathElement.ast()._lookupNamespace(self, true)
+				endif
+		endif
 endpackage
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias
index 4d0c803..693328d 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtias
@@ -915,16 +915,32 @@
             </value>
           </assignment>
           <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.bottom._1">
-            <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupC..source.Z">
-              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
-                <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
-                    referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+              <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                    referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
                   <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
                 </ownedSource>
+                <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
+              </ownedCondition>
+              <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
+                    </ownedSource>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                      referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                </ownedSource>
                 <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
-                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/>
-              </ownedSource>
-              <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
+                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.C"/>
+              </ownedElse>
+              <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
             </value>
           </assignment>
           <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsC">
@@ -1028,16 +1044,32 @@
             </value>
           </assignment>
           <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.bottom._1">
-            <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupB..source.Z">
-              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
-                <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
-                    referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+              <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                    referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
                   <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
                 </ownedSource>
+                <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
+              </ownedCondition>
+              <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
+                    </ownedSource>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                      referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                </ownedSource>
                 <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
-                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/>
-              </ownedSource>
-              <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
+                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.B"/>
+              </ownedElse>
+              <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
             </value>
           </assignment>
           <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsB">
@@ -1046,12 +1078,228 @@
           </assignment>
         </bottomPattern>
       </rule>
+      <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathElementCS_ast" name="uPathElementCS_ast">
+        <domain xsi:type="qvtcb:CoreDomain" name="leftCS" isCheckable="true" isEnforceable="false" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS">
+          <guardPattern>
+            <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/>
+          </guardPattern>
+          <bottomPattern/>
+        </domain>
+        <domain xsi:type="qvtcb:CoreDomain" name="rightAS" isCheckable="false" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS">
+          <guardPattern/>
+          <bottomPattern/>
+        </domain>
+        <guardPattern/>
+        <bottomPattern>
+          <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0" name="_0" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+          <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0">
+            <value xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+              <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                  <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                    <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                      <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                          referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                        <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                        <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                            referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedVariable"/>
+                      </ownedCondition>
+                      <ownedElse xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                        <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                          <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                            <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/>
+                          </ownedCondition>
+                          <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace"
+                              referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean">
+                            <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                                <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                                  referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                            </ownedSource>
+                            <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                                booleanSymbol="true"/>
+                          </ownedElse>
+                          <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                              referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean">
+                            <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                                <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                                  referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                            </ownedSource>
+                            <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                                booleanSymbol="true"/>
+                          </ownedThen>
+                        </ownedIn>
+                        <ownedVariable name="prevPathElement" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                          <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                            <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                            <ownedArguments xsi:type="pivot:OperationCallExp" name="-" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Integer.%45%..ocl.OclSelf">
+                              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny">
+                                <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                                <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                  integerSymbol="1"/>
+                            </ownedArguments>
+                          </ownedInit>
+                        </ownedVariable>
+                      </ownedElse>
+                      <ownedThen xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                        <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                          <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/>
+                        </ownedCondition>
+                        <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace"
+                            referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean">
+                          <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              booleanSymbol="false"/>
+                        </ownedElse>
+                        <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                            referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean">
+                          <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              booleanSymbol="false"/>
+                        </ownedThen>
+                      </ownedThen>
+                    </ownedIn>
+                    <ownedVariable name="last" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                      <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                          referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                        <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                        <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size">
+                          <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                        </ownedArguments>
+                      </ownedInit>
+                    </ownedVariable>
+                  </ownedIn>
+                  <ownedVariable name="first" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                    <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                        referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                      <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                      <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                          integerSymbol="1"/>
+                    </ownedInit>
+                  </ownedVariable>
+                </ownedIn>
+                <ownedVariable name="lookupContext" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable">
+                  <ownedInit xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                      <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                        <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclElement"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.oclContainer">
+                          <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                              referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName">
+                            <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          </ownedSource>
+                        </ownedSource>
+                        <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                            referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SElement"/>
+                      </ownedSource>
+                    </ownedSource>
+                    <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                        referredType="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"/>
+                  </ownedInit>
+                </ownedVariable>
+              </ownedIn>
+              <ownedVariable name="path" type="#//@ownedPackages.1/@ownedClasses.7">
+                <ownedInit xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName">
+                    <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" isImplicit="true"
+                        referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                  </ownedSource>
+                </ownedInit>
+              </ownedVariable>
+            </value>
+          </assignment>
+          <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.bottom._0"/>
+            <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+          </assignment>
+        </bottomPattern>
+      </rule>
+      <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathNameCS_ast" name="uPathNameCS_ast">
+        <domain xsi:type="qvtcb:CoreDomain" name="leftCS" isCheckable="true" isEnforceable="false" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS">
+          <guardPattern>
+            <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/>
+          </guardPattern>
+          <bottomPattern/>
+        </domain>
+        <domain xsi:type="qvtcb:CoreDomain" name="rightAS" isCheckable="false" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS">
+          <guardPattern/>
+          <bottomPattern/>
+        </domain>
+        <guardPattern/>
+        <bottomPattern>
+          <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0" name="_0" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+          <assignment xsi:type="qvtcb:VariableAssignment" targetVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0">
+            <value xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                    referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                    <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true"
+                        referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                      referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+                    </ownedSource>
+                  </ownedArguments>
+                </ownedSource>
+              </ownedSource>
+              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+            </value>
+          </assignment>
+          <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:VariableExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.bottom._0"/>
+            <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+          </assignment>
+        </bottomPattern>
+      </rule>
       <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.__root__" name="__root__">
         <guardPattern/>
         <bottomPattern/>
         <mappingStatement xsi:type="qvti:MappingSequence">
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1064,7 +1312,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.0.sRoot" name="sRoot" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1077,7 +1325,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.1.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1090,7 +1338,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.2.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1103,7 +1351,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.3.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1116,7 +1364,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.4.sRoot" name="sRoot" type="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1129,7 +1377,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.5.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1142,7 +1390,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.6.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1155,7 +1403,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.7.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1168,7 +1416,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.8.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1181,7 +1429,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.9.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1194,7 +1442,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.10.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1207,7 +1455,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.11.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1220,7 +1468,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.12.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1233,7 +1481,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.13.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1246,7 +1494,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.14.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.8" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.X" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1259,7 +1507,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.15.x" name="x" type="pivot:Class SourceMM1.ecore.oclas#T.source.X"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1272,7 +1520,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.16.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.9" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1285,7 +1533,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.17.y1" name="y1" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1298,7 +1546,7 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.18.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.10" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
@@ -1311,184 +1559,246 @@
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.19.y2" name="y2" type="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"/>
           </mappingStatements>
           <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.13" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/>
+            </ownedSource>
+            <ownedBody xsi:type="qvti:MappingSequence">
+              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uPathElementCS_ast">
+                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS">
+                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.20.pathElementCS"/>
+                </binding>
+              </mappingStatements>
+            </ownedBody>
+            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.20.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/>
+          </mappingStatements>
+          <mappingStatements xsi:type="qvti:MappingLoop">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.14" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/>
+            </ownedSource>
+            <ownedBody xsi:type="qvti:MappingSequence">
+              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uPathNameCS_ast">
+                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS">
+                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.21.pathNameCS"/>
+                </binding>
+              </mappingStatements>
+            </ownedBody>
+            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.21.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/>
+          </mappingStatements>
+          <mappingStatements xsi:type="qvti:MappingLoop">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
               <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
             </ownedSource>
             <ownedBody xsi:type="qvti:MappingSequence">
               <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_1_refsB">
                 <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z">
-                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.20.z"/>
-                </binding>
-              </mappingStatements>
-            </ownedBody>
-            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.20.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
-          </mappingStatements>
-          <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
-              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
-            </ownedSource>
-            <ownedBody xsi:type="qvti:MappingSequence">
-              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_0_refsC">
-                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z">
-                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.21.z"/>
-                </binding>
-              </mappingStatements>
-            </ownedBody>
-            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.21.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
-          </mappingStatements>
-          <mappingStatements xsi:type="qvti:MappingLoop">
-            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.11" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
-              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
-            </ownedSource>
-            <ownedBody xsi:type="qvti:MappingSequence">
-              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_1_toA">
-                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_1_toA.leftCS.guard.z">
                   <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.22.z"/>
                 </binding>
               </mappingStatements>
             </ownedBody>
             <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.22.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
           </mappingStatements>
+          <mappingStatements xsi:type="qvti:MappingLoop">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
+            </ownedSource>
+            <ownedBody xsi:type="qvti:MappingSequence">
+              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_0_refsC">
+                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z">
+                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.23.z"/>
+                </binding>
+              </mappingStatements>
+            </ownedBody>
+            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.23.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
+          </mappingStatements>
+          <mappingStatements xsi:type="qvti:MappingLoop">
+            <ownedSource xsi:type="pivot:OperationCallExp" type="#//@ownedPackages.1/@ownedClasses.12" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.allInstances">
+              <ownedSource xsi:type="pivot:TypeExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredType="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
+            </ownedSource>
+            <ownedBody xsi:type="qvti:MappingSequence">
+              <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m..Source2Target_qvtp_qvtias.uD_1_toA">
+                <binding boundVariable="#qV..Source2Target_qvtp_qvtias.uD_1_toA.leftCS.guard.z">
+                  <value xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#i..Source2Target_qvtp_qvtias.__root__.0.24.z"/>
+                </binding>
+              </mappingStatements>
+            </ownedBody>
+            <ownedIterators xmi:id="i..Source2Target_qvtp_qvtias.__root__.0.24.z" name="z" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z"/>
+          </mappingStatements>
         </mappingStatement>
       </rule>
       <ownedContext name="this" type="pivot:Class http://www.eclipse.org/qvt/2015/QVTimperativeLibrary.oclas#T.qvtbaselibrary.Transformation"/>
     </ownedClasses>
   </ownedPackages>
   <ownedPackages xmi:id="P.$$" name="$$" URI="http://www.eclipse.org/ocl/2015/Orphanage" nsPrefix="orphanage">
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.12" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.13 #//@ownedPackages.1/@ownedClasses.14"
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.16 #//@ownedPackages.1/@ownedClasses.17"
         elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.18" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"
         isNullFree="true">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.17 #//@ownedPackages.1/@ownedClasses.18"
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.20 #//@ownedPackages.1/@ownedClasses.21"
         elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"
         isNullFree="true">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot">
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.24 #//@ownedPackages.1/@ownedClasses.25"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.28" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.24" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.29" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.25" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z">
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.31" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:SetType" name="Set" superClasses="#//@ownedPackages.1/@ownedClasses.32" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SetT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.33" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.34" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.27" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.28" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.29" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.30" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.31" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.32" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.33" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot">
-      <ownedBindings>
-        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
-      </ownedBindings>
-    </ownedClasses>
     <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.34" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.35" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.35" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.36" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.38" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.39" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.40" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.40" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.41" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.42" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.43" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.36" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.44" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.37" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z">
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.45" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Z">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.46" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.47" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
     <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
         elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
@@ -1532,6 +1842,12 @@
       </ownedBindings>
     </ownedClasses>
     <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
         elementType="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.SRoot" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
@@ -1561,5 +1877,17 @@
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Z" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
       </ownedBindings>
     </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
   </ownedPackages>
 </qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias
index c24ce1e..4c660dd 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2Target.qvtp.qvtias
@@ -799,16 +799,32 @@
         </guardPattern>
         <bottomPattern>
           <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsC">
-            <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupC..source.Z">
-              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
-                <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
-                    referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+              <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                    referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
                   <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
                 </ownedSource>
+                <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
+              </ownedCondition>
+              <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.C" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
+                    </ownedSource>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                      referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                </ownedSource>
                 <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
-                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/>
-              </ownedSource>
-              <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_0_refsC.leftCS.guard.z"/>
+                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.C"/>
+              </ownedElse>
+              <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
             </value>
             <slotExpression xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
               <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
@@ -896,16 +912,32 @@
         </guardPattern>
         <bottomPattern>
           <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="TargetMM1.ecore.oclas#p.target.D.refsB">
-            <value xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="TargetLookup.ocl.oclas#o.target.D.lookupB..source.Z">
-              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
-                <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
-                    referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+              <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                    referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
                   <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
                 </ownedSource>
+                <ownedArguments xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
+              </ownedCondition>
+              <ownedElse xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.B" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.Z.refers">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
+                    </ownedSource>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                      referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                </ownedSource>
                 <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
-                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.D"/>
-              </ownedSource>
-              <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.Z" referredVariable="#qV..Source2Target_qvtp_qvtias.uD_1_refsB.leftCS.guard.z"/>
+                    referredType="pivot:Class TargetMM1.ecore.oclas#T.target.B"/>
+              </ownedElse>
+              <ownedThen xsi:type="pivot:NullLiteralExp" isRequired="false" type="pivot:VoidType http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclVoid"/>
             </value>
             <slotExpression xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.D" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
               <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
@@ -917,93 +949,317 @@
           </assignment>
         </bottomPattern>
       </rule>
+      <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathElementCS_ast" name="uPathElementCS_ast">
+        <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS">
+          <guardPattern>
+            <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS" name="pathElementCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"/>
+          </guardPattern>
+          <bottomPattern/>
+        </domain>
+        <domain xsi:type="qvtcb:CoreDomain" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS">
+          <guardPattern/>
+          <bottomPattern/>
+        </domain>
+        <guardPattern/>
+        <bottomPattern>
+          <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+              <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                  <ownedIn xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                    <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                      <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                          referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                        <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                        <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                            referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedVariable"/>
+                      </ownedCondition>
+                      <ownedElse xsi:type="pivot:LetExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                        <ownedIn xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                          <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                            <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/>
+                          </ownedCondition>
+                          <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace"
+                              referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean">
+                            <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                                <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                                  referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                            </ownedSource>
+                            <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                                booleanSymbol="true"/>
+                          </ownedElse>
+                          <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                              referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean">
+                            <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                                <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedIn/@ownedElse/@ownedVariable"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                                  referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+                            </ownedSource>
+                            <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                            <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                                booleanSymbol="true"/>
+                          </ownedThen>
+                        </ownedIn>
+                        <ownedVariable name="prevPathElement" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                          <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                            <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                            <ownedArguments xsi:type="pivot:OperationCallExp" name="-" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Integer.%45%..ocl.OclSelf">
+                              <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                  referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny">
+                                <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                                <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                    referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                              </ownedSource>
+                              <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                                  integerSymbol="1"/>
+                            </ownedArguments>
+                          </ownedInit>
+                        </ownedVariable>
+                      </ownedElse>
+                      <ownedThen xsi:type="pivot:IfExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement">
+                        <ownedCondition xsi:type="pivot:OperationCallExp" name="=" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+                          <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedIn/@ownedIn/@ownedVariable"/>
+                        </ownedCondition>
+                        <ownedElse xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Namespace"
+                            referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamespace..source.PathElementCS..ocl.Boolean">
+                          <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              booleanSymbol="false"/>
+                        </ownedElse>
+                        <ownedThen xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"
+                            referredOperation="TargetLookup.ocl.oclas#o.target.Visitable._lookupNamedElement..source.PathElementCS..ocl.Boolean">
+                          <ownedSource xsi:type="pivot:VariableExp" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"
+                              referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedIn/@ownedVariable"/>
+                          <ownedArguments xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                              referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          <ownedArguments xsi:type="pivot:BooleanLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Boolean"
+                              booleanSymbol="false"/>
+                        </ownedThen>
+                      </ownedThen>
+                    </ownedIn>
+                    <ownedVariable name="last" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                      <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                          referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                        <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                        <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size">
+                          <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                        </ownedArguments>
+                      </ownedInit>
+                    </ownedVariable>
+                  </ownedIn>
+                  <ownedVariable name="first" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+                    <ownedInit xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                        referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                      <ownedSource xsi:type="pivot:VariableExp" type="#//@ownedPackages.1/@ownedClasses.7" referredVariable="#//@ownedPackages.0/@ownedClasses.0/@rule.23/@bottomPattern/@assignment.0/@value/@ownedVariable"/>
+                      <ownedArguments xsi:type="pivot:IntegerLiteralExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                          integerSymbol="1"/>
+                    </ownedInit>
+                  </ownedVariable>
+                </ownedIn>
+                <ownedVariable name="lookupContext" isRequired="false" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable">
+                  <ownedInit xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                        referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                      <ownedSource xsi:type="pivot:OperationCallExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.SElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+                        <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclElement"
+                            referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclElement.oclContainer">
+                          <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                              referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName">
+                            <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                                isImplicit="true" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                          </ownedSource>
+                        </ownedSource>
+                        <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                            referredType="pivot:Class SourceMM1.ecore.oclas#T.source.SElement"/>
+                      </ownedSource>
+                    </ownedSource>
+                    <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class"
+                        referredType="pivot:Class TargetMM1.ecore.oclas#T.target.Visitable"/>
+                  </ownedInit>
+                </ownedVariable>
+              </ownedIn>
+              <ownedVariable name="path" type="#//@ownedPackages.1/@ownedClasses.7">
+                <ownedInit xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"
+                      referredProperty="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName">
+                    <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" isImplicit="true"
+                        referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+                  </ownedSource>
+                </ownedInit>
+              </ownedVariable>
+            </value>
+            <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+          </assignment>
+        </bottomPattern>
+      </rule>
+      <rule xsi:type="qvti:Mapping" xmi:id="m..Source2Target_qvtp_qvtias.uPathNameCS_ast" name="uPathNameCS_ast">
+        <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" typedModel="#qT..Source2Target_qvtp_qvtias.leftCS">
+          <guardPattern>
+            <variable xmi:id="qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS" name="pathNameCS" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS"/>
+          </guardPattern>
+          <bottomPattern/>
+        </domain>
+        <domain xsi:type="qvtcb:CoreDomain" isEnforceable="true" typedModel="#qT..Source2Target_qvtp_qvtias.rightAS">
+          <guardPattern/>
+          <bottomPattern/>
+        </domain>
+        <guardPattern/>
+        <bottomPattern>
+          <assignment xsi:type="qvtcb:PropertyAssignment" targetProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+            <value xsi:type="pivot:OperationCallExp" type="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement" referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OclAny.oclAsType..TT">
+              <ownedSource xsi:type="pivot:PropertyCallExp" type="pivot:Class http://www.eclipse.org/emf/2002/Ecore.oclas#T.ecore.EObject"
+                  referredProperty="SourceMM1.ecore.oclas#p.source.SElement.ast">
+                <ownedSource xsi:type="pivot:OperationCallExp" isRequired="false" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS"
+                    referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+                  <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                    <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true"
+                        referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+                  </ownedSource>
+                  <ownedArguments xsi:type="pivot:OperationCallExp" type="pivot:PrimitiveType http://www.eclipse.org/ocl/2015/Library.oclas#Integer"
+                      referredOperation="http://www.eclipse.org/ocl/2015/Library.oclas#o.ocl.Collection.size">
+                    <ownedSource xsi:type="pivot:PropertyCallExp" type="#//@ownedPackages.1/@ownedClasses.7" referredProperty="SourceMM1.ecore.oclas#p.source.PathNameCS.path">
+                      <ownedSource xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" isImplicit="true"
+                          referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+                    </ownedSource>
+                  </ownedArguments>
+                </ownedSource>
+              </ownedSource>
+              <ownedArguments xsi:type="pivot:TypeExp" type="pivot:Class http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.Class" referredType="pivot:Class TargetMM1.ecore.oclas#T.target.NamedElement"/>
+            </value>
+            <slotExpression xsi:type="pivot:VariableExp" type="pivot:Class SourceMM1.ecore.oclas#T.source.PathNameCS" referredVariable="#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+          </assignment>
+        </bottomPattern>
+      </rule>
     </ownedClasses>
   </ownedPackages>
   <ownedPackages xmi:id="P.$$" name="$$" URI="http://www.eclipse.org/ocl/2015/Orphanage" nsPrefix="orphanage">
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.7" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.8" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.8 #//@ownedPackages.1/@ownedClasses.9"
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.9 #//@ownedPackages.1/@ownedClasses.10"
         elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.10" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.11" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.11" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.12" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2"
         isNullFree="true">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.12 #//@ownedPackages.1/@ownedClasses.13"
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.13 #//@ownedPackages.1/@ownedClasses.14"
         elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.14" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.15" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"
+    <ownedClasses xsi:type="pivot:SequenceType" name="Sequence" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1"
         isNullFree="true">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..SequenceT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.16" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
+    <ownedClasses xsi:type="pivot:OrderedSetType" name="OrderedSet" superClasses="#//@ownedPackages.1/@ownedClasses.17 #//@ownedPackages.1/@ownedClasses.18"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedSetT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.A" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.17" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.17" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.X">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.X" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.18" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.C">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.C" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.19" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y2">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y2" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.20" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.23" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.21" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.24" elementType="pivot:Class TargetMM1.ecore.oclas#T.target.B">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class TargetMM1.ecore.oclas#T.target.B" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
-    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.22" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.25" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.Y1">
       <ownedBindings>
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
       </ownedBindings>
     </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="OrderedCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..OrderedCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="UniqueCollection" superClasses="#//@ownedPackages.1/@ownedClasses.26" elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..UniqueCollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
     <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
         elementType="pivot:Class TargetMM1.ecore.oclas#T.target.A">
       <ownedBindings>
@@ -1046,5 +1302,11 @@
         <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.Y1" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
       </ownedBindings>
     </ownedClasses>
+    <ownedClasses xsi:type="pivot:CollectionType" name="Collection" superClasses="http://www.eclipse.org/ocl/2015/Library.oclas#T.ocl.OclAny"
+        elementType="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS">
+      <ownedBindings>
+        <ownedSubstitutions actual="pivot:Class SourceMM1.ecore.oclas#T.source.PathElementCS" formal="http://www.eclipse.org/ocl/2015/Library.oclas#t.ocl..CollectionT"/>
+      </ownedBindings>
+    </ownedClasses>
   </ownedPackages>
 </qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi
index fd4bcfa..a369acc 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/Source2TargetSchedule.xmi
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <qvts:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvts="http://www.eclipse.org/qvt/2015/Schedule"
     xsi:schemaLocation="http://www.eclipse.org/qvt/2015/Schedule java://org.eclipse.qvtd.pivot.schedule.SchedulePackage">
-  <datums xsi:type="qvts:ClassDatum" sub="//@datums.1 //@datums.3 //@datums.10 //@datums.15 //@datums.17 //@datums.19">
+  <datums xsi:type="qvts:ClassDatum" sub="//@datums.1 //@datums.3 //@datums.10 //@datums.15 //@datums.17 //@datums.18">
     <type href="SourceMM1.ecore.oclas#T.source.SElement"/>
-    <propertyDatums sub="//@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1 //@datums.10/@propertyDatums.0 //@datums.15/@propertyDatums.1">
+    <propertyDatums sub="//@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1 //@datums.10/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.18/@propertyDatums.0 //@datums.17/@propertyDatums.0"
+        requiredBy="//@actions.23">
       <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/>
     </propertyDatums>
   </datums>
@@ -22,7 +23,7 @@
   <datums xsi:type="qvts:ClassDatum" producedBy="//@actions.0" dataParameter="//@actions.0/@results.0">
     <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.0/@domain.1"/>
     <type href="TargetMM1.ecore.oclas#T.target.TRoot"/>
-    <propertyDatums producedBy="//@actions.8" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.6/@propertyDatums.1">
+    <propertyDatums producedBy="//@actions.8" requiredBy="//@actions.23" opposite="//@datums.6/@propertyDatums.1">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.0/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.TRoot.ownedA"/>
     </propertyDatums>
@@ -61,7 +62,7 @@
   <datums xsi:type="qvts:ClassDatum" super="//@datums.4" sub="//@datums.6 //@datums.12 //@datums.14">
     <type href="TargetMM1.ecore.oclas#T.target.Namespace"/>
     <propertyDatums super="//@datums.4/@propertyDatums.0" sub="//@datums.6/@propertyDatums.0 //@datums.12/@propertyDatums.2 //@datums.14/@propertyDatums.2"
-        requiredBy="//@actions.20 //@actions.22">
+        requiredBy="//@actions.23">
       <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/>
     </propertyDatums>
   </datums>
@@ -84,7 +85,7 @@
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.2/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/>
     </propertyDatums>
-    <propertyDatums sub="//@datums.8/@propertyDatums.1" producedBy="//@actions.12" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.14/@propertyDatums.0">
+    <propertyDatums sub="//@datums.8/@propertyDatums.1" producedBy="//@actions.12" requiredBy="//@actions.23" opposite="//@datums.14/@propertyDatums.0">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.2/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.A2.ownsC"/>
     </propertyDatums>
@@ -108,7 +109,7 @@
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.3/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/>
     </propertyDatums>
-    <propertyDatums producedBy="//@actions.14" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.12/@propertyDatums.0">
+    <propertyDatums producedBy="//@actions.14" requiredBy="//@actions.23" opposite="//@datums.12/@propertyDatums.0">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.3/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.A1.ownsB"/>
     </propertyDatums>
@@ -148,11 +149,11 @@
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.B.toA1"/>
     </propertyDatums>
-    <propertyDatums producedBy="//@actions.15" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.16/@propertyDatums.3">
+    <propertyDatums producedBy="//@actions.15" requiredBy="//@actions.23" opposite="//@datums.16/@propertyDatums.3">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.B.ownsD"/>
     </propertyDatums>
-    <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.16" requiredBy="//@actions.22">
+    <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.16" requiredBy="//@actions.23">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.4/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/>
     </propertyDatums>
@@ -184,11 +185,11 @@
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.C.toA2"/>
     </propertyDatums>
-    <propertyDatums producedBy="//@actions.17" requiredBy="//@actions.20 //@actions.22" opposite="//@datums.16/@propertyDatums.4">
+    <propertyDatums producedBy="//@actions.17" requiredBy="//@actions.23" opposite="//@datums.16/@propertyDatums.4">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.C.ownsD"/>
     </propertyDatums>
-    <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.18" requiredBy="//@actions.20">
+    <propertyDatums super="//@datums.5/@propertyDatums.0" producedBy="//@actions.18">
       <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.5/@domain.1"/>
       <property href="TargetMM1.ecore.oclas#p.target.NamedElement.name"/>
     </propertyDatums>
@@ -238,28 +239,44 @@
       <property href="TargetMM1.ecore.oclas#p.target.D.toC"/>
     </propertyDatums>
   </datums>
-  <datums xsi:type="qvts:ClassDatum" super="//@datums.0">
+  <datums xsi:type="qvts:ClassDatum" super="//@datums.0" requiredBy="//@actions.23" dataParameter="//@actions.23/@parameters.0">
+    <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/>
+    <type href="SourceMM1.ecore.oclas#T.source.PathElementCS"/>
+    <propertyDatums super="//@datums.0/@propertyDatums.0" producedBy="//@actions.23" requiredBy="//@actions.23 //@actions.24">
+      <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/>
+      <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/>
+    </propertyDatums>
+    <propertyDatums requiredBy="//@actions.23">
+      <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/>
+      <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.pathName"/>
+    </propertyDatums>
+    <propertyDatums requiredBy="//@actions.23">
+      <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.23/@domain.0"/>
+      <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.name"/>
+    </propertyDatums>
+  </datums>
+  <datums xsi:type="qvts:ClassDatum" super="//@datums.0" requiredBy="//@actions.24" dataParameter="//@actions.24/@parameters.0">
+    <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/>
     <type href="SourceMM1.ecore.oclas#T.source.PathNameCS"/>
-    <propertyDatums requiredBy="//@actions.20 //@actions.22">
+    <propertyDatums super="//@datums.0/@propertyDatums.0" producedBy="//@actions.24" requiredBy="//@actions.20 //@actions.22">
+      <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/>
+      <property href="SourceMM1.ecore.oclas#p.source.SElement.ast"/>
+    </propertyDatums>
+    <propertyDatums requiredBy="//@actions.23 //@actions.24">
+      <domain href="Source2Target.qvtp.qvtias#//@ownedPackages.0/@ownedClasses.0/@rule.24/@domain.0"/>
       <property href="SourceMM1.ecore.oclas#p.source.PathNameCS.path"/>
     </propertyDatums>
   </datums>
   <datums xsi:type="qvts:ClassDatum">
     <type href="EnvExample1.ecore.oclas#T.env.Environment"/>
-    <propertyDatums requiredBy="//@actions.20 //@actions.22">
+    <propertyDatums requiredBy="//@actions.23">
       <property href="EnvExample1.ecore.oclas#p.env.Environment.parentEnv"/>
     </propertyDatums>
-    <propertyDatums requiredBy="//@actions.20 //@actions.22">
+    <propertyDatums requiredBy="//@actions.23">
       <property href="EnvExample1.ecore.oclas#p.env.Environment.namedElements"/>
     </propertyDatums>
   </datums>
-  <datums xsi:type="qvts:ClassDatum" super="//@datums.0">
-    <type href="SourceMM1.ecore.oclas#T.source.PathElementCS"/>
-    <propertyDatums requiredBy="//@actions.20 //@actions.22">
-      <property href="SourceMM1.ecore.oclas#p.source.PathElementCS.name"/>
-    </propertyDatums>
-  </datums>
-  <actions xsi:type="qvts:MappingAction" productions="//@datums.2 //@datums.1/@propertyDatums.1" requisites="//@datums.1" order="1" parent="//@actions.23">
+  <actions xsi:type="qvts:MappingAction" productions="//@datums.2 //@datums.1/@propertyDatums.1" requisites="//@datums.1" order="1" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.0/@parameters.0"/>
     </parameterDerivations>
@@ -272,7 +289,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cSRoot_2_TRoot"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.8 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="4" parent="//@actions.23">
+      order="4" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.1/@parameters.0"/>
     </parameterDerivations>
@@ -285,7 +302,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A3"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.7 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="3" parent="//@actions.23">
+      order="3" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.2/@parameters.0"/>
     </parameterDerivations>
@@ -298,7 +315,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A2"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.9 //@datums.3/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.3"
-      order="2" parent="//@actions.23">
+      order="2" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.3/@parameters.0"/>
     </parameterDerivations>
@@ -311,7 +328,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cX_2_A1"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.12 //@datums.11/@propertyDatums.0" requisites="//@datums.11" order="6"
-      parent="//@actions.23">
+      parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.4/@parameters.0"/>
     </parameterDerivations>
@@ -324,7 +341,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cY1_2_B"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.14 //@datums.13/@propertyDatums.0" requisites="//@datums.13" order="7"
-      parent="//@actions.23">
+      parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.5/@parameters.0"/>
     </parameterDerivations>
@@ -337,7 +354,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cY2_2_C"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.16 //@datums.15/@propertyDatums.1" requisites="//@datums.15 //@datums.15/@propertyDatums.0"
-      order="8" parent="//@actions.23">
+      order="8" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.6/@parameters.0"/>
     </parameterDerivations>
@@ -350,7 +367,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cZ_2_D_0"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.16 //@datums.15/@propertyDatums.1" requisites="//@datums.15 //@datums.15/@propertyDatums.0"
-      order="9" parent="//@actions.23">
+      order="9" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.7/@parameters.0"/>
     </parameterDerivations>
@@ -363,7 +380,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.cZ_2_D_1"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.2/@propertyDatums.0 //@datums.6/@propertyDatums.1" requisites="//@datums.1 //@datums.1/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.1/@propertyDatums.1"
-      order="5" parent="//@actions.23">
+      order="5" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.8/@parameters.0"/>
     </parameterDerivations>
@@ -373,7 +390,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uTRoot_ownedA"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.8/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="16" parent="//@actions.23">
+      order="16" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.9/@parameters.0"/>
     </parameterDerivations>
@@ -383,7 +400,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA3_name"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.8/@propertyDatums.1 //@datums.14/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.13/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="11" parent="//@actions.23">
+      order="11" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.10/@parameters.0"/>
     </parameterDerivations>
@@ -393,7 +410,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA3_ownsC"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.7/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="15" parent="//@actions.23">
+      order="15" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.11/@parameters.0"/>
     </parameterDerivations>
@@ -403,7 +420,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA2_name"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.7/@propertyDatums.1 //@datums.14/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.13/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3 //@datums.3/@propertyDatums.4"
-      order="10" parent="//@actions.23">
+      order="10" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.12/@parameters.0"/>
     </parameterDerivations>
@@ -413,7 +430,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA2_ownsC"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.9/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.1 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3"
-      order="13" parent="//@actions.23">
+      order="13" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.13/@parameters.0"/>
     </parameterDerivations>
@@ -423,7 +440,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA1_name"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.9/@propertyDatums.1 //@datums.12/@propertyDatums.0" requisites="//@datums.3 //@datums.3/@propertyDatums.2 //@datums.11/@propertyDatums.0 //@datums.3/@propertyDatums.0 //@datums.3/@propertyDatums.3"
-      order="14" parent="//@actions.23">
+      order="14" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.14/@parameters.0"/>
     </parameterDerivations>
@@ -433,7 +450,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uA1_ownsB"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.12/@propertyDatums.1 //@datums.16/@propertyDatums.3" requisites="//@datums.11 //@datums.15/@propertyDatums.1 //@datums.11/@propertyDatums.1 //@datums.11/@propertyDatums.0"
-      order="17" parent="//@actions.23">
+      order="17" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.15/@parameters.0"/>
     </parameterDerivations>
@@ -443,7 +460,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uB_ownsD"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.12/@propertyDatums.2" requisites="//@datums.11 //@datums.11/@propertyDatums.2 //@datums.11/@propertyDatums.0"
-      order="18" parent="//@actions.23">
+      order="18" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.16/@parameters.0"/>
     </parameterDerivations>
@@ -453,7 +470,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uB_name"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.14/@propertyDatums.1 //@datums.16/@propertyDatums.4" requisites="//@datums.13 //@datums.15/@propertyDatums.1 //@datums.13/@propertyDatums.1 //@datums.13/@propertyDatums.0"
-      order="20" parent="//@actions.23">
+      order="20" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.17/@parameters.0"/>
     </parameterDerivations>
@@ -463,7 +480,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uC_ownsD"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.14/@propertyDatums.2" requisites="//@datums.13 //@datums.13/@propertyDatums.2 //@datums.13/@propertyDatums.0"
-      order="19" parent="//@actions.23">
+      order="19" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.18/@parameters.0"/>
     </parameterDerivations>
@@ -473,7 +490,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uC_name"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.0 //@datums.6/@propertyDatums.2" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.14/@propertyDatums.0 //@datums.13/@propertyDatums.0 //@datums.15/@propertyDatums.1"
-      order="12" parent="//@actions.23">
+      order="12" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.19/@parameters.0"/>
     </parameterDerivations>
@@ -482,8 +499,8 @@
     </parameters>
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_0_toA"/>
   </actions>
-  <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.1 //@datums.14/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.15/@propertyDatums.2 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.0 //@datums.18/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.19/@propertyDatums.0 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.14/@propertyDatums.2"
-      order="22" parent="//@actions.23">
+  <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.1 //@datums.14/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.2 //@datums.18/@propertyDatums.0 //@datums.15/@propertyDatums.1"
+      order="24" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.20/@parameters.0"/>
     </parameterDerivations>
@@ -493,7 +510,7 @@
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_0_refsC"/>
   </actions>
   <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.0" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.12/@propertyDatums.0 //@datums.11/@propertyDatums.0 //@datums.15/@propertyDatums.1"
-      order="23" parent="//@actions.23">
+      order="25" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.21/@parameters.0"/>
     </parameterDerivations>
@@ -502,8 +519,8 @@
     </parameters>
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_1_toA"/>
   </actions>
-  <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.2 //@datums.12/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.1 //@datums.15/@propertyDatums.2 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.0 //@datums.18/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.19/@propertyDatums.0 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.12/@propertyDatums.2"
-      order="21" parent="//@actions.23">
+  <actions xsi:type="qvts:MappingAction" productions="//@datums.16/@propertyDatums.2 //@datums.12/@propertyDatums.3" requisites="//@datums.15 //@datums.15/@propertyDatums.0 //@datums.15/@propertyDatums.2 //@datums.18/@propertyDatums.0 //@datums.15/@propertyDatums.1"
+      order="23" parent="//@actions.25">
     <parameterDerivations>
       <secondaryParameter isLoop="true" dataParameter="//@actions.22/@parameters.0"/>
     </parameterDerivations>
@@ -512,5 +529,25 @@
     </parameters>
     <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uD_1_refsB"/>
   </actions>
-  <actions xsi:type="qvts:MappingAction" children="//@actions.0 //@actions.3 //@actions.2 //@actions.1 //@actions.8 //@actions.4 //@actions.5 //@actions.6 //@actions.7 //@actions.12 //@actions.10 //@actions.19 //@actions.13 //@actions.14 //@actions.11 //@actions.9 //@actions.15 //@actions.16 //@actions.18 //@actions.17 //@actions.22 //@actions.20 //@actions.21"/>
+  <actions xsi:type="qvts:MappingAction" productions="//@datums.17/@propertyDatums.0" requisites="//@datums.17 //@datums.17/@propertyDatums.0 //@datums.0/@propertyDatums.0 //@datums.17/@propertyDatums.1 //@datums.18/@propertyDatums.1 //@datums.19/@propertyDatums.0 //@datums.19/@propertyDatums.1 //@datums.5/@propertyDatums.0 //@datums.17/@propertyDatums.2 //@datums.2/@propertyDatums.0 //@datums.9/@propertyDatums.1 //@datums.7/@propertyDatums.1 //@datums.12/@propertyDatums.1 //@datums.14/@propertyDatums.1 //@datums.12/@propertyDatums.2"
+      order="21" parent="//@actions.25">
+    <parameterDerivations>
+      <secondaryParameter isLoop="true" dataParameter="//@actions.23/@parameters.0"/>
+    </parameterDerivations>
+    <parameters secondaryParameter="//@actions.23/@parameterDerivations.0/@secondaryParameter" datum="//@datums.17">
+      <variable href="Source2Target.qvtp.qvtias#qV..Source2Target_qvtp_qvtias.uPathElementCS_ast.leftCS.guard.pathElementCS"/>
+    </parameters>
+    <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uPathElementCS_ast"/>
+  </actions>
+  <actions xsi:type="qvts:MappingAction" productions="//@datums.18/@propertyDatums.0" requisites="//@datums.18 //@datums.17/@propertyDatums.0 //@datums.18/@propertyDatums.1"
+      order="22" parent="//@actions.25">
+    <parameterDerivations>
+      <secondaryParameter isLoop="true" dataParameter="//@actions.24/@parameters.0"/>
+    </parameterDerivations>
+    <parameters secondaryParameter="//@actions.24/@parameterDerivations.0/@secondaryParameter" datum="//@datums.18">
+      <variable href="Source2Target.qvtp.qvtias#qV..Source2Target_qvtp_qvtias.uPathNameCS_ast.leftCS.guard.pathNameCS"/>
+    </parameters>
+    <mapping href="Source2Target.qvtp.qvtias#m..Source2Target_qvtp_qvtias.uPathNameCS_ast"/>
+  </actions>
+  <actions xsi:type="qvts:MappingAction" children="//@actions.0 //@actions.3 //@actions.2 //@actions.1 //@actions.8 //@actions.4 //@actions.5 //@actions.6 //@actions.7 //@actions.12 //@actions.10 //@actions.19 //@actions.13 //@actions.14 //@actions.11 //@actions.9 //@actions.15 //@actions.16 //@actions.18 //@actions.17 //@actions.23 //@actions.24 //@actions.22 //@actions.20 //@actions.21"/>
 </qvts:Schedule>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore
index 9ef6a31..c81bbe8 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/SourceMM1.ecore
@@ -25,14 +25,17 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="ownedX" upperBound="-1"
         eType="#//X" containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SElement">
+  <eClassifiers xsi:type="ecore:EClass" name="SElement" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EReference" name="ast" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PathNameCS" eSuperTypes="#//SElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="path" lowerBound="1" upperBound="-1"
-        eType="#//PathElementCS" containment="true"/>
+        eType="#//PathElementCS" containment="true" eOpposite="#//PathElementCS/pathName"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//SElement"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PathElementCS" eSuperTypes="#//SElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="pathName" eType="#//PathNameCS"
+        eOpposite="#//PathNameCS/path"/>
   </eClassifiers>
 </ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl
index 2d2b4cb..4604432 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/TargetLookup.ocl
@@ -49,6 +49,20 @@
 
 context Visitable
 
+def: _lookupNamedElements(env : env::Environment, path : source::PathElementCS, local : Boolean) : NamedElement[*] =
+	let	foundNSs = env.namedElements->selectByKind(B)->select(name = path.name)
+	in	if foundNSs->isEmpty() and not (env.parentEnv = null) and not local 
+		then _lookupNamedElements(env.parentEnv, path, local)
+		else foundNSs->asSet()
+		endif
+
+def : _lookupNamedElement(path : source::PathElementCS, local : Boolean) : NamedElement[?] =
+	let foundNSs = _lookupNamedElements(env(), path, local)
+	in	if foundNSs->isEmpty()
+		then null
+		else foundNSs->any(true) -- LookupVisitor will report ambiguous result
+		endif
+		
 def : _lookupNamespaces(env : env::Environment, path : source::PathElementCS, local : Boolean) : Namespace[*] =
 	let foundNS = env.namedElements->selectByKind(Namespace)->select(name = path.name) 
 	in  if foundNS->isEmpty() and not (env.parentEnv = null) and not local 
@@ -69,60 +83,59 @@
 	else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupNamespace(pathSeq->last(), true)
 	endif
 
-def: _lookupBs(env : env::Environment, path : source::PathElementCS, local : Boolean) : B[*] =
-	let	foundBs = env.namedElements->selectByKind(B)->select(name = path.name)
-	in	if foundBs->isEmpty() and not (env.parentEnv = null) and not local 
-		then _lookupBs(env.parentEnv, path, local)
-		else foundBs->asSet()
-		endif
-
-def : _lookupB(path : source::PathElementCS, local : Boolean) : B[?] =
-	let	foundBs = _lookupBs(env(), path, local)
-	in	if foundBs->isEmpty()
-		then null
-		else foundBs->any(true) -- LookupVisitor will report ambiguous result
-		endif
-		
-def : lookupB(pathSeq : OrderedSet(source::PathElementCS)) : B[?] = 
-	if pathSeq->size() = 1
-	then _lookupB(pathSeq->first(), false)
-	else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupB(pathSeq->last(), true)
-	endif
-
-	
-def: _lookupCs(env : env::Environment, path : source::PathElementCS, local : Boolean) : C[*] =
-	let	foundCs = env.namedElements->selectByKind(C)->select(name = path.name)
-	in	if foundCs->isEmpty() and not (env.parentEnv = null) and not local 
-		then _lookupCs(env.parentEnv, path, local)
-		else foundCs->asSet()
-		endif
-
-def : _lookupC(path : source::PathElementCS, local : Boolean) : C[?] =
-	let	foundCs = _lookupCs(env(), path, local)
-	in	if foundCs->isEmpty()
-		then null
-		else foundCs->any(true) -- LookupVisitor will report ambiguous result
-		endif
-
-def : lookupC(pathSeq : OrderedSet(source::PathElementCS)) : C[?] = 
-	if pathSeq->size() = 1
-	then _lookupC(pathSeq->first(), false)
-	else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupC(pathSeq->last(), true)
-	endif
-	
-context D
-def : lookupB(z : source::Z) : B =
-	if z.refers = null
-	then null 
-	else lookupB(z.refers.path)
-	endif
-
-def : lookupC(z : source::Z) : C =
-	if z.refers = null
-	then null 
-	else lookupC(z.refers.path)
-	endif
-
+--def: _lookupBs(env : env::Environment, path : source::PathElementCS, local : Boolean) : B[*] =
+--	let	foundBs = env.namedElements->selectByKind(B)->select(name = path.name)
+--	in	if foundBs->isEmpty() and not (env.parentEnv = null) and not local 
+--		then _lookupBs(env.parentEnv, path, local)
+--		else foundBs->asSet()
+--		endif
+--
+--def : _lookupB(path : source::PathElementCS, local : Boolean) : B[?] =
+--	let	foundBs = _lookupBs(env(), path, local)
+--	in	if foundBs->isEmpty()
+--		then null
+--		else foundBs->any(true) -- LookupVisitor will report ambiguous result
+--		endif
+--		
+--def : lookupB(pathSeq : OrderedSet(source::PathElementCS)) : B[?] = 
+--	if pathSeq->size() = 1
+--	then _lookupB(pathSeq->first(), false)
+--	else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupB(pathSeq->last(), true)
+--	endif
+--
+--	
+--def: _lookupCs(env : env::Environment, path : source::PathElementCS, local : Boolean) : C[*] =
+--	let	foundCs = env.namedElements->selectByKind(C)->select(name = path.name)
+--	in	if foundCs->isEmpty() and not (env.parentEnv = null) and not local 
+--		then _lookupCs(env.parentEnv, path, local)
+--		else foundCs->asSet()
+--		endif
+--
+--def : _lookupC(path : source::PathElementCS, local : Boolean) : C[?] =
+--	let	foundCs = _lookupCs(env(), path, local)
+--	in	if foundCs->isEmpty()
+--		then null
+--		else foundCs->any(true) -- LookupVisitor will report ambiguous result
+--		endif
+--
+--def : lookupC(pathSeq : OrderedSet(source::PathElementCS)) : C[?] = 
+--	if pathSeq->size() = 1
+--	then _lookupC(pathSeq->first(), false)
+--	else lookupNamespace(pathSeq->subOrderedSet(1,pathSeq->size()-1))?._lookupC(pathSeq->last(), true)
+--	endif
+--	
+--context D
+--def : lookupB(z : source::Z) : B =
+--	if z.refers = null
+--	then null 
+--	else lookupB(z.refers.path)
+--	endif
+--
+--def : lookupC(z : source::Z) : C =
+--	if z.refers = null
+--	then null 
+--	else lookupC(z.refers.path)
+--	endif
 
 context TRoot
 def : _env(child : ocl::OclElement) : env::Environment =
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml
index 0610ef5..7c0c1ee 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetDependencies.graphml
@@ -1057,10 +1057,10 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="17.04" width="80.94" x="0.0" y="0.0"/>
+          <y:Geometry height="17.04" width="93.72" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#586e75" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#586e75">PathNameCS</y:NodeLabel>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathElementCS</y:NodeLabel>
           <y:Shape type="rectangle"/>
         </y:ShapeNode>
       </data>
@@ -1069,16 +1069,16 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/>
+          <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#586e75" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#586e75">PathNameCS
-.path</y:NodeLabel>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathElementCS
+.ast</y:NodeLabel>
           <y:Shape type="rectangle"/>
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e32" source="n62" target="n0">
+    <edge id="e32" source="n63" target="n1">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/>
@@ -1090,6 +1090,94 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
+          <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathElementCS
+.pathName</y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n65">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathElementCS
+.name</y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e33" source="n62" target="n0">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/>
+          <y:Arrows source="none" target="delta"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n66">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="17.04" width="80.94" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathNameCS</y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n67">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathNameCS
+.ast</y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e34" source="n67" target="n1">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/>
+          <y:Arrows source="none" target="delta"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n68">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="80.94" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#268bd2" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#268bd2">PathNameCS
+.path</y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e35" source="n66" target="n0">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/>
+          <y:Arrows source="none" target="delta"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n69">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
           <y:Geometry height="17.04" width="73.485" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
           <y:BorderStyle color="#586e75" type="line" width="1.0"/>
@@ -1098,7 +1186,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <node id="n65">
+    <node id="n70">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1111,7 +1199,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <node id="n66">
+    <node id="n71">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1124,40 +1212,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <node id="n67">
-      <data key="d5"/>
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="17.04" width="93.72" x="0.0" y="0.0"/>
-          <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#586e75" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#586e75">PathElementCS</y:NodeLabel>
-          <y:Shape type="rectangle"/>
-        </y:ShapeNode>
-      </data>
-    </node>
-    <node id="n68">
-      <data key="d5"/>
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="34.08" width="93.72" x="0.0" y="0.0"/>
-          <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#586e75" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#586e75">PathElementCS
-.name</y:NodeLabel>
-          <y:Shape type="rectangle"/>
-        </y:ShapeNode>
-      </data>
-    </node>
-    <edge id="e33" source="n67" target="n0">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#93a1a1" type="dotted" width="1.0"/>
-          <y:Arrows source="none" target="delta"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <node id="n69">
+    <node id="n72">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1170,7 +1225,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e34" source="n69" target="n5">
+    <edge id="e36" source="n72" target="n5">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1178,7 +1233,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e35" source="n69" target="n4">
+    <edge id="e37" source="n72" target="n4">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1186,7 +1241,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e36" source="n2" target="n69">
+    <edge id="e38" source="n2" target="n72">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1194,7 +1249,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n70">
+    <node id="n73">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1207,7 +1262,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e37" source="n70" target="n24">
+    <edge id="e39" source="n73" target="n24">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1215,7 +1270,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e38" source="n70" target="n8">
+    <edge id="e40" source="n73" target="n8">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1223,7 +1278,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e39" source="n7" target="n70">
+    <edge id="e41" source="n7" target="n73">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1231,7 +1286,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e40" source="n11" target="n70">
+    <edge id="e42" source="n11" target="n73">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1239,7 +1294,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e41" source="n12" target="n70">
+    <edge id="e43" source="n12" target="n73">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1247,7 +1302,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n71">
+    <node id="n74">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1260,7 +1315,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e42" source="n71" target="n21">
+    <edge id="e44" source="n74" target="n21">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1268,7 +1323,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e43" source="n71" target="n8">
+    <edge id="e45" source="n74" target="n8">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1276,7 +1331,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e44" source="n7" target="n71">
+    <edge id="e46" source="n7" target="n74">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1284,7 +1339,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e45" source="n11" target="n71">
+    <edge id="e47" source="n11" target="n74">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1292,7 +1347,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e46" source="n12" target="n71">
+    <edge id="e48" source="n12" target="n74">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1300,7 +1355,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n72">
+    <node id="n75">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1313,7 +1368,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e47" source="n72" target="n27">
+    <edge id="e49" source="n75" target="n27">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1321,7 +1376,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e48" source="n72" target="n8">
+    <edge id="e50" source="n75" target="n8">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1329,7 +1384,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e49" source="n7" target="n72">
+    <edge id="e51" source="n7" target="n75">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1337,7 +1392,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e50" source="n11" target="n72">
+    <edge id="e52" source="n11" target="n75">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1345,7 +1400,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n73">
+    <node id="n76">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1358,7 +1413,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e51" source="n73" target="n38">
+    <edge id="e53" source="n76" target="n38">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1366,7 +1421,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e52" source="n73" target="n35">
+    <edge id="e54" source="n76" target="n35">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1374,7 +1429,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e53" source="n34" target="n73">
+    <edge id="e55" source="n34" target="n76">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1382,7 +1437,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n74">
+    <node id="n77">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1395,7 +1450,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e54" source="n74" target="n47">
+    <edge id="e56" source="n77" target="n47">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1403,7 +1458,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e55" source="n74" target="n44">
+    <edge id="e57" source="n77" target="n44">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1411,7 +1466,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e56" source="n43" target="n74">
+    <edge id="e58" source="n43" target="n77">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1419,7 +1474,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n75">
+    <node id="n78">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1432,7 +1487,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e57" source="n75" target="n56">
+    <edge id="e59" source="n78" target="n56">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1440,7 +1495,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e58" source="n75" target="n54">
+    <edge id="e60" source="n78" target="n54">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1448,7 +1503,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e59" source="n52" target="n75">
+    <edge id="e61" source="n52" target="n78">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1456,7 +1511,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e60" source="n53" target="n75">
+    <edge id="e62" source="n53" target="n78">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1464,7 +1519,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n76">
+    <node id="n79">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1477,7 +1532,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e61" source="n76" target="n56">
+    <edge id="e63" source="n79" target="n56">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1485,7 +1540,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e62" source="n76" target="n54">
+    <edge id="e64" source="n79" target="n54">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1493,7 +1548,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e63" source="n52" target="n76">
+    <edge id="e65" source="n52" target="n79">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1501,7 +1556,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e64" source="n53" target="n76">
+    <edge id="e66" source="n53" target="n79">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1509,7 +1564,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n77">
+    <node id="n80">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1522,7 +1577,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e65" source="n77" target="n6">
+    <edge id="e67" source="n80" target="n6">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1530,7 +1585,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e66" source="n77" target="n19">
+    <edge id="e68" source="n80" target="n19">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
@@ -1538,7 +1593,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e67" source="n2" target="n77">
+    <edge id="e69" source="n2" target="n80">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1546,7 +1601,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e68" source="n3" target="n77">
+    <edge id="e70" source="n3" target="n80">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1554,7 +1609,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e69" source="n8" target="n77">
+    <edge id="e71" source="n8" target="n80">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1562,7 +1617,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e70" source="n4" target="n77">
+    <edge id="e72" source="n4" target="n80">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1570,7 +1625,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n78">
+    <node id="n81">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1583,7 +1638,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e71" source="n78" target="n25">
+    <edge id="e73" source="n81" target="n25">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1591,7 +1646,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e72" source="n7" target="n78">
+    <edge id="e74" source="n7" target="n81">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1599,7 +1654,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e73" source="n9" target="n78">
+    <edge id="e75" source="n9" target="n81">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1607,7 +1662,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e74" source="n8" target="n78">
+    <edge id="e76" source="n8" target="n81">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1615,7 +1670,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e75" source="n11" target="n78">
+    <edge id="e77" source="n11" target="n81">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1623,7 +1678,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e76" source="n12" target="n78">
+    <edge id="e78" source="n12" target="n81">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1631,7 +1686,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n79">
+    <node id="n82">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1644,7 +1699,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e77" source="n79" target="n26">
+    <edge id="e79" source="n82" target="n26">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1652,7 +1707,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e78" source="n79" target="n48">
+    <edge id="e80" source="n82" target="n48">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1660,7 +1715,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e79" source="n7" target="n79">
+    <edge id="e81" source="n7" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1668,7 +1723,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e80" source="n10" target="n79">
+    <edge id="e82" source="n10" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1676,7 +1731,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e81" source="n44" target="n79">
+    <edge id="e83" source="n44" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1684,7 +1739,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e82" source="n8" target="n79">
+    <edge id="e84" source="n8" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1692,7 +1747,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e83" source="n11" target="n79">
+    <edge id="e85" source="n11" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1700,7 +1755,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e84" source="n12" target="n79">
+    <edge id="e86" source="n12" target="n82">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1708,7 +1763,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n80">
+    <node id="n83">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1721,7 +1776,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e85" source="n80" target="n22">
+    <edge id="e87" source="n83" target="n22">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1729,7 +1784,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e86" source="n7" target="n80">
+    <edge id="e88" source="n7" target="n83">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1737,7 +1792,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e87" source="n9" target="n80">
+    <edge id="e89" source="n9" target="n83">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1745,7 +1800,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e88" source="n8" target="n80">
+    <edge id="e90" source="n8" target="n83">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1753,7 +1808,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e89" source="n11" target="n80">
+    <edge id="e91" source="n11" target="n83">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1761,7 +1816,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e90" source="n12" target="n80">
+    <edge id="e92" source="n12" target="n83">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1769,7 +1824,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n81">
+    <node id="n84">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1782,7 +1837,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e91" source="n81" target="n23">
+    <edge id="e93" source="n84" target="n23">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1790,7 +1845,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e92" source="n81" target="n48">
+    <edge id="e94" source="n84" target="n48">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1798,7 +1853,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e93" source="n7" target="n81">
+    <edge id="e95" source="n7" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1806,7 +1861,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e94" source="n10" target="n81">
+    <edge id="e96" source="n10" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1814,7 +1869,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e95" source="n44" target="n81">
+    <edge id="e97" source="n44" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1822,7 +1877,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e96" source="n8" target="n81">
+    <edge id="e98" source="n8" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1830,7 +1885,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e97" source="n11" target="n81">
+    <edge id="e99" source="n11" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1838,7 +1893,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e98" source="n12" target="n81">
+    <edge id="e100" source="n12" target="n84">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1846,7 +1901,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n82">
+    <node id="n85">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1859,7 +1914,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e99" source="n82" target="n28">
+    <edge id="e101" source="n85" target="n28">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1867,7 +1922,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e100" source="n7" target="n82">
+    <edge id="e102" source="n7" target="n85">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1875,7 +1930,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e101" source="n9" target="n82">
+    <edge id="e103" source="n9" target="n85">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1883,7 +1938,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e102" source="n8" target="n82">
+    <edge id="e104" source="n8" target="n85">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1891,7 +1946,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e103" source="n11" target="n82">
+    <edge id="e105" source="n11" target="n85">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1899,7 +1954,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n83">
+    <node id="n86">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1912,7 +1967,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e104" source="n83" target="n29">
+    <edge id="e106" source="n86" target="n29">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1920,7 +1975,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e105" source="n83" target="n39">
+    <edge id="e107" source="n86" target="n39">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1928,7 +1983,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e106" source="n7" target="n83">
+    <edge id="e108" source="n7" target="n86">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1936,7 +1991,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e107" source="n10" target="n83">
+    <edge id="e109" source="n10" target="n86">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1944,7 +1999,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e108" source="n35" target="n83">
+    <edge id="e110" source="n35" target="n86">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1952,7 +2007,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e109" source="n8" target="n83">
+    <edge id="e111" source="n8" target="n86">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1960,7 +2015,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e110" source="n11" target="n83">
+    <edge id="e112" source="n11" target="n86">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -1968,7 +2023,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <node id="n84">
+    <node id="n87">
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
@@ -1981,7 +2036,7 @@
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e111" source="n84" target="n40">
+    <edge id="e113" source="n87" target="n40">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1989,7 +2044,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e112" source="n84" target="n60">
+    <edge id="e114" source="n87" target="n60">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -1997,7 +2052,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e113" source="n34" target="n84">
+    <edge id="e115" source="n34" target="n87">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2005,7 +2060,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e114" source="n54" target="n84">
+    <edge id="e116" source="n54" target="n87">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2013,7 +2068,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e115" source="n36" target="n84">
+    <edge id="e117" source="n36" target="n87">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2021,158 +2076,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e116" source="n35" target="n84">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <node id="n85">
-      <data key="d5"/>
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/>
-          <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uB_name
-(18)</y:NodeLabel>
-          <y:Shape type="hexagon"/>
-        </y:ShapeNode>
-      </data>
-    </node>
-    <edge id="e117" source="n85" target="n41">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e118" source="n34" target="n85">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e119" source="n37" target="n85">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e120" source="n35" target="n85">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <node id="n86">
-      <data key="d5"/>
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="34.08" width="72.23" x="0.0" y="0.0"/>
-          <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uC_ownsD
-(20)</y:NodeLabel>
-          <y:Shape type="hexagon"/>
-        </y:ShapeNode>
-      </data>
-    </node>
-    <edge id="e121" source="n86" target="n49">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e122" source="n86" target="n61">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e123" source="n43" target="n86">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e124" source="n54" target="n86">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e125" source="n45" target="n86">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e126" source="n44" target="n86">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <node id="n87">
-      <data key="d5"/>
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="34.08" width="64.07499999999999" x="0.0" y="0.0"/>
-          <y:Fill color="#eee8d5" transparent="false"/>
-          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uC_name
-(19)</y:NodeLabel>
-          <y:Shape type="hexagon"/>
-        </y:ShapeNode>
-      </data>
-    </node>
-    <edge id="e127" source="n87" target="n50">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e128" source="n43" target="n87">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e129" source="n46" target="n87">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e130" source="n44" target="n87">
+    <edge id="e118" source="n35" target="n87">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2187,13 +2091,13 @@
           <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
           <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uD_0_toA
-(12)</y:NodeLabel>
+          <y:NodeLabel textColor="#cb4b16">uB_name
+(18)</y:NodeLabel>
           <y:Shape type="hexagon"/>
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e131" source="n88" target="n57">
+    <edge id="e119" source="n88" target="n41">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -2201,15 +2105,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e132" source="n88" target="n20">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e133" source="n52" target="n88">
+    <edge id="e120" source="n34" target="n88">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2217,7 +2113,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e134" source="n53" target="n88">
+    <edge id="e121" source="n37" target="n88">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2225,23 +2121,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e135" source="n48" target="n88">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e136" source="n44" target="n88">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e137" source="n54" target="n88">
+    <edge id="e122" source="n35" target="n88">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2253,16 +2133,16 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="34.08" width="78.05499999999999" x="0.0" y="0.0"/>
+          <y:Geometry height="34.08" width="72.23" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
           <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uD_0_refsC
-(22)</y:NodeLabel>
+          <y:NodeLabel textColor="#cb4b16">uC_ownsD
+(20)</y:NodeLabel>
           <y:Shape type="hexagon"/>
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e138" source="n89" target="n58">
+    <edge id="e123" source="n89" target="n49">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -2270,15 +2150,15 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e139" source="n89" target="n51">
+    <edge id="e124" source="n89" target="n61">
       <data key="d9">
         <y:PolyLineEdge>
-          <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
           <y:Arrows source="none" target="standard"/>
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e140" source="n52" target="n89">
+    <edge id="e125" source="n43" target="n89">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2286,7 +2166,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e141" source="n53" target="n89">
+    <edge id="e126" source="n54" target="n89">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2294,7 +2174,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e142" source="n54" target="n89">
+    <edge id="e127" source="n45" target="n89">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2302,103 +2182,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e143" source="n55" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e144" source="n63" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e145" source="n65" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e146" source="n66" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e147" source="n16" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e148" source="n68" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e149" source="n6" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e150" source="n29" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e151" source="n23" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e152" source="n40" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e153" source="n49" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e154" source="n41" target="n89">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e155" source="n50" target="n89">
+    <edge id="e128" source="n44" target="n89">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2410,16 +2194,16 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/>
+          <y:Geometry height="34.08" width="64.07499999999999" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
           <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uD_1_toA
-(23)</y:NodeLabel>
+          <y:NodeLabel textColor="#cb4b16">uC_name
+(19)</y:NodeLabel>
           <y:Shape type="hexagon"/>
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e156" source="n90" target="n57">
+    <edge id="e129" source="n90" target="n50">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -2427,7 +2211,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e157" source="n52" target="n90">
+    <edge id="e130" source="n43" target="n90">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2435,7 +2219,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e158" source="n53" target="n90">
+    <edge id="e131" source="n46" target="n90">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2443,23 +2227,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e159" source="n39" target="n90">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e160" source="n35" target="n90">
-      <data key="d9">
-        <y:PolyLineEdge>
-          <y:LineStyle color="#859900" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
-    <edge id="e161" source="n54" target="n90">
+    <edge id="e132" source="n44" target="n90">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2471,16 +2239,16 @@
       <data key="d5"/>
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="34.08" width="76.88999999999999" x="0.0" y="0.0"/>
+          <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/>
           <y:Fill color="#eee8d5" transparent="false"/>
           <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
-          <y:NodeLabel textColor="#cb4b16">uD_1_refsB
-(21)</y:NodeLabel>
+          <y:NodeLabel textColor="#cb4b16">uD_0_toA
+(12)</y:NodeLabel>
           <y:Shape type="hexagon"/>
         </y:ShapeNode>
       </data>
     </node>
-    <edge id="e162" source="n91" target="n59">
+    <edge id="e133" source="n91" target="n57">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="line" width="1.0"/>
@@ -2488,7 +2256,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e163" source="n91" target="n42">
+    <edge id="e134" source="n91" target="n20">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
@@ -2496,7 +2264,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e164" source="n52" target="n91">
+    <edge id="e135" source="n52" target="n91">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2504,7 +2272,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e165" source="n53" target="n91">
+    <edge id="e136" source="n53" target="n91">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2512,7 +2280,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e166" source="n54" target="n91">
+    <edge id="e137" source="n48" target="n91">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2520,7 +2288,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e167" source="n55" target="n91">
+    <edge id="e138" source="n44" target="n91">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2528,7 +2296,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e168" source="n63" target="n91">
+    <edge id="e139" source="n54" target="n91">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2536,7 +2304,36 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e169" source="n65" target="n91">
+    <node id="n92">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="78.05499999999999" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#cb4b16">uD_0_refsC
+(24)</y:NodeLabel>
+          <y:Shape type="hexagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e140" source="n92" target="n58">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e141" source="n92" target="n51">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e142" source="n52" target="n92">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2544,7 +2341,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e170" source="n66" target="n91">
+    <edge id="e143" source="n53" target="n92">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2552,7 +2349,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e171" source="n16" target="n91">
+    <edge id="e144" source="n55" target="n92">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2560,7 +2357,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e172" source="n68" target="n91">
+    <edge id="e145" source="n67" target="n92">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2568,7 +2365,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e173" source="n6" target="n91">
+    <edge id="e146" source="n54" target="n92">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2576,7 +2373,28 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e174" source="n29" target="n91">
+    <node id="n93">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="62.91" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#cb4b16">uD_1_toA
+(25)</y:NodeLabel>
+          <y:Shape type="hexagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e147" source="n93" target="n57">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e148" source="n52" target="n93">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2584,7 +2402,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e175" source="n23" target="n91">
+    <edge id="e149" source="n53" target="n93">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2592,7 +2410,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e176" source="n40" target="n91">
+    <edge id="e150" source="n39" target="n93">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2600,7 +2418,7 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e177" source="n49" target="n91">
+    <edge id="e151" source="n35" target="n93">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
@@ -2608,7 +2426,262 @@
         </y:PolyLineEdge>
       </data>
     </edge>
-    <edge id="e178" source="n41" target="n91">
+    <edge id="e152" source="n54" target="n93">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n94">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="76.88999999999999" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#cb4b16">uD_1_refsB
+(23)</y:NodeLabel>
+          <y:Shape type="hexagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e153" source="n94" target="n59">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e154" source="n94" target="n42">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="dashed" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e155" source="n52" target="n94">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e156" source="n53" target="n94">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e157" source="n55" target="n94">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e158" source="n67" target="n94">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e159" source="n54" target="n94">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n95">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="138.635" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#cb4b16">uPathElementCS_ast
+(21)</y:NodeLabel>
+          <y:Shape type="hexagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e160" source="n95" target="n63">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e161" source="n62" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e162" source="n63" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e163" source="n1" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e164" source="n64" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e165" source="n68" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e166" source="n70" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e167" source="n71" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e168" source="n16" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e169" source="n65" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e170" source="n6" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e171" source="n29" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e172" source="n23" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e173" source="n40" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e174" source="n49" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e175" source="n41" target="n95">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <node id="n96">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="34.08" width="124.655" x="0.0" y="0.0"/>
+          <y:Fill color="#eee8d5" transparent="false"/>
+          <y:BorderStyle color="#cb4b16" type="line" width="1.0"/>
+          <y:NodeLabel textColor="#cb4b16">uPathNameCS_ast
+(22)</y:NodeLabel>
+          <y:Shape type="hexagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e176" source="n96" target="n67">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#657b83" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e177" source="n66" target="n96">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e178" source="n63" target="n96">
+      <data key="d9">
+        <y:PolyLineEdge>
+          <y:LineStyle color="#859900" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e179" source="n68" target="n96">
       <data key="d9">
         <y:PolyLineEdge>
           <y:LineStyle color="#859900" type="line" width="1.0"/>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml
index 3e1c674..d105ec0 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_complete.graphml
@@ -107,6 +107,12 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="PathElementCS">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="PathNameCS">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>PathNameCS</y:NodeLabel>

@@ -119,12 +125,6 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="PathElementCS">

-      <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>PathElementCS</y:NodeLabel>

-          <y:Shape type="rectangle"/>

-        </y:ShapeNode></graphml:data>

-    </graphml:node>

     <graphml:node id="SElement::ast">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>SElement::ast</y:NodeLabel>

@@ -395,6 +395,30 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="PathElementCS::ast">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::ast</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathElementCS::pathName">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::pathName</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathElementCS::name">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::name</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathNameCS::ast">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathNameCS::ast</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="PathNameCS::path">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>PathNameCS::path</y:NodeLabel>

@@ -413,12 +437,6 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="PathElementCS::name">

-      <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>PathElementCS::name</y:NodeLabel>

-          <y:Shape type="rectangle"/>

-        </y:ShapeNode></graphml:data>

-    </graphml:node>

     <graphml:node id="cSRoot_2_TRoot (1)">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>cSRoot_2_TRoot (1)</y:NodeLabel>

@@ -539,21 +557,33 @@
           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_0_refsC (22)">

+    <graphml:node id="uD_0_refsC (24)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_0_refsC (22)</y:NodeLabel>

+          <y:NodeLabel>uD_0_refsC (24)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_1_toA (23)">

+    <graphml:node id="uD_1_toA (25)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_1_toA (23)</y:NodeLabel>

+          <y:NodeLabel>uD_1_toA (25)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_1_refsB (21)">

+    <graphml:node id="uD_1_refsB (23)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_1_refsB (21)</y:NodeLabel>

+          <y:NodeLabel>uD_1_refsB (23)</y:NodeLabel>

+          <y:Shape type="ellipse"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="uPathElementCS_ast (21)">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>uPathElementCS_ast (21)</y:NodeLabel>

+          <y:Shape type="ellipse"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="uPathNameCS_ast (22)">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>uPathNameCS_ast (22)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

@@ -641,13 +671,13 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

-    <graphml:edge source="PathNameCS" target="SElement">

+    <graphml:edge source="PathElementCS" target="SElement">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

-    <graphml:edge source="PathElementCS" target="SElement">

+    <graphml:edge source="PathNameCS" target="SElement">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

           <y:Arrows source="none" target="standard"/>

@@ -815,6 +845,18 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="PathElementCS::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="PathNameCS::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="SRoot" target="cSRoot_2_TRoot (1)"/>

     <graphml:edge source="cSRoot_2_TRoot (1)" target="TRoot"/>

     <graphml:edge source="cSRoot_2_TRoot (1)" target="SRoot::ast"/>

@@ -919,46 +961,45 @@
     <graphml:edge source="Z::ast" target="uD_0_toA (12)"/>

     <graphml:edge source="uD_0_toA (12)" target="D::toA"/>

     <graphml:edge source="uD_0_toA (12)" target="A::D"/>

-    <graphml:edge source="Z" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::toY" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::ast" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::refers" target="uD_0_refsC (22)"/>

-    <graphml:edge source="PathNameCS::path" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Environment::parentEnv" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Environment::namedElements" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Namespace::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="PathElementCS::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="TRoot::ownedA" target="uD_0_refsC (22)"/>

-    <graphml:edge source="A1::ownsB" target="uD_0_refsC (22)"/>

-    <graphml:edge source="A2::ownsC" target="uD_0_refsC (22)"/>

-    <graphml:edge source="B::ownsD" target="uD_0_refsC (22)"/>

-    <graphml:edge source="C::ownsD" target="uD_0_refsC (22)"/>

-    <graphml:edge source="B::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="C::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="uD_0_refsC (22)" target="D::refsC"/>

-    <graphml:edge source="uD_0_refsC (22)" target="C::D"/>

-    <graphml:edge source="Z" target="uD_1_toA (23)"/>

-    <graphml:edge source="Z::toY" target="uD_1_toA (23)"/>

-    <graphml:edge source="B::toA1" target="uD_1_toA (23)"/>

-    <graphml:edge source="Y1::ast" target="uD_1_toA (23)"/>

-    <graphml:edge source="Z::ast" target="uD_1_toA (23)"/>

-    <graphml:edge source="uD_1_toA (23)" target="D::toA"/>

-    <graphml:edge source="Z" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::toY" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::ast" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::refers" target="uD_1_refsB (21)"/>

-    <graphml:edge source="PathNameCS::path" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Environment::parentEnv" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Environment::namedElements" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Namespace::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="PathElementCS::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="TRoot::ownedA" target="uD_1_refsB (21)"/>

-    <graphml:edge source="A1::ownsB" target="uD_1_refsB (21)"/>

-    <graphml:edge source="A2::ownsC" target="uD_1_refsB (21)"/>

-    <graphml:edge source="B::ownsD" target="uD_1_refsB (21)"/>

-    <graphml:edge source="C::ownsD" target="uD_1_refsB (21)"/>

-    <graphml:edge source="B::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="uD_1_refsB (21)" target="D::refsB"/>

-    <graphml:edge source="uD_1_refsB (21)" target="B::D"/>

+    <graphml:edge source="Z" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::toY" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::refers" target="uD_0_refsC (24)"/>

+    <graphml:edge source="PathNameCS::ast" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::ast" target="uD_0_refsC (24)"/>

+    <graphml:edge source="uD_0_refsC (24)" target="D::refsC"/>

+    <graphml:edge source="uD_0_refsC (24)" target="C::D"/>

+    <graphml:edge source="Z" target="uD_1_toA (25)"/>

+    <graphml:edge source="Z::toY" target="uD_1_toA (25)"/>

+    <graphml:edge source="B::toA1" target="uD_1_toA (25)"/>

+    <graphml:edge source="Y1::ast" target="uD_1_toA (25)"/>

+    <graphml:edge source="Z::ast" target="uD_1_toA (25)"/>

+    <graphml:edge source="uD_1_toA (25)" target="D::toA"/>

+    <graphml:edge source="Z" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::toY" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::refers" target="uD_1_refsB (23)"/>

+    <graphml:edge source="PathNameCS::ast" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::ast" target="uD_1_refsB (23)"/>

+    <graphml:edge source="uD_1_refsB (23)" target="D::refsB"/>

+    <graphml:edge source="uD_1_refsB (23)" target="B::D"/>

+    <graphml:edge source="PathElementCS" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::ast" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="SElement::ast" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::pathName" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathNameCS::path" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Environment::parentEnv" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Environment::namedElements" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Namespace::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="TRoot::ownedA" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="A1::ownsB" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="A2::ownsC" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="B::ownsD" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="C::ownsD" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="B::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="uPathElementCS_ast (21)" target="PathElementCS::ast"/>

+    <graphml:edge source="PathNameCS" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="PathElementCS::ast" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="PathNameCS::path" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="uPathNameCS_ast (22)" target="PathNameCS::ast"/>

   </graphml:graph>

 </graphml:graphml>
\ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml
index 332dd80..3007ac1 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/debug/Source2TargetSchedule_pruned.graphml
@@ -5,6 +5,12 @@
   <graphml:key for="node" id="d6" yfiles.type="nodegraphics"/>

   <graphml:key for="edge" id="d9" yfiles.type="edgegraphics"/>

   <graphml:graph edgedefault="directed" id="Graph">

+    <graphml:node id="SElement">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>SElement</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="SRoot">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>SRoot</y:NodeLabel>

@@ -53,6 +59,12 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="Y">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>Y</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="Y1">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>Y1</y:NodeLabel>

@@ -89,6 +101,12 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="PathElementCS">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="PathNameCS">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>PathNameCS</y:NodeLabel>

@@ -101,9 +119,9 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="PathElementCS">

+    <graphml:node id="SElement::ast">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>PathElementCS</y:NodeLabel>

+          <y:NodeLabel>SElement::ast</y:NodeLabel>

           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

@@ -215,6 +233,12 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="Y::ast">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>Y::ast</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="Y1::ast">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>Y1::ast</y:NodeLabel>

@@ -347,6 +371,30 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="PathElementCS::ast">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::ast</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathElementCS::pathName">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::pathName</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathElementCS::name">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathElementCS::name</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="PathNameCS::ast">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>PathNameCS::ast</y:NodeLabel>

+          <y:Shape type="rectangle"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

     <graphml:node id="PathNameCS::path">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>PathNameCS::path</y:NodeLabel>

@@ -365,12 +413,6 @@
           <y:Shape type="rectangle"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="PathElementCS::name">

-      <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>PathElementCS::name</y:NodeLabel>

-          <y:Shape type="rectangle"/>

-        </y:ShapeNode></graphml:data>

-    </graphml:node>

     <graphml:node id="cSRoot_2_TRoot (1)">

       <graphml:data key="d6"><y:ShapeNode>

           <y:NodeLabel>cSRoot_2_TRoot (1)</y:NodeLabel>

@@ -491,24 +533,48 @@
           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_0_refsC (22)">

+    <graphml:node id="uD_0_refsC (24)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_0_refsC (22)</y:NodeLabel>

+          <y:NodeLabel>uD_0_refsC (24)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_1_toA (23)">

+    <graphml:node id="uD_1_toA (25)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_1_toA (23)</y:NodeLabel>

+          <y:NodeLabel>uD_1_toA (25)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

-    <graphml:node id="uD_1_refsB (21)">

+    <graphml:node id="uD_1_refsB (23)">

       <graphml:data key="d6"><y:ShapeNode>

-          <y:NodeLabel>uD_1_refsB (21)</y:NodeLabel>

+          <y:NodeLabel>uD_1_refsB (23)</y:NodeLabel>

           <y:Shape type="ellipse"/>

         </y:ShapeNode></graphml:data>

     </graphml:node>

+    <graphml:node id="uPathElementCS_ast (21)">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>uPathElementCS_ast (21)</y:NodeLabel>

+          <y:Shape type="ellipse"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:node id="uPathNameCS_ast (22)">

+      <graphml:data key="d6"><y:ShapeNode>

+          <y:NodeLabel>uPathNameCS_ast (22)</y:NodeLabel>

+          <y:Shape type="ellipse"/>

+        </y:ShapeNode></graphml:data>

+    </graphml:node>

+    <graphml:edge source="SRoot" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="X" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="A" target="Namespace">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

@@ -533,24 +599,72 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Y" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="Y1" target="Y">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="B" target="Namespace">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Y2" target="Y">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="C" target="Namespace">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Z" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="PathElementCS" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="PathNameCS" target="SElement">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="SRoot::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="TRoot::ownedA" target="A::TRoot">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dashed"/>

           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="X::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="A::name" target="Namespace::name">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dotted"/>

@@ -599,6 +713,18 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Y::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="Y1::ast" target="Y::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="B::ownsD" target="D::toB">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dashed"/>

@@ -611,6 +737,12 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Y2::ast" target="Y::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="C::ownsD" target="D::toC">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dashed"/>

@@ -623,6 +755,12 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="Z::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="D::toA" target="A::D">

       <graphml:data key="d9"><y:PolyLineEdge>

           <y:LineStyle type="dashed"/>

@@ -641,6 +779,18 @@
           <y:Arrows source="none" target="standard"/>

         </y:PolyLineEdge></graphml:data>

     </graphml:edge>

+    <graphml:edge source="PathElementCS::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

+    <graphml:edge source="PathNameCS::ast" target="SElement::ast">

+      <graphml:data key="d9"><y:PolyLineEdge>

+          <y:LineStyle type="dotted"/>

+          <y:Arrows source="none" target="standard"/>

+        </y:PolyLineEdge></graphml:data>

+    </graphml:edge>

     <graphml:edge source="SRoot" target="cSRoot_2_TRoot (1)"/>

     <graphml:edge source="cSRoot_2_TRoot (1)" target="TRoot"/>

     <graphml:edge source="cSRoot_2_TRoot (1)" target="SRoot::ast"/>

@@ -745,46 +895,45 @@
     <graphml:edge source="Z::ast" target="uD_0_toA (12)"/>

     <graphml:edge source="uD_0_toA (12)" target="D::toA"/>

     <graphml:edge source="uD_0_toA (12)" target="A::D"/>

-    <graphml:edge source="Z" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::toY" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::ast" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Z::refers" target="uD_0_refsC (22)"/>

-    <graphml:edge source="PathNameCS::path" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Environment::parentEnv" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Environment::namedElements" target="uD_0_refsC (22)"/>

-    <graphml:edge source="Namespace::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="PathElementCS::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="TRoot::ownedA" target="uD_0_refsC (22)"/>

-    <graphml:edge source="A1::ownsB" target="uD_0_refsC (22)"/>

-    <graphml:edge source="A2::ownsC" target="uD_0_refsC (22)"/>

-    <graphml:edge source="B::ownsD" target="uD_0_refsC (22)"/>

-    <graphml:edge source="C::ownsD" target="uD_0_refsC (22)"/>

-    <graphml:edge source="B::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="C::name" target="uD_0_refsC (22)"/>

-    <graphml:edge source="uD_0_refsC (22)" target="D::refsC"/>

-    <graphml:edge source="uD_0_refsC (22)" target="C::D"/>

-    <graphml:edge source="Z" target="uD_1_toA (23)"/>

-    <graphml:edge source="Z::toY" target="uD_1_toA (23)"/>

-    <graphml:edge source="B::toA1" target="uD_1_toA (23)"/>

-    <graphml:edge source="Y1::ast" target="uD_1_toA (23)"/>

-    <graphml:edge source="Z::ast" target="uD_1_toA (23)"/>

-    <graphml:edge source="uD_1_toA (23)" target="D::toA"/>

-    <graphml:edge source="Z" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::toY" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::ast" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Z::refers" target="uD_1_refsB (21)"/>

-    <graphml:edge source="PathNameCS::path" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Environment::parentEnv" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Environment::namedElements" target="uD_1_refsB (21)"/>

-    <graphml:edge source="Namespace::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="PathElementCS::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="TRoot::ownedA" target="uD_1_refsB (21)"/>

-    <graphml:edge source="A1::ownsB" target="uD_1_refsB (21)"/>

-    <graphml:edge source="A2::ownsC" target="uD_1_refsB (21)"/>

-    <graphml:edge source="B::ownsD" target="uD_1_refsB (21)"/>

-    <graphml:edge source="C::ownsD" target="uD_1_refsB (21)"/>

-    <graphml:edge source="B::name" target="uD_1_refsB (21)"/>

-    <graphml:edge source="uD_1_refsB (21)" target="D::refsB"/>

-    <graphml:edge source="uD_1_refsB (21)" target="B::D"/>

+    <graphml:edge source="Z" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::toY" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::refers" target="uD_0_refsC (24)"/>

+    <graphml:edge source="PathNameCS::ast" target="uD_0_refsC (24)"/>

+    <graphml:edge source="Z::ast" target="uD_0_refsC (24)"/>

+    <graphml:edge source="uD_0_refsC (24)" target="D::refsC"/>

+    <graphml:edge source="uD_0_refsC (24)" target="C::D"/>

+    <graphml:edge source="Z" target="uD_1_toA (25)"/>

+    <graphml:edge source="Z::toY" target="uD_1_toA (25)"/>

+    <graphml:edge source="B::toA1" target="uD_1_toA (25)"/>

+    <graphml:edge source="Y1::ast" target="uD_1_toA (25)"/>

+    <graphml:edge source="Z::ast" target="uD_1_toA (25)"/>

+    <graphml:edge source="uD_1_toA (25)" target="D::toA"/>

+    <graphml:edge source="Z" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::toY" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::refers" target="uD_1_refsB (23)"/>

+    <graphml:edge source="PathNameCS::ast" target="uD_1_refsB (23)"/>

+    <graphml:edge source="Z::ast" target="uD_1_refsB (23)"/>

+    <graphml:edge source="uD_1_refsB (23)" target="D::refsB"/>

+    <graphml:edge source="uD_1_refsB (23)" target="B::D"/>

+    <graphml:edge source="PathElementCS" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::ast" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="SElement::ast" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::pathName" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathNameCS::path" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Environment::parentEnv" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Environment::namedElements" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="Namespace::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="PathElementCS::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="TRoot::ownedA" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="A1::ownsB" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="A2::ownsC" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="B::ownsD" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="C::ownsD" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="B::name" target="uPathElementCS_ast (21)"/>

+    <graphml:edge source="uPathElementCS_ast (21)" target="PathElementCS::ast"/>

+    <graphml:edge source="PathNameCS" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="PathElementCS::ast" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="PathNameCS::path" target="uPathNameCS_ast (22)"/>

+    <graphml:edge source="uPathNameCS_ast (22)" target="PathNameCS::ast"/>

   </graphml:graph>

 </graphml:graphml>
\ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi
index 88c063c..401f73a 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model2_output_Interpreted.xmi
@@ -22,7 +22,7 @@
       <ownsD toA="//@ownedA.2"/>
     </ownsC>
     <ownsC name="Y3-c">
-      <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.0"/>
+      <ownsD toA="//@ownedA.2"/>
     </ownsC>
   </ownedA>
 </target:TRoot>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi
index 504be78..bf9abab 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/samples/model3_output_CG.xmi
@@ -1,28 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<target:TRoot xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:target="http://cs2as/tests/example1/targetMM/1.0"
-    xsi:schemaLocation="http://cs2as/tests/example1/targetMM/1.0 java://example1.target.TargetPackage">
-  <ownedA xsi:type="target:A1" name="X1">
-    <ownsB name="Y1-a">
-      <ownsD toA="//@ownedA.0"/>
-    </ownsB>
-    <ownsB name="Y1-b">
-      <ownsD toA="//@ownedA.0" refsB="//@ownedA.0/@ownsB.0"/>
-    </ownsB>
-  </ownedA>
-  <ownedA xsi:type="target:A2" name="X2">
-    <ownsC name="Y2-a">
-      <ownsD toA="//@ownedA.1" refsC="//@ownedA.2/@ownsC.2"/>
-    </ownsC>
-  </ownedA>
-  <ownedA xsi:type="target:A3" name="X3">
-    <ownsC name="Y3-a">
-      <ownsD toA="//@ownedA.2"/>
-    </ownsC>
-    <ownsC name="Y3-b">
-      <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.2"/>
-    </ownsC>
-    <ownsC name="Y3-c">
-      <ownsD toA="//@ownedA.2" refsC="//@ownedA.2/@ownsC.0"/>
-    </ownsC>
-  </ownedA>
-</target:TRoot>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java
index 1f5b337..09ca6b8 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtias/Source2Target_qvtp_qvtias.java
@@ -11,6 +11,7 @@
 
 import example1.source.PathElementCS;
 import example1.source.PathNameCS;
+import example1.source.SElement;
 import example1.source.SRoot;
 import example1.source.SourcePackage;
 import example1.source.X;
@@ -46,10 +47,10 @@
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TypeId;
 import org.eclipse.ocl.pivot.library.classifier.ClassifierAllInstancesOperation;
+import org.eclipse.ocl.pivot.library.classifier.ClassifierOclContainerOperation;
 import org.eclipse.ocl.pivot.library.collection.CollectionSizeOperation;
-import org.eclipse.ocl.pivot.library.collection.OrderedCollectionFirstOperation;
-import org.eclipse.ocl.pivot.library.collection.OrderedCollectionLastOperation;
-import org.eclipse.ocl.pivot.library.collection.OrderedSetSubOrderedSetOperation;
+import org.eclipse.ocl.pivot.library.collection.OrderedCollectionAtOperation;
+import org.eclipse.ocl.pivot.library.collection.OrderedCollectionIndexOfOperation;
 import org.eclipse.ocl.pivot.library.logical.BooleanNotOperation;
 import org.eclipse.ocl.pivot.library.numeric.NumericMinusOperation;
 import org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation;
@@ -91,9 +92,12 @@
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = PACKid_$metamodel$.getClassId("Class", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_D = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("D", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_EObject = PACKid_http_c_s_s_www_eclipse_org_s_emf_s_2002_s_Ecore.getClassId("EObject", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_NamedElement = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("NamedElement", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Namespace = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("Namespace", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_OclElement = PACKid_$metamodel$.getClassId("OclElement", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PathElementCS = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("PathElementCS", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PathNameCS = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("PathNameCS", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_SElement = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("SElement", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_SRoot = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_sourceMM_s_1_0.getClassId("SRoot", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_TRoot = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("TRoot", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Visitable = PACKid_http_c_s_s_cs2as_s_tests_s_example1_s_targetMM_s_1_0.getClassId("Visitable", 0);
@@ -111,6 +115,8 @@
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_C = TypeId.SEQUENCE.getSpecializedId(CLSSid_C);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_Y1 = TypeId.SEQUENCE.getSpecializedId(CLSSid_Y1);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SEQ_CLSSid_Y2 = TypeId.SEQUENCE.getSpecializedId(CLSSid_Y2);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_PathElementCS = TypeId.SET.getSpecializedId(CLSSid_PathElementCS);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_PathNameCS = TypeId.SET.getSpecializedId(CLSSid_PathNameCS);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_SRoot = TypeId.SET.getSpecializedId(CLSSid_SRoot);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_X = TypeId.SET.getSpecializedId(CLSSid_X);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Y1 = TypeId.SET.getSpecializedId(CLSSid_Y1);
@@ -121,11 +127,13 @@
      * Array of the ClassIds of each class for which allInstances() may be invoked. Array index is the ClassIndex.
      */
     private static final /*@NonNull*/ ClassId[] classIndex2classId = new ClassId[]{
-        CLSSid_SRoot,                   // 0 => SRoot
-        CLSSid_X,                       // 1 => X
-        CLSSid_Y1,                      // 2 => Y1
-        CLSSid_Y2,                      // 3 => Y2
-        CLSSid_Z                        // 4 => Z
+        CLSSid_PathElementCS,           // 0 => PathElementCS
+        CLSSid_PathNameCS,              // 1 => PathNameCS
+        CLSSid_SRoot,                   // 2 => SRoot
+        CLSSid_X,                       // 3 => X
+        CLSSid_Y1,                      // 4 => Y1
+        CLSSid_Y2,                      // 5 => Y2
+        CLSSid_Z                        // 6 => Z
     };
     
     /*
@@ -135,11 +143,13 @@
      * instance of the derived classId contributes to derived and inherited ClassIndexes.
      */
     private final static /*@NonNull*/ int[][] classIndex2allClassIndexes = new int[][] {
-        {0},                    // 0 : SRoot -> {SRoot}
-        {1},                    // 1 : X -> {X}
-        {2},                    // 2 : Y1 -> {Y1}
-        {3},                    // 3 : Y2 -> {Y2}
-        {4}                     // 4 : Z -> {Z}
+        {0},                    // 0 : PathElementCS -> {PathElementCS}
+        {1},                    // 1 : PathNameCS -> {PathNameCS}
+        {2},                    // 2 : SRoot -> {SRoot}
+        {3},                    // 3 : X -> {X}
+        {4},                    // 4 : Y1 -> {Y1}
+        {5},                    // 5 : Y2 -> {Y2}
+        {6}                     // 6 : Z -> {Z}
     };
     
     
@@ -154,74 +164,6 @@
     }
     
     /**
-     * target::Visitable::lookupNamespace(pathSeq : OrderedSet(source::PathElementCS)) : target::Namespace[?]
-     * 
-     * 
-     * if pathSeq->size() = 1
-     * then
-     *   _lookupNamespace(pathSeq->first(), false)
-     * else
-     *   lookupNamespace(
-     *     pathSeq->subOrderedSet(1, pathSeq->size() - 1))
-     *   ?._lookupNamespace(pathSeq->last(), true)
-     * endif
-     */
-    public /*@Nullable*/ /*@NonInvalid*/ Namespace lookupNamespace(final /*@NonNull*/ /*@NonInvalid*/ Visitable self_0, final /*@NonNull*/ /*@NonInvalid*/ List<PathElementCS> pathSeq) {
-        final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
-        final /*@NonNull*/ /*@NonInvalid*/ OrderedSetValue BOXED_pathSeq_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq);
-        final /*@NonNull*/ /*@NonInvalid*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0);
-        final /*@NonInvalid*/ boolean eq = size.equals(INT_1);
-        /*@Nullable*/ /*@Thrown*/ Namespace symbol_1;
-        if (eq) {
-            final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0);
-            LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE);
-            TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv);
-            EList<NamedElement> _lookupResult = self_0.accept(_lookupVisitor).getNamedElements();
-            Namespace _lookupNamespace = null;
-            if (_lookupResult.size() == 1) {
-                _lookupNamespace = (Namespace)_lookupResult.get(0);
-            } else {
-                handleLookupError(pathSeq,first);
-            };
-            symbol_1 = _lookupNamespace;
-        }
-        else {
-            final /*@NonNull*/ /*@NonInvalid*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1);
-            final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0, INT_1, diff);
-            final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class);
-            assert UNBOXED_subOrderedSet != null;
-            final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_0, UNBOXED_subOrderedSet);
-            /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace;
-            try {
-                CAUGHT_lookupNamespace = lookupNamespace;
-            }
-            catch (Exception e) {
-                CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e);
-            }
-            final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null;
-            /*@Nullable*/ /*@Thrown*/ Namespace safe__lookupNamespace_source;
-            if (symbol_0 == Boolean.TRUE) {
-                safe__lookupNamespace_source = null;
-            }
-            else {
-                final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0);
-                LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE);
-                TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0);
-                EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements();
-                Namespace _lookupNamespace_0 = null;
-                if (_lookupResult_0.size() == 1) {
-                    _lookupNamespace_0 = (Namespace)_lookupResult_0.get(0);
-                } else {
-                    handleLookupError(pathSeq,last);
-                };
-                safe__lookupNamespace_source = _lookupNamespace_0;
-            }
-            symbol_1 = safe__lookupNamespace_source;
-        }
-        return symbol_1;
-    }
-    
-    /**
      * 
      * map cSRoot_2_TRoot in Source2Target_qvtp_qvtias {
      * leftCS (sRoot : source::SRoot[1];
@@ -1114,8 +1056,12 @@
      *  |
      * _0 := z.ast.oclAsType(target::D)
      *   ;
-     * _1 := ast.oclAsType(target::D)
-     *   .lookupC(z);
+     * _1 := if refers = null
+     *   then null
+     *   else
+     *     refers.ast.oclAsType(target::NamedElement)
+     *     .oclAsType(target::C)
+     *   endif;
      * _0.refsC := _1;
      * }
      * 
@@ -1131,75 +1077,28 @@
             return false;
         }
         final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_D_0 = idResolver.getClass(CLSSid_D, null);
-        final /*@Nullable*/ /*@Thrown*/ EObject ast = z_2.getAst();
-        // variable assignments
-        final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
-        final /*@NonNull*/ /*@Thrown*/ D self_1 = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
         final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_2.getRefers();
+        // variable assignments
+        final /*@Nullable*/ /*@Thrown*/ EObject ast = z_2.getAst();
+        final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
         final /*@Thrown*/ boolean eq = refers == null;
-        /*@Nullable*/ /*@Thrown*/ C symbol_2;
+        /*@Nullable*/ /*@Thrown*/ C symbol_0;
         if (eq) {
-            symbol_2 = null;
+            symbol_0 = null;
         }
         else {
+            final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_C_0 = idResolver.getClass(CLSSid_C, null);
+            final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null);
             if (refers == null) {
-                throwNull(z_2, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'");
+                throwNull(z_2, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'");
             }
-            final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> pathSeq_0 = refers.getPath();
-            final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_pathSeq_0_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq_0);
-            final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-            final /*@Thrown*/ boolean eq_0 = size.equals(INT_1);
-            /*@Nullable*/ /*@Thrown*/ C symbol_1;
-            if (eq_0) {
-                final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-                LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE);
-                TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv);
-                EList<NamedElement> _lookupResult = self_1.accept(_lookupVisitor).getNamedElements();
-                C _lookupC = null;
-                if (_lookupResult.size() == 1) {
-                    _lookupC = (C)_lookupResult.get(0);
-                } else {
-                    handleLookupError(z_2,first);
-                };
-                symbol_1 = _lookupC;
-            }
-            else {
-                final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1);
-                final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0, INT_1, diff);
-                final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class);
-                assert UNBOXED_subOrderedSet != null;
-                final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_1, UNBOXED_subOrderedSet);
-                /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace;
-                try {
-                    CAUGHT_lookupNamespace = lookupNamespace;
-                }
-                catch (Exception e) {
-                    CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e);
-                }
-                final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null;
-                /*@Nullable*/ /*@Thrown*/ C safe__lookupC_source;
-                if (symbol_0 == Boolean.TRUE) {
-                    safe__lookupC_source = null;
-                }
-                else {
-                    final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-                    LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE);
-                    TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0);
-                    EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements();
-                    C _lookupC_0 = null;
-                    if (_lookupResult_0.size() == 1) {
-                        _lookupC_0 = (C)_lookupResult_0.get(0);
-                    } else {
-                        handleLookupError(z_2,last);
-                    };
-                    safe__lookupC_source = _lookupC_0;
-                }
-                symbol_1 = safe__lookupC_source;
-            }
-            symbol_2 = symbol_1;
+            final /*@Nullable*/ /*@Thrown*/ EObject ast_0 = refers.getAst();
+            final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_0 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_0, TYP_target_c_c_NamedElement_0));
+            final /*@NonNull*/ /*@Thrown*/ C oclAsType_1 = ClassUtil.nonNullState((C)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclAsType_0, TYP_target_c_c_C_0));
+            symbol_0 = oclAsType_1;
         }
         // property assignments
-        oclAsType.setRefsC(symbol_2);
+        oclAsType.setRefsC(symbol_0);
         return true;
     }
     
@@ -1268,8 +1167,12 @@
      *  |
      * _0 := z.ast.oclAsType(target::D)
      *   ;
-     * _1 := ast.oclAsType(target::D)
-     *   .lookupB(z);
+     * _1 := if refers = null
+     *   then null
+     *   else
+     *     refers.ast.oclAsType(target::NamedElement)
+     *     .oclAsType(target::B)
+     *   endif;
      * _0.refsB := _1;
      * }
      * 
@@ -1284,75 +1187,214 @@
             return false;
         }
         final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_D_0 = idResolver.getClass(CLSSid_D, null);
-        final /*@Nullable*/ /*@Thrown*/ EObject ast = z_4.getAst();
-        // variable assignments
-        final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
-        final /*@NonNull*/ /*@Thrown*/ D self_1 = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
         final /*@Nullable*/ /*@Thrown*/ PathNameCS refers = z_4.getRefers();
+        // variable assignments
+        final /*@Nullable*/ /*@Thrown*/ EObject ast = z_4.getAst();
+        final /*@NonNull*/ /*@Thrown*/ D oclAsType = ClassUtil.nonNullState((D)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_D_0));
         final /*@Thrown*/ boolean eq = refers == null;
-        /*@Nullable*/ /*@Thrown*/ B symbol_2;
+        /*@Nullable*/ /*@Thrown*/ B symbol_0;
         if (eq) {
-            symbol_2 = null;
+            symbol_0 = null;
         }
         else {
+            final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_B_0 = idResolver.getClass(CLSSid_B, null);
+            final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null);
             if (refers == null) {
-                throwNull(z_4, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'");
+                throwNull(z_4, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'");
             }
-            final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> pathSeq_0 = refers.getPath();
-            final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_pathSeq_0_0 = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, pathSeq_0);
-            final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-            final /*@Thrown*/ boolean eq_0 = size.equals(INT_1);
-            /*@Nullable*/ /*@Thrown*/ B symbol_1;
+            final /*@Nullable*/ /*@Thrown*/ EObject ast_0 = refers.getAst();
+            final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_0 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_0, TYP_target_c_c_NamedElement_0));
+            final /*@NonNull*/ /*@Thrown*/ B oclAsType_1 = ClassUtil.nonNullState((B)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclAsType_0, TYP_target_c_c_B_0));
+            symbol_0 = oclAsType_1;
+        }
+        // property assignments
+        oclAsType.setRefsB(symbol_0);
+        return true;
+    }
+    
+    /**
+     * 
+     * map uPathElementCS_ast in Source2Target_qvtp_qvtias {
+     * 
+     *   leftCS (pathElementCS : source::PathElementCS[1];
+     *  |)
+     * { |}
+     * rightAS ( |)
+     * { |}
+     * where ( |)
+     * {_0 : target::NamedElement[?];
+     *  |
+     * _0 := let path : OrderedSet(source::PathElementCS) = pathName.path;
+     * 
+     *   in
+     *     let
+     *       lookupContext : target::Visitable[?] = pathName.oclContainer()
+     *       .oclAsType(source::SElement)
+     *       .ast.oclAsType(target::Visitable);
+     * 
+     *     in
+     *       let first : source::PathElementCS[?] = path->at(1);
+     * 
+     *       in
+     *         let
+     *           last : source::PathElementCS[?] = path->at(path->size());
+     * 
+     *         in
+     *           if pathElementCS = first
+     *           then
+     *             if pathElementCS = last
+     *             then
+     *               lookupContext._lookupNamedElement(pathElementCS, false)
+     *             else
+     *               lookupContext._lookupNamespace(pathElementCS, false)
+     *             endif
+     *           else
+     *             let
+     *               prevPathElement : source::PathElementCS[?] = path->at(
+     *                 path->indexOf(pathElementCS) - 1);
+     * 
+     *             in
+     *               if pathElementCS = last
+     *               then
+     *                 prevPathElement.ast.oclAsType(target::NamedElement)
+     *                 ._lookupNamedElement(pathElementCS, true)
+     *               else
+     *                 prevPathElement.ast.oclAsType(target::NamedElement)
+     *                 ._lookupNamespace(pathElementCS, true)
+     *               endif
+     *           endif;
+     * pathElementCS.ast := _0;
+     * }
+     * 
+     */
+    protected boolean MAP_uPathElementCS_ast(final /*@NonNull*/ /*@NonInvalid*/ PathElementCS pathElementCS) throws ReflectiveOperationException {
+        // predicates
+        final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
+        final /*@Nullable*/ /*@Thrown*/ PathNameCS pathName = pathElementCS.getPathName();
+        // variable assignments
+        if (pathName == null) {
+            throwNull(pathElementCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::PathNameCS::path\'");
+        }
+        final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> path = pathName.getPath();
+        final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_SElement_0 = idResolver.getClass(CLSSid_SElement, null);
+        final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_Visitable_0 = idResolver.getClass(CLSSid_Visitable, null);
+        final /*@Nullable*/ /*@Thrown*/ Object oclContainer = ClassifierOclContainerOperation.INSTANCE.evaluate(executor, pathName);
+        final /*@NonNull*/ /*@Thrown*/ SElement oclAsType = ClassUtil.nonNullState((SElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, oclContainer, TYP_source_c_c_SElement_0));
+        final /*@Nullable*/ /*@Thrown*/ EObject ast = oclAsType.getAst();
+        final /*@NonNull*/ /*@Thrown*/ Visitable lookupContext = ClassUtil.nonNullState((Visitable)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_Visitable_0));
+        final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_path = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, path);
+        final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, INT_1);
+        final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_path);
+        final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, size);
+        final /*@Thrown*/ boolean eq = pathElementCS.equals(first);
+        /*@Nullable*/ /*@Thrown*/ NamedElement symbol_2;
+        if (eq) {
+            final /*@Thrown*/ boolean eq_0 = pathElementCS.equals(last);
+            /*@Nullable*/ /*@Thrown*/ NamedElement symbol_0;
             if (eq_0) {
-                final /*@Nullable*/ /*@Thrown*/ PathElementCS first = (PathElementCS)OrderedCollectionFirstOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-                LookupEnvironment _lookupEnv = new LookupEnvironment(executor,first, ValueUtil.FALSE_VALUE);
+                LookupEnvironment _lookupEnv = new LookupEnvironment(executor,pathElementCS, ValueUtil.FALSE_VALUE);
                 TargetLookupVisitor _lookupVisitor = new TargetLookupVisitor(_lookupEnv);
-                EList<NamedElement> _lookupResult = self_1.accept(_lookupVisitor).getNamedElements();
-                B _lookupB = null;
+                EList<NamedElement> _lookupResult = lookupContext.accept(_lookupVisitor).getNamedElements();
+                NamedElement _lookupNamedElement = null;
                 if (_lookupResult.size() == 1) {
-                    _lookupB = (B)_lookupResult.get(0);
+                    _lookupNamedElement = (NamedElement)_lookupResult.get(0);
                 } else {
-                    handleLookupError(z_4,first);
+                    handleLookupError(pathElementCS,pathElementCS);
                 };
-                symbol_1 = _lookupB;
+                symbol_0 = _lookupNamedElement;
             }
             else {
-                final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(size, INT_1);
-                final /*@NonNull*/ /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0, INT_1, diff);
-                final List<PathElementCS> UNBOXED_subOrderedSet = subOrderedSet.asEcoreObjects(idResolver, PathElementCS.class);
-                assert UNBOXED_subOrderedSet != null;
-                final /*@Nullable*/ /*@Thrown*/ Namespace lookupNamespace = this.lookupNamespace(self_1, UNBOXED_subOrderedSet);
-                /*@Nullable*/ /*@Caught*/ Object CAUGHT_lookupNamespace;
-                try {
-                    CAUGHT_lookupNamespace = lookupNamespace;
-                }
-                catch (Exception e) {
-                    CAUGHT_lookupNamespace = ValueUtil.createInvalidValue(e);
-                }
-                final /*@NonNull*/ /*@NonInvalid*/ Object symbol_0 = CAUGHT_lookupNamespace == null;
-                /*@Nullable*/ /*@Thrown*/ B safe__lookupB_source;
-                if (symbol_0 == Boolean.TRUE) {
-                    safe__lookupB_source = null;
-                }
-                else {
-                    final /*@Nullable*/ /*@Thrown*/ PathElementCS last = (PathElementCS)OrderedCollectionLastOperation.INSTANCE.evaluate(BOXED_pathSeq_0_0);
-                    LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,last, ValueUtil.TRUE_VALUE);
-                    TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0);
-                    EList<NamedElement> _lookupResult_0 = lookupNamespace.accept(_lookupVisitor_0).getNamedElements();
-                    B _lookupB_0 = null;
-                    if (_lookupResult_0.size() == 1) {
-                        _lookupB_0 = (B)_lookupResult_0.get(0);
-                    } else {
-                        handleLookupError(z_4,last);
-                    };
-                    safe__lookupB_source = _lookupB_0;
-                }
-                symbol_1 = safe__lookupB_source;
+                LookupEnvironment _lookupEnv_0 = new LookupEnvironment(executor,pathElementCS, ValueUtil.FALSE_VALUE);
+                TargetLookupVisitor _lookupVisitor_0 = new TargetLookupVisitor(_lookupEnv_0);
+                EList<NamedElement> _lookupResult_0 = lookupContext.accept(_lookupVisitor_0).getNamedElements();
+                Namespace _lookupNamespace = null;
+                if (_lookupResult_0.size() == 1) {
+                    _lookupNamespace = (Namespace)_lookupResult_0.get(0);
+                } else {
+                    handleLookupError(pathElementCS,pathElementCS);
+                };
+                symbol_0 = _lookupNamespace;
+            }
+            symbol_2 = symbol_0;
+        }
+        else {
+            final /*@NonNull*/ /*@Thrown*/ IntegerValue indexOf = OrderedCollectionIndexOfOperation.INSTANCE.evaluate(BOXED_path, pathElementCS);
+            final /*@NonNull*/ /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(indexOf, INT_1);
+            final /*@Nullable*/ /*@Thrown*/ PathElementCS prevPathElement = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, diff);
+            final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_1 = idResolver.getClass(CLSSid_NamedElement, null);
+            if (prevPathElement == null) {
+                throwNull(pathElementCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'");
+            }
+            final /*@Nullable*/ /*@Thrown*/ EObject ast_1 = prevPathElement.getAst();
+            final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType_1 = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast_1, TYP_target_c_c_NamedElement_1));
+            final /*@Thrown*/ boolean eq_1 = pathElementCS.equals(last);
+            /*@Nullable*/ /*@Thrown*/ NamedElement symbol_1;
+            if (eq_1) {
+                LookupEnvironment _lookupEnv_1 = new LookupEnvironment(executor,pathElementCS, ValueUtil.TRUE_VALUE);
+                TargetLookupVisitor _lookupVisitor_1 = new TargetLookupVisitor(_lookupEnv_1);
+                EList<NamedElement> _lookupResult_1 = oclAsType_1.accept(_lookupVisitor_1).getNamedElements();
+                NamedElement _lookupNamedElement_0 = null;
+                if (_lookupResult_1.size() == 1) {
+                    _lookupNamedElement_0 = (NamedElement)_lookupResult_1.get(0);
+                } else {
+                    handleLookupError(pathElementCS,pathElementCS);
+                };
+                symbol_1 = _lookupNamedElement_0;
+            }
+            else {
+                LookupEnvironment _lookupEnv_2 = new LookupEnvironment(executor,pathElementCS, ValueUtil.TRUE_VALUE);
+                TargetLookupVisitor _lookupVisitor_2 = new TargetLookupVisitor(_lookupEnv_2);
+                EList<NamedElement> _lookupResult_2 = oclAsType_1.accept(_lookupVisitor_2).getNamedElements();
+                Namespace _lookupNamespace_0 = null;
+                if (_lookupResult_2.size() == 1) {
+                    _lookupNamespace_0 = (Namespace)_lookupResult_2.get(0);
+                } else {
+                    handleLookupError(pathElementCS,pathElementCS);
+                };
+                symbol_1 = _lookupNamespace_0;
             }
             symbol_2 = symbol_1;
         }
         // property assignments
-        oclAsType.setRefsB(symbol_2);
+        pathElementCS.setAst(symbol_2);
+        return true;
+    }
+    
+    /**
+     * 
+     * map uPathNameCS_ast in Source2Target_qvtp_qvtias {
+     * 
+     *   leftCS (pathNameCS : source::PathNameCS[1];
+     *  |)
+     * { |}
+     * rightAS ( |)
+     * { |}
+     * where ( |)
+     * {_0 : target::NamedElement[1];
+     *  |
+     * _0 := path->at(
+     *     path->size())
+     *   .ast.oclAsType(target::NamedElement);
+     * pathNameCS.ast := _0;
+     * }
+     * 
+     */
+    protected boolean MAP_uPathNameCS_ast(final /*@NonNull*/ /*@NonInvalid*/ PathNameCS pathNameCS) throws ReflectiveOperationException {
+        // predicates
+        final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
+        final /*@NonNull*/ /*@NonInvalid*/ Class TYP_target_c_c_NamedElement_0 = idResolver.getClass(CLSSid_NamedElement, null);
+        final /*@NonNull*/ /*@Thrown*/ List<PathElementCS> path = pathNameCS.getPath();
+        final /*@NonNull*/ /*@Thrown*/ OrderedSetValue BOXED_path = idResolver.createOrderedSetOfAll(ORD_CLSSid_PathElementCS, path);
+        // variable assignments
+        final /*@NonNull*/ /*@Thrown*/ IntegerValue size = CollectionSizeOperation.INSTANCE.evaluate(BOXED_path);
+        final /*@Nullable*/ /*@Thrown*/ PathElementCS at = (PathElementCS)OrderedCollectionAtOperation.INSTANCE.evaluate(BOXED_path, size);
+        if (at == null) {
+            throwNull(pathNameCS, "Null source for \'\'http://cs2as/tests/example1/sourceMM/1.0\'::SElement::ast\'");
+        }
+        final /*@Nullable*/ /*@Thrown*/ EObject ast = at.getAst();
+        final /*@NonNull*/ /*@Thrown*/ NamedElement oclAsType = ClassUtil.nonNullState((NamedElement)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, ast, TYP_target_c_c_NamedElement_0));
+        // property assignments
+        pathNameCS.setAst(oclAsType);
         return true;
     }
     
@@ -1462,6 +1504,16 @@
      * map uC_ownsD {
      * y2 := y2;
      * }}
+     *   for pathElementCS : source::PathElementCS in source::PathElementCS.allInstances()
+     *    {
+     * map uPathElementCS_ast {
+     * pathElementCS := pathElementCS;
+     * }}
+     *   for pathNameCS : source::PathNameCS in source::PathNameCS.allInstances()
+     *    {
+     * map uPathNameCS_ast {
+     * pathNameCS := pathNameCS;
+     * }}
      *   for z : source::Z in source::Z.allInstances()
      *    {
      * map uD_1_refsB {
@@ -1481,6 +1533,8 @@
     protected boolean MAP___root__() throws ReflectiveOperationException {
         // predicates
         final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
+        final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_PathElementCS_0 = idResolver.getClass(CLSSid_PathElementCS, null);
+        final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_PathNameCS_0 = idResolver.getClass(CLSSid_PathNameCS, null);
         final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_SRoot_1 = idResolver.getClass(CLSSid_SRoot, null);
         final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_X_8 = idResolver.getClass(CLSSid_X, null);
         final /*@NonNull*/ /*@NonInvalid*/ Class TYP_source_c_c_Y1_2 = idResolver.getClass(CLSSid_Y1, null);
@@ -1612,22 +1666,36 @@
                 MAP_uC_ownsD(symbol_57);
             }
         }
+        final /*@NonNull*/ /*@NonInvalid*/ SetValue allInstances_19 = ClassifierAllInstancesOperation.INSTANCE.evaluate(executor, SET_CLSSid_PathElementCS, TYP_source_c_c_PathElementCS_0);
+        for (PathElementCS pathElementCS_1 : ValueUtil.typedIterable(PathElementCS.class, allInstances_19)) {
+            if (pathElementCS_1 != null) {
+                final /*@NonNull*/ /*@NonInvalid*/ PathElementCS symbol_60 = (PathElementCS)pathElementCS_1;
+                MAP_uPathElementCS_ast(symbol_60);
+            }
+        }
+        final /*@NonNull*/ /*@NonInvalid*/ SetValue allInstances_20 = ClassifierAllInstancesOperation.INSTANCE.evaluate(executor, SET_CLSSid_PathNameCS, TYP_source_c_c_PathNameCS_0);
+        for (PathNameCS pathNameCS_1 : ValueUtil.typedIterable(PathNameCS.class, allInstances_20)) {
+            if (pathNameCS_1 != null) {
+                final /*@NonNull*/ /*@NonInvalid*/ PathNameCS symbol_63 = (PathNameCS)pathNameCS_1;
+                MAP_uPathNameCS_ast(symbol_63);
+            }
+        }
         for (Z z_14 : ValueUtil.typedIterable(Z.class, allInstances_7)) {
             if (z_14 != null) {
-                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_60 = (Z)z_14;
-                MAP_uD_1_refsB(symbol_60);
+                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_66 = (Z)z_14;
+                MAP_uD_1_refsB(symbol_66);
             }
         }
         for (Z z_15 : ValueUtil.typedIterable(Z.class, allInstances_7)) {
             if (z_15 != null) {
-                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_63 = (Z)z_15;
-                MAP_uD_0_refsC(symbol_63);
+                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_69 = (Z)z_15;
+                MAP_uD_0_refsC(symbol_69);
             }
         }
         for (Z z_16 : ValueUtil.typedIterable(Z.class, allInstances_7)) {
             if (z_16 != null) {
-                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_66 = (Z)z_16;
-                MAP_uD_1_toA(symbol_66);
+                final /*@NonNull*/ /*@NonInvalid*/ Z symbol_72 = (Z)z_16;
+                MAP_uD_1_toA(symbol_72);
             }
         }
         return true;
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java
index bd4f793..fa388fe 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathElementCS.java
@@ -23,6 +23,7 @@
  * </p>
  * <ul>
  *   <li>{@link example1.source.PathElementCS#getName <em>Name</em>}</li>
+ *   <li>{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}</li>
  * </ul>
  *
  * @see example1.source.SourcePackage#getPathElementCS()
@@ -56,4 +57,32 @@
 	 */
 	void setName(String value);
 
+	/**
+	 * Returns the value of the '<em><b>Path Name</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link example1.source.PathNameCS#getPath <em>Path</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Path Name</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Path Name</em>' container reference.
+	 * @see #setPathName(PathNameCS)
+	 * @see example1.source.SourcePackage#getPathElementCS_PathName()
+	 * @see example1.source.PathNameCS#getPath
+	 * @model opposite="path" transient="false"
+	 * @generated
+	 */
+	PathNameCS getPathName();
+
+	/**
+	 * Sets the value of the '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Path Name</em>' container reference.
+	 * @see #getPathName()
+	 * @generated
+	 */
+	void setPathName(PathNameCS value);
+
 } // PathElementCS
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java
index 7d9fd34..c5bc6dc 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/PathNameCS.java
@@ -24,6 +24,7 @@
  * </p>
  * <ul>
  *   <li>{@link example1.source.PathNameCS#getPath <em>Path</em>}</li>
+ *   <li>{@link example1.source.PathNameCS#getContext <em>Context</em>}</li>
  * </ul>
  *
  * @see example1.source.SourcePackage#getPathNameCS()
@@ -34,6 +35,7 @@
 	/**
 	 * Returns the value of the '<em><b>Path</b></em>' containment reference list.
 	 * The list contents are of type {@link example1.source.PathElementCS}.
+	 * It is bidirectional and its opposite is '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Path</em>' containment reference list isn't clear,
@@ -42,9 +44,36 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Path</em>' containment reference list.
 	 * @see example1.source.SourcePackage#getPathNameCS_Path()
-	 * @model containment="true" required="true"
+	 * @see example1.source.PathElementCS#getPathName
+	 * @model opposite="pathName" containment="true" required="true"
 	 * @generated
 	 */
 	EList<PathElementCS> getPath();
 
+	/**
+	 * Returns the value of the '<em><b>Context</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Context</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Context</em>' reference.
+	 * @see #setContext(SElement)
+	 * @see example1.source.SourcePackage#getPathNameCS_Context()
+	 * @model
+	 * @generated
+	 */
+	SElement getContext();
+
+	/**
+	 * Sets the value of the '{@link example1.source.PathNameCS#getContext <em>Context</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Context</em>' reference.
+	 * @see #getContext()
+	 * @generated
+	 */
+	void setContext(SElement value);
+
 } // PathNameCS
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java
index 35f92e7..0d93b77 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SElement.java
@@ -27,7 +27,7 @@
  * </ul>
  *
  * @see example1.source.SourcePackage#getSElement()
- * @model
+ * @model abstract="true"
  * @generated
  */
 public interface SElement extends EObject {
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java
index 7d8252d..61effd1 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourceFactory.java
@@ -77,15 +77,6 @@
 	SRoot createSRoot();
 
 	/**
-	 * Returns a new object of class '<em>SElement</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>SElement</em>'.
-	 * @generated
-	 */
-	SElement createSElement();
-
-	/**
 	 * Returns a new object of class '<em>Path Name CS</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java
index 9e0f86c..15f206f 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/SourcePackage.java
@@ -499,13 +499,22 @@
 	int PATH_NAME_CS__PATH = SELEMENT_FEATURE_COUNT + 0;
 
 	/**
+	 * The feature id for the '<em><b>Context</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PATH_NAME_CS__CONTEXT = SELEMENT_FEATURE_COUNT + 1;
+
+	/**
 	 * The number of structural features of the '<em>Path Name CS</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PATH_NAME_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 1;
+	int PATH_NAME_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of operations of the '<em>Path Name CS</em>' class.
@@ -545,13 +554,22 @@
 	int PATH_ELEMENT_CS__NAME = SELEMENT_FEATURE_COUNT + 0;
 
 	/**
+	 * The feature id for the '<em><b>Path Name</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PATH_ELEMENT_CS__PATH_NAME = SELEMENT_FEATURE_COUNT + 1;
+
+	/**
 	 * The number of structural features of the '<em>Path Element CS</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PATH_ELEMENT_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 1;
+	int PATH_ELEMENT_CS_FEATURE_COUNT = SELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of operations of the '<em>Path Element CS</em>' class.
@@ -776,6 +794,17 @@
 	EReference getPathNameCS_Path();
 
 	/**
+	 * Returns the meta object for the reference '{@link example1.source.PathNameCS#getContext <em>Context</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Context</em>'.
+	 * @see example1.source.PathNameCS#getContext()
+	 * @see #getPathNameCS()
+	 * @generated
+	 */
+	EReference getPathNameCS_Context();
+
+	/**
 	 * Returns the meta object for class '{@link example1.source.PathElementCS <em>Path Element CS</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -797,6 +826,17 @@
 	EAttribute getPathElementCS_Name();
 
 	/**
+	 * Returns the meta object for the container reference '{@link example1.source.PathElementCS#getPathName <em>Path Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the container reference '<em>Path Name</em>'.
+	 * @see example1.source.PathElementCS#getPathName()
+	 * @see #getPathElementCS()
+	 * @generated
+	 */
+	EReference getPathElementCS_PathName();
+
+	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -996,6 +1036,14 @@
 		EReference PATH_NAME_CS__PATH = eINSTANCE.getPathNameCS_Path();
 
 		/**
+		 * The meta object literal for the '<em><b>Context</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PATH_NAME_CS__CONTEXT = eINSTANCE.getPathNameCS_Context();
+
+		/**
 		 * The meta object literal for the '{@link example1.source.impl.PathElementCSImpl <em>Path Element CS</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1013,6 +1061,14 @@
 		 */
 		EAttribute PATH_ELEMENT_CS__NAME = eINSTANCE.getPathElementCS_Name();
 
+		/**
+		 * The meta object literal for the '<em><b>Path Name</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PATH_ELEMENT_CS__PATH_NAME = eINSTANCE.getPathElementCS_PathName();
+
 	}
 
 } //SourcePackage
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java
index 4cc4fbc..2f57c54 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathElementCSImpl.java
@@ -13,13 +13,17 @@
 package example1.source.impl;
 
 import example1.source.PathElementCS;
+import example1.source.PathNameCS;
 import example1.source.SourcePackage;
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,6 +34,7 @@
  * </p>
  * <ul>
  *   <li>{@link example1.source.impl.PathElementCSImpl#getName <em>Name</em>}</li>
+ *   <li>{@link example1.source.impl.PathElementCSImpl#getPathName <em>Path Name</em>}</li>
  * </ul>
  *
  * @generated
@@ -100,11 +105,98 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PathNameCS getPathName() {
+		if (eContainerFeatureID() != SourcePackage.PATH_ELEMENT_CS__PATH_NAME) return null;
+		return (PathNameCS)eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPathName(PathNameCS newPathName, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newPathName, SourcePackage.PATH_ELEMENT_CS__PATH_NAME, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPathName(PathNameCS newPathName) {
+		if (newPathName != eInternalContainer() || (eContainerFeatureID() != SourcePackage.PATH_ELEMENT_CS__PATH_NAME && newPathName != null)) {
+			if (EcoreUtil.isAncestor(this, newPathName))
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newPathName != null)
+				msgs = ((InternalEObject)newPathName).eInverseAdd(this, SourcePackage.PATH_NAME_CS__PATH, PathNameCS.class, msgs);
+			msgs = basicSetPathName(newPathName, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SourcePackage.PATH_ELEMENT_CS__PATH_NAME, newPathName, newPathName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				if (eInternalContainer() != null)
+					msgs = eBasicRemoveFromContainer(msgs);
+				return basicSetPathName((PathNameCS)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				return basicSetPathName(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				return eInternalContainer().eInverseRemove(this, SourcePackage.PATH_NAME_CS__PATH, PathNameCS.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case SourcePackage.PATH_ELEMENT_CS__NAME:
 				return getName();
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				return getPathName();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -120,6 +212,9 @@
 			case SourcePackage.PATH_ELEMENT_CS__NAME:
 				setName((String)newValue);
 				return;
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				setPathName((PathNameCS)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -135,6 +230,9 @@
 			case SourcePackage.PATH_ELEMENT_CS__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				setPathName((PathNameCS)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -149,6 +247,8 @@
 		switch (featureID) {
 			case SourcePackage.PATH_ELEMENT_CS__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case SourcePackage.PATH_ELEMENT_CS__PATH_NAME:
+				return getPathName() != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java
index 1032fa2..00e37d4 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/PathNameCSImpl.java
@@ -14,10 +14,12 @@
 
 import example1.source.PathElementCS;
 import example1.source.PathNameCS;
+import example1.source.SElement;
 import example1.source.SourcePackage;
 
 import java.util.Collection;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -25,7 +27,8 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 /**
@@ -37,6 +40,7 @@
  * </p>
  * <ul>
  *   <li>{@link example1.source.impl.PathNameCSImpl#getPath <em>Path</em>}</li>
+ *   <li>{@link example1.source.impl.PathNameCSImpl#getContext <em>Context</em>}</li>
  * </ul>
  *
  * @generated
@@ -53,6 +57,16 @@
 	protected EList<PathElementCS> path;
 
 	/**
+	 * The cached value of the '{@link #getContext() <em>Context</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContext()
+	 * @generated
+	 * @ordered
+	 */
+	protected SElement context;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -78,7 +92,7 @@
 	 */
 	public EList<PathElementCS> getPath() {
 		if (path == null) {
-			path = new EObjectContainmentEList<PathElementCS>(PathElementCS.class, this, SourcePackage.PATH_NAME_CS__PATH);
+			path = new EObjectContainmentWithInverseEList<PathElementCS>(PathElementCS.class, this, SourcePackage.PATH_NAME_CS__PATH, SourcePackage.PATH_ELEMENT_CS__PATH_NAME);
 		}
 		return path;
 	}
@@ -88,6 +102,59 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public SElement getContext() {
+		if (context != null && context.eIsProxy()) {
+			InternalEObject oldContext = (InternalEObject)context;
+			context = (SElement)eResolveProxy(oldContext);
+			if (context != oldContext) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SourcePackage.PATH_NAME_CS__CONTEXT, oldContext, context));
+			}
+		}
+		return context;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SElement basicGetContext() {
+		return context;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setContext(SElement newContext) {
+		SElement oldContext = context;
+		context = newContext;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SourcePackage.PATH_NAME_CS__CONTEXT, oldContext, context));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SourcePackage.PATH_NAME_CS__PATH:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getPath()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
@@ -107,6 +174,9 @@
 		switch (featureID) {
 			case SourcePackage.PATH_NAME_CS__PATH:
 				return getPath();
+			case SourcePackage.PATH_NAME_CS__CONTEXT:
+				if (resolve) return getContext();
+				return basicGetContext();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -124,6 +194,9 @@
 				getPath().clear();
 				getPath().addAll((Collection<? extends PathElementCS>)newValue);
 				return;
+			case SourcePackage.PATH_NAME_CS__CONTEXT:
+				setContext((SElement)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -139,6 +212,9 @@
 			case SourcePackage.PATH_NAME_CS__PATH:
 				getPath().clear();
 				return;
+			case SourcePackage.PATH_NAME_CS__CONTEXT:
+				setContext((SElement)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -153,6 +229,8 @@
 		switch (featureID) {
 			case SourcePackage.PATH_NAME_CS__PATH:
 				return path != null && !path.isEmpty();
+			case SourcePackage.PATH_NAME_CS__CONTEXT:
+				return context != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java
index 6ad6f0f..d616a26 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SElementImpl.java
@@ -35,7 +35,7 @@
  *
  * @generated
  */
-public class SElementImpl extends MinimalEObjectImpl.Container implements SElement {
+public abstract class SElementImpl extends MinimalEObjectImpl.Container implements SElement {
 	/**
 	 * The cached value of the '{@link #getAst() <em>Ast</em>}' reference.
 	 * <!-- begin-user-doc -->
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java
index b10d424..abfc4d2 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourceFactoryImpl.java
@@ -77,7 +77,6 @@
 			case SourcePackage.Y2: return createY2();
 			case SourcePackage.Z: return createZ();
 			case SourcePackage.SROOT: return createSRoot();
-			case SourcePackage.SELEMENT: return createSElement();
 			case SourcePackage.PATH_NAME_CS: return createPathNameCS();
 			case SourcePackage.PATH_ELEMENT_CS: return createPathElementCS();
 			default:
@@ -140,16 +139,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public SElement createSElement() {
-		SElementImpl sElement = new SElementImpl();
-		return sElement;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public PathNameCS createPathNameCS() {
 		PathNameCSImpl pathNameCS = new PathNameCSImpl();
 		return pathNameCS;
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java
index b47c04d..c0a1da2 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/example1/source/impl/SourcePackageImpl.java
@@ -341,6 +341,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getPathNameCS_Context() {
+		return (EReference)pathNameCSEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getPathElementCS() {
 		return pathElementCSEClass;
 	}
@@ -359,6 +368,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getPathElementCS_PathName() {
+		return (EReference)pathElementCSEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public SourceFactory getSourceFactory() {
 		return (SourceFactory)getEFactoryInstance();
 	}
@@ -409,9 +427,11 @@
 
 		pathNameCSEClass = createEClass(PATH_NAME_CS);
 		createEReference(pathNameCSEClass, PATH_NAME_CS__PATH);
+		createEReference(pathNameCSEClass, PATH_NAME_CS__CONTEXT);
 
 		pathElementCSEClass = createEClass(PATH_ELEMENT_CS);
 		createEAttribute(pathElementCSEClass, PATH_ELEMENT_CS__NAME);
+		createEReference(pathElementCSEClass, PATH_ELEMENT_CS__PATH_NAME);
 	}
 
 	/**
@@ -474,14 +494,16 @@
 		initEClass(sRootEClass, SRoot.class, "SRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getSRoot_OwnedX(), this.getX(), null, "ownedX", null, 0, -1, SRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(sElementEClass, SElement.class, "SElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(sElementEClass, SElement.class, "SElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getSElement_Ast(), ecorePackage.getEObject(), null, "ast", null, 0, 1, SElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(pathNameCSEClass, PathNameCS.class, "PathNameCS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getPathNameCS_Path(), this.getPathElementCS(), null, "path", null, 1, -1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPathNameCS_Path(), this.getPathElementCS(), this.getPathElementCS_PathName(), "path", null, 1, -1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPathNameCS_Context(), this.getSElement(), null, "context", null, 0, 1, PathNameCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(pathElementCSEClass, PathElementCS.class, "PathElementCS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getPathElementCS_Name(), ecorePackage.getEString(), "name", null, 0, 1, PathElementCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPathElementCS_PathName(), this.getPathNameCS(), this.getPathNameCS_Path(), "pathName", null, 0, 1, PathElementCS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		// Create resource
 		createResource(eNS_URI);