[578117] Regen with full aggregate TypeId bindings
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/QVTbaseTables.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/QVTbaseTables.java
index caca252..f487940 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/QVTbaseTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/QVTbaseTables.java
@@ -27,13 +27,16 @@
 import org.eclipse.ocl.pivot.ParameterTypes;
 import org.eclipse.ocl.pivot.PivotTables;
 import org.eclipse.ocl.pivot.TemplateParameters;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.EnumerationId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumeration;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumerationLiteral;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
@@ -79,8 +82,13 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_false = TypeId.FALSE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_2 = TypeId.valueOf(ValueUtil.integerValueOf(2));
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTbase", null, QVTbasePackage.eINSTANCE);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Annotation = QVTbaseTables.PACKid_$metamodel$.getClassId("Annotation", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_BooleanType = QVTbaseTables.PACKid_$metamodel$.getClassId("BooleanType", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Class = QVTbaseTables.PACKid_$metamodel$.getClassId("Class", 0);
@@ -106,25 +114,27 @@
 	public static final /*@NonInvalid*/ @NonNull EnumerationId ENUMid_TargetElementKind = QVTbaseTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase.getEnumerationId("TargetElementKind");
 	public static final /*@NonInvalid*/ @NonNull IntegerValue INT_0 = ValueUtil.integerValueOf("0");
 	public static final /*@NonInvalid*/ @NonNull IntegerValue INT_1 = ValueUtil.integerValueOf("1");
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_PRIMid_String = TypeId.SEQUENCE.getSpecializedId(TypeId.STRING);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Domain = TypeId.BAG.getSpecializedId(QVTbaseTables.CLSSid_Domain);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_SimpleTargetElement = TypeId.BAG.getSpecializedId(QVTbaseTables.CLSSid_SimpleTargetElement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_TypedModel = TypeId.BAG.getSpecializedId(QVTbaseTables.CLSSid_TypedModel);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedId(QVTbaseTables.CLSSid_Domain);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Parameter = TypeId.ORDERED_SET.getSpecializedId(QVTbaseTables.CLSSid_Parameter);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Rule = TypeId.ORDERED_SET.getSpecializedId(QVTbaseTables.CLSSid_Rule);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_SimpleTargetElement = TypeId.ORDERED_SET.getSpecializedId(QVTbaseTables.CLSSid_SimpleTargetElement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedId(QVTbaseTables.CLSSid_TypedModel);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Package = TypeId.SEQUENCE.getSpecializedId(QVTbaseTables.CLSSid_Package);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Annotation = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Annotation);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Package = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Package);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Predicate = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Predicate);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Rule);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Target = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Target);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_TargetElement = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_TargetElement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Transformation = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Transformation);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_TypedModel = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_TypedModel);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Variable = TypeId.SET.getSpecializedId(QVTbaseTables.CLSSid_Variable);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_PRIMid_String = TypeId.SEQUENCE.getSpecializedCollectionTypeId(TypeId.STRING, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Domain = TypeId.BAG.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Domain, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_SimpleTargetElement = TypeId.BAG.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_SimpleTargetElement, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_TypedModel = TypeId.BAG.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_TypedModel, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Domain, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Parameter = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Parameter, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Rule = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Rule, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_SimpleTargetElement = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_SimpleTargetElement, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_2, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_TypedModel, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Package = TypeId.SEQUENCE.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Package, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Annotation = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Annotation, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Package = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Package, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Predicate = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Predicate, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Rule, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule_0 = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Rule, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Target = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Target, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_TargetElement = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_TargetElement, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_2, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Transformation = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Transformation, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Transformation_0 = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Transformation, QVTbaseTables.BOOLid_false, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_TypedModel = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_TypedModel, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Variable = TypeId.SET.getSpecializedCollectionTypeId(QVTbaseTables.CLSSid_Variable, QVTbaseTables.BOOLid_true, QVTbaseTables.INTid_0, QVTbaseTables.UNLid__a);
 
 	/**
 	 *	The type parameters for templated types and operations.
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/RuleImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/RuleImpl.java
index 9c745c0..e138052 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/RuleImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/RuleImpl.java
@@ -624,7 +624,7 @@
 					final /*@Thrown*/ @NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, QVTbaseTables.SET_CLSSid_Rule, overridden);
 					final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0 = executor.getStaticTypeOfValue(null, oclAsSet);
 					final @NonNull LibraryIterationExtension IMPL_closure_0 = (LibraryIterationExtension)TYPE_closure_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure);
-					final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, QVTbaseTables.SET_CLSSid_Rule, QVTbaseTables.CLSSid_Rule);
+					final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, QVTbaseTables.SET_CLSSid_Rule_0, QVTbaseTables.CLSSid_Rule);
 					/**
 					 * Implementation of the iterator body.
 					 */
@@ -642,7 +642,7 @@
 							return overridden_0;
 						}
 					};
-					final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, QVTbaseTables.SET_CLSSid_Rule, BODY_closure_0, oclAsSet, ACC_closure_0);
+					final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, QVTbaseTables.SET_CLSSid_Rule_0, BODY_closure_0, oclAsSet, ACC_closure_0);
 					@SuppressWarnings("null")
 					final /*@Thrown*/ @NonNull SetValue closure = (@NonNull SetValue)IMPL_closure_0.evaluateIteration(MGR_closure_0);
 					final /*@Thrown*/ boolean result = CollectionExcludesOperation.INSTANCE.evaluate(closure, this).booleanValue();
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/TransformationImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/TransformationImpl.java
index dfc90c8..24682f4 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/TransformationImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/TransformationImpl.java
@@ -897,7 +897,7 @@
 					final /*@Thrown*/ @NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, QVTbaseTables.SET_CLSSid_Transformation, symbol_0);
 					final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0 = executor.getStaticTypeOfValue(null, oclAsSet);
 					final @NonNull LibraryIterationExtension IMPL_closure_0 = (LibraryIterationExtension)TYPE_closure_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure);
-					final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, QVTbaseTables.SET_CLSSid_Transformation, QVTbaseTables.CLSSid_Transformation);
+					final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, QVTbaseTables.SET_CLSSid_Transformation_0, QVTbaseTables.CLSSid_Transformation);
 					/**
 					 * Implementation of the iterator body.
 					 */
@@ -915,7 +915,7 @@
 							return symbol_2;
 						}
 					};
-					final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, QVTbaseTables.SET_CLSSid_Transformation, BODY_closure_0, oclAsSet, ACC_closure_0);
+					final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, QVTbaseTables.SET_CLSSid_Transformation_0, BODY_closure_0, oclAsSet, ACC_closure_0);
 					@SuppressWarnings("null")
 					final /*@Thrown*/ @NonNull SetValue closure = (@NonNull SetValue)IMPL_closure_0.evaluateIteration(MGR_closure_0);
 					final /*@Thrown*/ boolean result = CollectionExcludesOperation.INSTANCE.evaluate(closure, this).booleanValue();
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/model/QVTbaseMetamodel.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/model/QVTbaseMetamodel.java
index c72a655..1d510b7 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/model/QVTbaseMetamodel.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/model/QVTbaseMetamodel.java
@@ -374,71 +374,91 @@
 			Class type;
 
 			ownedClasses = pivot.getOwnedClasses();
-			ownedClasses.add(type = _Annotation_1);
+			type = _Annotation_1;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _OCLExpression);
+			ownedClasses.add(type);
+			type = _OCLExpression;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Package_1);
+			ownedClasses.add(type);
+			type = _Package_1;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Parameter);
+			ownedClasses.add(type);
+			type = _Parameter;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _ParameterVariable);
+			ownedClasses.add(type);
+			type = _ParameterVariable;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Variable_1);
+			ownedClasses.add(type);
+			type = _Variable_1;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
+			ownedClasses.add(type);
 
 			ownedClasses = qvtbase.getOwnedClasses();
-			ownedClasses.add(type = _BaseModel);
+			type = _BaseModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _CompoundTargetElement);
+			ownedClasses.add(type);
+			type = _CompoundTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_TargetElement);
-			ownedClasses.add(type = _Domain);
+			ownedClasses.add(type);
+			type = _Domain;
 			type.setIsAbstract(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Function);
+			ownedClasses.add(type);
+			type = _Function;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _FunctionBody);
+			ownedClasses.add(type);
+			type = _FunctionBody;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _FunctionParameter);
+			ownedClasses.add(type);
+			type = _FunctionParameter;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Pattern);
+			ownedClasses.add(type);
+			type = _Pattern;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Predicate);
+			ownedClasses.add(type);
+			type = _Predicate;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Rule);
+			ownedClasses.add(type);
+			type = _Rule;
 			type.setIsAbstract(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _SimpleTargetElement);
+			ownedClasses.add(type);
+			type = _SimpleTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_TargetElement);
-			ownedClasses.add(type = _Target);
+			ownedClasses.add(type);
+			type = _Target;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _TargetElement);
+			ownedClasses.add(type);
+			type = _TargetElement;
 			type.setIsAbstract(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Transformation);
+			ownedClasses.add(type);
+			type = _Transformation;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _TypedModel);
+			ownedClasses.add(type);
+			type = _TypedModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
+			ownedClasses.add(type);
 		}
 
 		private void installEnumerations() {
@@ -447,12 +467,13 @@
 			List<EnumerationLiteral> enumerationLiterals;
 
 			ownedClasses = qvtbase.getOwnedClasses();
-			ownedClasses.add(type = _TargetElementKind);
+			type = _TargetElementKind;
 			enumerationLiterals = type.getOwnedLiterals();
 			enumerationLiterals.add(el__TargetElementKind_INPUT);
 			enumerationLiterals.add(el__TargetElementKind_VIA);
 			enumerationLiterals.add(el__TargetElementKind_OUTPUT);
 			type.getSuperClasses().add(_OclEnumeration);
+			ownedClasses.add(type);
 		}
 
 		private void installCollectionTypes() {
@@ -461,153 +482,196 @@
 			CollectionType type;
 
 			ownedClasses = orphanage.getOwnedClasses();
-			ownedClasses.add(type = _Bag_Domain);
+			type = _Bag_Domain;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Domain);
-			ownedClasses.add(type = _Bag_Function);
+			ownedClasses.add(type);
+			type = _Bag_Function;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Function);
-			ownedClasses.add(type = _Bag_Pattern);
+			ownedClasses.add(type);
+			type = _Bag_Pattern;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Pattern);
-			ownedClasses.add(type = _Bag_SimpleTargetElement);
+			ownedClasses.add(type);
+			type = _Bag_SimpleTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_SimpleTargetElement);
-			ownedClasses.add(type = _Bag_TypedModel);
+			ownedClasses.add(type);
+			type = _Bag_TypedModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_TypedModel);
-			ownedClasses.add(type = _Collection_Annotation);
+			ownedClasses.add(type);
+			type = _Collection_Annotation;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Domain);
+			ownedClasses.add(type);
+			type = _Collection_Domain;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Function);
+			ownedClasses.add(type);
+			type = _Collection_Function;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Package);
+			ownedClasses.add(type);
+			type = _Collection_Package;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Pattern);
+			ownedClasses.add(type);
+			type = _Collection_Pattern;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Predicate);
+			ownedClasses.add(type);
+			type = _Collection_Predicate;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Rule);
+			ownedClasses.add(type);
+			type = _Collection_Rule;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_SimpleTargetElement);
+			ownedClasses.add(type);
+			type = _Collection_SimpleTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Target);
+			ownedClasses.add(type);
+			type = _Collection_Target;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_TargetElement);
+			ownedClasses.add(type);
+			type = _Collection_TargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_TypedModel);
+			ownedClasses.add(type);
+			type = _Collection_TypedModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Variable);
+			ownedClasses.add(type);
+			type = _Collection_Variable;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _OrderedCollection_Domain);
+			ownedClasses.add(type);
+			type = _OrderedCollection_Domain;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Domain);
-			ownedClasses.add(type = _OrderedCollection_Rule);
+			ownedClasses.add(type);
+			type = _OrderedCollection_Rule;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Rule);
-			ownedClasses.add(type = _OrderedCollection_SimpleTargetElement);
+			ownedClasses.add(type);
+			type = _OrderedCollection_SimpleTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_SimpleTargetElement);
-			ownedClasses.add(type = _OrderedCollection_TypedModel);
+			ownedClasses.add(type);
+			type = _OrderedCollection_TypedModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_TypedModel);
-			ownedClasses.add(type = _OrderedSet_Domain_NullFree);
+			ownedClasses.add(type);
+			type = _OrderedSet_Domain_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OrderedCollection_Domain);
 			superClasses.add(_UniqueCollection_Domain);
-			ownedClasses.add(type = _OrderedSet_Rule_NullFree);
+			ownedClasses.add(type);
+			type = _OrderedSet_Rule_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OrderedCollection_Rule);
 			superClasses.add(_UniqueCollection_Rule);
-			ownedClasses.add(type = _OrderedSet_SimpleTargetElement_NullFree);
+			ownedClasses.add(type);
+			type = _OrderedSet_SimpleTargetElement_NullFree;
 			type.setLower(2);
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OrderedCollection_SimpleTargetElement);
 			superClasses.add(_UniqueCollection_SimpleTargetElement);
-			ownedClasses.add(type = _OrderedSet_TypedModel_NullFree);
+			ownedClasses.add(type);
+			type = _OrderedSet_TypedModel_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OrderedCollection_TypedModel);
 			superClasses.add(_UniqueCollection_TypedModel);
-			ownedClasses.add(type = _Set_Annotation_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Annotation_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Annotation);
-			ownedClasses.add(type = _Set_Package_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Package_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Package);
-			ownedClasses.add(type = _Set_Predicate_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Predicate_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Predicate);
-			ownedClasses.add(type = _Set_Rule_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Rule_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Rule);
-			ownedClasses.add(type = _Set_Target_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Target_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Target);
-			ownedClasses.add(type = _Set_TargetElement_NullFree);
+			ownedClasses.add(type);
+			type = _Set_TargetElement_NullFree;
 			type.setLower(2);
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_TargetElement);
-			ownedClasses.add(type = _Set_TypedModel_NullFree);
+			ownedClasses.add(type);
+			type = _Set_TypedModel_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_TypedModel);
-			ownedClasses.add(type = _Set_Variable_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Variable_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Variable);
-			ownedClasses.add(type = _UniqueCollection_Annotation);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Annotation;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Annotation);
-			ownedClasses.add(type = _UniqueCollection_Domain);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Domain;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Domain);
-			ownedClasses.add(type = _UniqueCollection_Package);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Package;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Package);
-			ownedClasses.add(type = _UniqueCollection_Predicate);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Predicate;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Predicate);
-			ownedClasses.add(type = _UniqueCollection_Rule);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Rule;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Rule);
-			ownedClasses.add(type = _UniqueCollection_SimpleTargetElement);
+			ownedClasses.add(type);
+			type = _UniqueCollection_SimpleTargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_SimpleTargetElement);
-			ownedClasses.add(type = _UniqueCollection_Target);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Target;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Target);
-			ownedClasses.add(type = _UniqueCollection_TargetElement);
+			ownedClasses.add(type);
+			type = _UniqueCollection_TargetElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_TargetElement);
-			ownedClasses.add(type = _UniqueCollection_TypedModel);
+			ownedClasses.add(type);
+			type = _UniqueCollection_TypedModel;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_TypedModel);
-			ownedClasses.add(type = _UniqueCollection_Variable);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Variable;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Variable);
+			ownedClasses.add(type);
 		}
 
 		private final @NonNull Operation op_Transformation_getFunction = createOperation(QVTbasePackage.Literals.TRANSFORMATION___GET_FUNCTION__STRING, _Function, null, null);
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/QVTcoreTables.java b/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/QVTcoreTables.java
index dd9ea02..31e083d 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/QVTcoreTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/QVTcoreTables.java
@@ -27,15 +27,18 @@
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.ocl.pivot.PivotTables;
 import org.eclipse.ocl.pivot.TemplateParameters;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.EnumerationId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TuplePartId;
 import org.eclipse.ocl.pivot.ids.TupleTypeId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumeration;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumerationLiteral;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
@@ -83,9 +86,12 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTbase", null, QVTbasePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTcore = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTcore", null, QVTcorePackage.eINSTANCE);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Area = QVTcoreTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTcore.getClassId("Area", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Assignment = QVTcoreTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTcore.getClassId("Assignment", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_BottomPattern = QVTcoreTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTcore.getClassId("BottomPattern", 0);
@@ -120,12 +126,12 @@
 	public static final /*@NonInvalid*/ @NonNull String STR_VariableAssignment_c_c_CompatibleTypeForValue_c_32 = "VariableAssignment::CompatibleTypeForValue: ";
 	public static final /*@NonInvalid*/ @NonNull String STR__32_must_32_conform_32_to_32 = " must conform to ";
 	public static final /*@NonInvalid*/ @NonNull String STR__32_or_32_vice_m_versa = " or vice-versa";
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedId(QVTcoreTables.CLSSid_Domain);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Assignment = TypeId.SET.getSpecializedId(QVTcoreTables.CLSSid_Assignment);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_EnforcementOperation = TypeId.SET.getSpecializedId(QVTcoreTables.CLSSid_EnforcementOperation);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Mapping = TypeId.SET.getSpecializedId(QVTcoreTables.CLSSid_Mapping);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RealizedVariable = TypeId.SET.getSpecializedId(QVTcoreTables.CLSSid_RealizedVariable);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableDeclaration = TypeId.SET.getSpecializedId(QVTcoreTables.CLSSid_VariableDeclaration);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_Domain, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Assignment = TypeId.SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_Assignment, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_EnforcementOperation = TypeId.SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_EnforcementOperation, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Mapping = TypeId.SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_Mapping, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RealizedVariable = TypeId.SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_RealizedVariable, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableDeclaration = TypeId.SET.getSpecializedCollectionTypeId(QVTcoreTables.CLSSid_VariableDeclaration, QVTcoreTables.BOOLid_true, QVTcoreTables.INTid_0, QVTcoreTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull TupleTypeId TUPLid_ = IdManager.getTupleTypeId("Tuple", QVTcoreTables.PARTid__0, QVTcoreTables.PARTid_);
 
 	/**
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/QVTimperativeTables.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/QVTimperativeTables.java
index b8f30de..611906f 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/QVTimperativeTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/QVTimperativeTables.java
@@ -29,15 +29,18 @@
 import org.eclipse.ocl.pivot.ParameterTypes;
 import org.eclipse.ocl.pivot.PivotTables;
 import org.eclipse.ocl.pivot.TemplateParameters;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.DataTypeId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TuplePartId;
 import org.eclipse.ocl.pivot.ids.TupleTypeId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorProperty;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorType;
@@ -84,11 +87,16 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_false = TypeId.FALSE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_1 = TypeId.ONE_VALUE;
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_emf_s_2002_s_Ecore = IdManager.getNsURIPackageId("http://www.eclipse.org/emf/2002/Ecore", null, EcorePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTbase", null, QVTbasePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2016_s_QVTimperative = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2016/QVTimperative", null, QVTimperativePackage.eINSTANCE);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_PRIMid_String = TypeId.BAG.getSpecializedId(TypeId.STRING);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_PRIMid_String = TypeId.BAG.getSpecializedCollectionTypeId(TypeId.STRING, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_AddStatement = QVTimperativeTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2016_s_QVTimperative.getClassId("AddStatement", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_AppendParameterBinding = QVTimperativeTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2016_s_QVTimperative.getClassId("AppendParameterBinding", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_BooleanType = QVTimperativeTables.PACKid_$metamodel$.getClassId("BooleanType", 0);
@@ -127,11 +135,11 @@
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_VariableStatement = QVTimperativeTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2016_s_QVTimperative.getClassId("VariableStatement", 0);
 	public static final /*@NonInvalid*/ @NonNull DataTypeId DATAid_EIntegerObject = QVTimperativeTables.PACKid_http_c_s_s_www_eclipse_org_s_emf_s_2002_s_Ecore.getDataTypeId("EIntegerObject", 0);
 	public static final /*@NonInvalid*/ @NonNull IntegerValue INT_0 = ValueUtil.integerValueOf("0");
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_PRIMid_String = TypeId.ORDERED_SET.getSpecializedId(TypeId.STRING);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_PRIMid_String = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(TypeId.STRING, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull TuplePartId PARTid_ = IdManager.getTuplePartId(0, "message", TypeId.STRING);
 	public static final /*@NonInvalid*/ @NonNull TuplePartId PARTid__0 = IdManager.getTuplePartId(1, "status", TypeId.BOOLEAN);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_PRIMid_String = TypeId.SEQUENCE.getSpecializedId(TypeId.STRING);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_PRIMid_String = TypeId.SET.getSpecializedId(TypeId.STRING);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_PRIMid_String = TypeId.SEQUENCE.getSpecializedCollectionTypeId(TypeId.STRING, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_PRIMid_String = TypeId.SET.getSpecializedCollectionTypeId(TypeId.STRING, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull String STR_ = "";
 	public static final /*@NonInvalid*/ @NonNull String STR_MappingCall_c_c_MatchingCallBindings_c_32 = "MappingCall::MatchingCallBindings: ";
 	public static final /*@NonInvalid*/ @NonNull String STR_SetStatement_c_c_CompatibleClassForProperty_c_32 = "SetStatement::CompatibleClassForProperty: ";
@@ -143,29 +151,29 @@
 	public static final /*@NonInvalid*/ @NonNull String STR__32_l_g_32 = " <> ";
 	public static final /*@NonInvalid*/ @NonNull String STR__32_must_32_conform_32_to_32 = " must conform to ";
 	public static final /*@NonInvalid*/ @NonNull String STR__59 = ";";
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_AddStatement = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_AddStatement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_AppendParameterBinding = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_AppendParameterBinding);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_GuardParameterBinding = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_GuardParameterBinding);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_LoopParameterBinding = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_LoopParameterBinding);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingCall = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_MappingCall);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingParameterBinding = TypeId.BAG.getSpecializedId(QVTimperativeTables.CLSSid_MappingParameterBinding);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_LoopVariable = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_LoopVariable);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingParameterBinding = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_MappingParameterBinding);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingStatement = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_MappingStatement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OCLExpression = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_OCLExpression);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Statement = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_Statement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_TypedModel);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_VariableStatement = TypeId.ORDERED_SET.getSpecializedId(QVTimperativeTables.CLSSid_VariableStatement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_MappingParameter = TypeId.SEQUENCE.getSpecializedId(QVTimperativeTables.CLSSid_MappingParameter);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_EntryPoint = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_EntryPoint);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_MappingParameter = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_MappingParameter);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NewStatementPart = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_NewStatementPart);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OCLExpression = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_OCLExpression);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OclElement = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_OclElement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Property = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_Property);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_Rule);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableDeclaration = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_VariableDeclaration);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableExp = TypeId.SET.getSpecializedId(QVTimperativeTables.CLSSid_VariableExp);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_AddStatement = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_AddStatement, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_AppendParameterBinding = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_AppendParameterBinding, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_GuardParameterBinding = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_GuardParameterBinding, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_LoopParameterBinding = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_LoopParameterBinding, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingCall = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingCall, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingParameterBinding = TypeId.BAG.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingParameterBinding, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_LoopVariable = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_LoopVariable, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingParameterBinding = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingParameterBinding, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingStatement = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingStatement, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OCLExpression = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_OCLExpression, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_1, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Statement = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_Statement, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_TypedModel, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_VariableStatement = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_VariableStatement, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_MappingParameter = TypeId.SEQUENCE.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingParameter, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_EntryPoint = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_EntryPoint, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_MappingParameter = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_MappingParameter, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NewStatementPart = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_NewStatementPart, QVTimperativeTables.BOOLid_false, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OCLExpression = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_OCLExpression, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OclElement = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_OclElement, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Property = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_Property, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_Rule, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableDeclaration = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_VariableDeclaration, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_VariableExp = TypeId.SET.getSpecializedCollectionTypeId(QVTimperativeTables.CLSSid_VariableExp, QVTimperativeTables.BOOLid_true, QVTimperativeTables.INTid_0, QVTimperativeTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull TupleTypeId TUPLid_ = IdManager.getTupleTypeId("Tuple", QVTimperativeTables.PARTid_, QVTimperativeTables.PARTid__0);
 
 	/**
@@ -540,7 +548,7 @@
 			Fragments.init();
 		}
 
-		public static final @NonNull ParameterTypes _OrderedSet__String__ = TypeUtil.createParameterTypes(new ExecutorSpecializedType("OrderedSet", OCLstdlibTables.Types._String));
+		public static final @NonNull ParameterTypes _OrderedSet__String__ = TypeUtil.createParameterTypes(new ExecutorSpecializedType(TypeId.ORDERED_SET, OCLstdlibTables.Types._String));
 
 		static {
 			Init.initEnd();
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/model/QVTimperativeLibrary.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/model/QVTimperativeLibrary.java
index 1fb6467..d5add01 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/model/QVTimperativeLibrary.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/model/QVTimperativeLibrary.java
@@ -324,12 +324,14 @@
 			Class type;
 
 			ownedClasses = qvtruntimelibrary.getOwnedClasses();
-			ownedClasses.add(type = _Model);
+			type = _Model;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Transformation);
+			ownedClasses.add(type);
+			type = _Transformation;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
+			ownedClasses.add(type);
 		}
 
 		private void installCollectionTypes() {
@@ -338,36 +340,45 @@
 			CollectionType type;
 
 			ownedClasses = orphanage.getOwnedClasses();
-			ownedClasses.add(type = _Collection_OclElement);
+			type = _Collection_OclElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Model_objectsOfKind_TT);
+			ownedClasses.add(type);
+			type = _Collection_Model_objectsOfKind_TT;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Model_objectsOfType_TT);
+			ownedClasses.add(type);
+			type = _Collection_Model_objectsOfType_TT;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Set_OclElement_NullFree);
+			ownedClasses.add(type);
+			type = _Set_OclElement_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_OclElement);
-			ownedClasses.add(type = _Set_Model_objectsOfKind_TT_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Model_objectsOfKind_TT_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Model_objectsOfKind_TT);
-			ownedClasses.add(type = _Set_Model_objectsOfType_TT_NullFree);
+			ownedClasses.add(type);
+			type = _Set_Model_objectsOfType_TT_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Model_objectsOfType_TT);
-			ownedClasses.add(type = _UniqueCollection_OclElement);
+			ownedClasses.add(type);
+			type = _UniqueCollection_OclElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_OclElement);
-			ownedClasses.add(type = _UniqueCollection_Model_objectsOfKind_TT);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Model_objectsOfKind_TT;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Model_objectsOfKind_TT);
-			ownedClasses.add(type = _UniqueCollection_Model_objectsOfType_TT);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Model_objectsOfType_TT;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Model_objectsOfType_TT);
+			ownedClasses.add(type);
 		}
 
 		private final @NonNull Operation op_Model_allObjects = createOperation("allObjects", _Set_OclElement_NullFree, "org.eclipse.qvtd.runtime.library.model.AllObjectsOperation", org.eclipse.qvtd.runtime.library.model.AllObjectsOperation.INSTANCE);
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/QVTrelationTables.java b/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/QVTrelationTables.java
index 54b0245..f2b2915 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/QVTrelationTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/QVTrelationTables.java
@@ -25,12 +25,15 @@
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.ocl.pivot.PivotTables;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorProperty;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorType;
@@ -75,10 +78,15 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_false = TypeId.FALSE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_1 = TypeId.ONE_VALUE;
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTbase", null, QVTbasePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTrelation = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTrelation", null, QVTrelationPackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTtemplate = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTtemplate", null, QVTtemplatePackage.eINSTANCE);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Class = QVTrelationTables.PACKid_$metamodel$.getClassId("Class", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_CollectionType = QVTrelationTables.PACKid_$metamodel$.getClassId("CollectionType", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_DataType = QVTrelationTables.PACKid_$metamodel$.getClassId("DataType", 0);
@@ -107,30 +115,30 @@
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Variable = QVTrelationTables.PACKid_$metamodel$.getClassId("Variable", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_VariableDeclaration = QVTrelationTables.PACKid_$metamodel$.getClassId("VariableDeclaration", 0);
 	public static final /*@NonInvalid*/ @NonNull IntegerValue INT_0 = ValueUtil.integerValueOf("0");
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Class = TypeId.BAG.getSpecializedId(QVTrelationTables.CLSSid_Class);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Property = TypeId.BAG.getSpecializedId(QVTrelationTables.CLSSid_Property);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_Domain);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_DomainPattern = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_DomainPattern);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OCLExpression = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_OCLExpression);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OclElement = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_OclElement);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Pattern = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_Pattern);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Relation = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_Relation);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_RelationCallExp = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_RelationCallExp);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_TypedModel);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Variable = TypeId.ORDERED_SET.getSpecializedId(QVTrelationTables.CLSSid_Variable);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Package = TypeId.SEQUENCE.getSpecializedId(QVTrelationTables.CLSSid_Package);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_RelationDomain = TypeId.SEQUENCE.getSpecializedId(QVTrelationTables.CLSSid_RelationDomain);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Variable = TypeId.SEQUENCE.getSpecializedId(QVTrelationTables.CLSSid_Variable);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Class = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Class);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Key = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Key);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Package = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Package);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Pattern = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Pattern);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Property = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Property);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationCallExp = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_RelationCallExp);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationDomainAssignment = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_RelationDomainAssignment);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationImplementation = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_RelationImplementation);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Rule);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Variable = TypeId.SET.getSpecializedId(QVTrelationTables.CLSSid_Variable);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Class = TypeId.BAG.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Class, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Property = TypeId.BAG.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Property, QVTrelationTables.BOOLid_false, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Domain = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Domain, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_DomainPattern = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_DomainPattern, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OCLExpression = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_OCLExpression, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_1, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OclElement = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_OclElement, QVTrelationTables.BOOLid_false, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Pattern = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Pattern, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Relation = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Relation, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_RelationCallExp = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_RelationCallExp, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_TypedModel = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_TypedModel, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Variable = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Variable, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Package = TypeId.SEQUENCE.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Package, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_RelationDomain = TypeId.SEQUENCE.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_RelationDomain, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SEQ_CLSSid_Variable = TypeId.SEQUENCE.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Variable, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Class = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Class, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Key = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Key, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Package = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Package, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Pattern = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Pattern, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Property = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Property, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationCallExp = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_RelationCallExp, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationDomainAssignment = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_RelationDomainAssignment, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_RelationImplementation = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_RelationImplementation, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Rule = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Rule, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Variable = TypeId.SET.getSpecializedCollectionTypeId(QVTrelationTables.CLSSid_Variable, QVTrelationTables.BOOLid_true, QVTrelationTables.INTid_0, QVTrelationTables.UNLid__a);
 
 	/**
 	 *	The type parameters for templated types and operations.
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/QVTscheduleTables.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/QVTscheduleTables.java
index 4bb909a..bc03fff 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/QVTscheduleTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/QVTscheduleTables.java
@@ -26,14 +26,17 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.ocl.pivot.PivotTables;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.DataTypeId;
 import org.eclipse.ocl.pivot.ids.EnumerationId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumeration;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorEnumerationLiteral;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
@@ -77,10 +80,15 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_false = TypeId.FALSE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_1 = TypeId.ONE_VALUE;
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_emf_s_2002_s_Ecore = IdManager.getNsURIPackageId("http://www.eclipse.org/emf/2002/Ecore", null, EcorePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbase = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTbase", null, QVTbasePackage.eINSTANCE);
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2017/QVTschedule", null, QVTschedulePackage.eINSTANCE);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_BasicPartition = QVTscheduleTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule.getClassId("BasicPartition", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_CastEdge = QVTscheduleTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule.getClassId("CastEdge", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Class = QVTscheduleTables.PACKid_$metamodel$.getClassId("Class", 0);
@@ -134,51 +142,53 @@
 	public static final /*@NonInvalid*/ @NonNull EnumerationId ENUMid_ConnectionRole = QVTscheduleTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule.getEnumerationId("ConnectionRole");
 	public static final /*@NonInvalid*/ @NonNull EnumerationId ENUMid_Role = QVTscheduleTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule.getEnumerationId("Role");
 	public static final /*@NonInvalid*/ @NonNull EnumerationId ENUMid_Utility = QVTscheduleTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2017_s_QVTschedule.getEnumerationId("Utility");
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_BasicPartition = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_BasicPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CastEdge = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_CastEdge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_ClassDatum = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_ClassDatum);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CollectionClassDatum = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_CollectionClassDatum);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Connection = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_Connection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CyclicMappingRegion = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_CyclicMappingRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_DispatchRegion = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_DispatchRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_EdgeConnection = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_EdgeConnection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_KeyPartEdge = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_KeyPartEdge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_KeyedValueNode = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_KeyedValueNode);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingPartition = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_MappingPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingRegion = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_MappingRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NavigableEdge = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_NavigableEdge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NavigationEdge = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_NavigationEdge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Node = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_Node);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NodeConnection = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_NodeConnection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_OperationRegion = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_OperationRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Partition = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_Partition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_PropertyDatum = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_PropertyDatum);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_RootPartition = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_RootPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_VerdictRegion = TypeId.BAG.getSpecializedId(QVTscheduleTables.CLSSid_VerdictRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_BasicPartition = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_BasicPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_ClassDatum = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_ClassDatum);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Cluster = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_Cluster);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_CompleteClass = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_CompleteClass);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Connection = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_Connection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Edge = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_Edge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_EdgeConnection = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_EdgeConnection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingPartition = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_MappingPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingRegion = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_MappingRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Node = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_Node);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_NodeConnection = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_NodeConnection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OperationRegion = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_OperationRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_PropertyDatum = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_PropertyDatum);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Region = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_Region);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_RootRegion = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.CLSSid_RootRegion);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_DATAid_EInt = TypeId.ORDERED_SET.getSpecializedId(QVTscheduleTables.DATAid_EInt);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_BasicPartition = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_BasicPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_ConnectionEnd = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_ConnectionEnd);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Edge = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_Edge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_MappingPartition = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_MappingPartition);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NavigableEdge = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_NavigableEdge);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Node = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_Node);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NodeConnection = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_NodeConnection);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Partition = TypeId.SET.getSpecializedId(QVTscheduleTables.CLSSid_Partition);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_BasicPartition = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_BasicPartition, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CastEdge = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_CastEdge, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_ClassDatum = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_ClassDatum, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CollectionClassDatum = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_CollectionClassDatum, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Connection = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Connection, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_CyclicMappingRegion = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_CyclicMappingRegion, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_DispatchRegion = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_DispatchRegion, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_EdgeConnection = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_EdgeConnection, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_KeyPartEdge = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_KeyPartEdge, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_KeyedValueNode = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_KeyedValueNode, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingPartition = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingPartition, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_MappingRegion = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingRegion, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NavigableEdge = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NavigableEdge, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NavigationEdge = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NavigationEdge, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Node = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Node, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_NodeConnection = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NodeConnection, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_OperationRegion = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_OperationRegion, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_Partition = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Partition, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_PropertyDatum = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_PropertyDatum, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_RootPartition = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_RootPartition, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId BAG_CLSSid_VerdictRegion = TypeId.BAG.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_VerdictRegion, QVTscheduleTables.BOOLid_false, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_BasicPartition = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_BasicPartition, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_ClassDatum = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_ClassDatum, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Cluster = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Cluster, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_CompleteClass = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_CompleteClass, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Connection = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Connection, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Edge = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Edge, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_EdgeConnection = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_EdgeConnection, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingPartition = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingPartition, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingRegion = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingRegion, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_1, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_MappingRegion_0 = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingRegion, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Node = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Node, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_1, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_NodeConnection = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NodeConnection, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Node_0 = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Node, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_OperationRegion = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_OperationRegion, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_PropertyDatum = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_PropertyDatum, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_Region = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Region, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_CLSSid_RootRegion = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_RootRegion, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId ORD_DATAid_EInt = TypeId.ORDERED_SET.getSpecializedCollectionTypeId(QVTscheduleTables.DATAid_EInt, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_BasicPartition = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_BasicPartition, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_ConnectionEnd = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_ConnectionEnd, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Edge = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Edge, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_MappingPartition = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_MappingPartition, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NavigableEdge = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NavigableEdge, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Node = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Node, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_NodeConnection = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_NodeConnection, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_Partition = TypeId.SET.getSpecializedCollectionTypeId(QVTscheduleTables.CLSSid_Partition, QVTscheduleTables.BOOLid_true, QVTscheduleTables.INTid_0, QVTscheduleTables.UNLid__a);
 
 	/**
 	 *	The type parameters for templated types and operations.
diff --git a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/QVTtemplateTables.java b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/QVTtemplateTables.java
index 8d06034..92d53ed 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/QVTtemplateTables.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/QVTtemplateTables.java
@@ -26,14 +26,17 @@
 import java.lang.String;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.ocl.pivot.PivotTables;
+import org.eclipse.ocl.pivot.ids.BooleanLiteralId;
 import org.eclipse.ocl.pivot.ids.ClassId;
 import org.eclipse.ocl.pivot.ids.CollectionTypeId;
 import org.eclipse.ocl.pivot.ids.IdManager;
+import org.eclipse.ocl.pivot.ids.IntegerLiteralId;
 import org.eclipse.ocl.pivot.ids.NsURIPackageId;
 import org.eclipse.ocl.pivot.ids.RootPackageId;
 import org.eclipse.ocl.pivot.ids.TuplePartId;
 import org.eclipse.ocl.pivot.ids.TupleTypeId;
 import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.ids.UnlimitedNaturalLiteralId;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorProperty;
 import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorType;
@@ -74,8 +77,11 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
+	public static final /*@NonInvalid*/ @NonNull BooleanLiteralId BOOLid_true = TypeId.TRUE_VALUE;
+	public static final /*@NonInvalid*/ @NonNull IntegerLiteralId INTid_0 = TypeId.ZERO_VALUE;
 	public static final /*@NonInvalid*/ @NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
 	public static final /*@NonInvalid*/ @NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTtemplate = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2015/QVTtemplate", null, QVTtemplatePackage.eINSTANCE);
+	public static final /*@NonInvalid*/ @NonNull UnlimitedNaturalLiteralId UNLid__a = TypeId.UNLIMITED_VALUE;
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_BooleanType = QVTtemplateTables.PACKid_$metamodel$.getClassId("BooleanType", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_Class = QVTtemplateTables.PACKid_$metamodel$.getClassId("Class", 0);
 	public static final /*@NonInvalid*/ @NonNull ClassId CLSSid_CollectionTemplateExp = QVTtemplateTables.PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTtemplate.getClassId("CollectionTemplateExp", 0);
@@ -92,8 +98,8 @@
 	public static final /*@NonInvalid*/ @NonNull TuplePartId PARTid__0 = IdManager.getTuplePartId(1, "status", TypeId.BOOLEAN);
 	public static final /*@NonInvalid*/ @NonNull String STR__32_must_32_conform_32_to_32 = " must conform to ";
 	public static final /*@NonInvalid*/ @NonNull String STR__32_or_32_vice_m_versa = " or vice-versa";
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OCLExpression = TypeId.SET.getSpecializedId(QVTtemplateTables.CLSSid_OCLExpression);
-	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_PropertyTemplateItem = TypeId.SET.getSpecializedId(QVTtemplateTables.CLSSid_PropertyTemplateItem);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_OCLExpression = TypeId.SET.getSpecializedCollectionTypeId(QVTtemplateTables.CLSSid_OCLExpression, QVTtemplateTables.BOOLid_true, QVTtemplateTables.INTid_0, QVTtemplateTables.UNLid__a);
+	public static final /*@NonInvalid*/ @NonNull CollectionTypeId SET_CLSSid_PropertyTemplateItem = TypeId.SET.getSpecializedCollectionTypeId(QVTtemplateTables.CLSSid_PropertyTemplateItem, QVTtemplateTables.BOOLid_true, QVTtemplateTables.INTid_0, QVTtemplateTables.UNLid__a);
 	public static final /*@NonInvalid*/ @NonNull TupleTypeId TUPLid_ = IdManager.getTupleTypeId("Tuple", QVTtemplateTables.PARTid_, QVTtemplateTables.PARTid__0);
 
 	/**
diff --git a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/util/QVTtemplateAdapterFactory.java b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/util/QVTtemplateAdapterFactory.java
index c60a09b..91ab7e3 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/util/QVTtemplateAdapterFactory.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/util/QVTtemplateAdapterFactory.java
@@ -83,51 +83,51 @@
 	 */
 	protected QVTtemplateSwitch<@Nullable Adapter> modelSwitch =
 			new QVTtemplateSwitch<@Nullable Adapter>() {
-			@Override
-			public Adapter caseCollectionTemplateExp(CollectionTemplateExp object) {
-				return createCollectionTemplateExpAdapter();
-			}
-			@Override
-			public Adapter caseObjectTemplateExp(ObjectTemplateExp object) {
-				return createObjectTemplateExpAdapter();
-			}
-			@Override
-			public Adapter casePropertyTemplateItem(PropertyTemplateItem object) {
-				return createPropertyTemplateItemAdapter();
-			}
-			@Override
-			public Adapter caseTemplateExp(TemplateExp object) {
-				return createTemplateExpAdapter();
-			}
-			@Override
-			public Adapter caseElement(Element object) {
-				return createElementAdapter();
-			}
-			@Override
-			public Adapter caseNamedElement(NamedElement object) {
-				return createNamedElementAdapter();
-			}
-			@Override
-			public Adapter caseTypedElement(TypedElement object) {
-				return createTypedElementAdapter();
-			}
-			@Override
-			public Adapter caseOCLExpression(OCLExpression object) {
-				return createOCLExpressionAdapter();
-			}
-			@Override
-			public Adapter caseLiteralExp(LiteralExp object) {
-				return createLiteralExpAdapter();
-			}
-			@Override
-			public Adapter caseReferringElement(ReferringElement object) {
-				return createReferringElementAdapter();
-			}
-			@Override
-			public Adapter defaultCase(EObject object) {
-				return createEObjectAdapter();
-			}
-		};
+		@Override
+		public Adapter caseCollectionTemplateExp(CollectionTemplateExp object) {
+			return createCollectionTemplateExpAdapter();
+		}
+		@Override
+		public Adapter caseObjectTemplateExp(ObjectTemplateExp object) {
+			return createObjectTemplateExpAdapter();
+		}
+		@Override
+		public Adapter casePropertyTemplateItem(PropertyTemplateItem object) {
+			return createPropertyTemplateItemAdapter();
+		}
+		@Override
+		public Adapter caseTemplateExp(TemplateExp object) {
+			return createTemplateExpAdapter();
+		}
+		@Override
+		public Adapter caseElement(Element object) {
+			return createElementAdapter();
+		}
+		@Override
+		public Adapter caseNamedElement(NamedElement object) {
+			return createNamedElementAdapter();
+		}
+		@Override
+		public Adapter caseTypedElement(TypedElement object) {
+			return createTypedElementAdapter();
+		}
+		@Override
+		public Adapter caseOCLExpression(OCLExpression object) {
+			return createOCLExpressionAdapter();
+		}
+		@Override
+		public Adapter caseLiteralExp(LiteralExp object) {
+			return createLiteralExpAdapter();
+		}
+		@Override
+		public Adapter caseReferringElement(ReferringElement object) {
+			return createReferringElementAdapter();
+		}
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
 
 	/**
 	 * Creates an adapter for the <code>target</code>.
diff --git a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/model/QVTruntimeLibrary.java b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/model/QVTruntimeLibrary.java
index f45ab2c..689d8e7 100644
--- a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/model/QVTruntimeLibrary.java
+++ b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/model/QVTruntimeLibrary.java
@@ -372,21 +372,26 @@
 			Class type;
 
 			ownedClasses = ocl.getOwnedClasses();
-			ownedClasses.add(type = _OclElement_1);
+			type = _OclElement_1;
+			ownedClasses.add(type);
 
 			ownedClasses = qvtruntimelibrary.getOwnedClasses();
-			ownedClasses.add(type = _Extent);
+			type = _Extent;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Model);
+			ownedClasses.add(type);
+			type = _Model;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _PseudoOperations);
+			ownedClasses.add(type);
+			type = _PseudoOperations;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Transformation);
+			ownedClasses.add(type);
+			type = _Transformation;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
+			ownedClasses.add(type);
 		}
 
 		private void installCollectionTypes() {
@@ -395,65 +400,84 @@
 			CollectionType type;
 
 			ownedClasses = orphanage.getOwnedClasses();
-			ownedClasses.add(type = _Collection_OclElement);
+			type = _Collection_OclElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_CollectionItem);
+			ownedClasses.add(type);
+			type = _Collection_CollectionItem;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Element);
+			ownedClasses.add(type);
+			type = _Collection_Element;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_Property);
+			ownedClasses.add(type);
+			type = _Collection_Property;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_TupleLiteralPart);
+			ownedClasses.add(type);
+			type = _Collection_TupleLiteralPart;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _Collection_PseudoOperations_loop_E);
+			ownedClasses.add(type);
+			type = _Collection_PseudoOperations_loop_E;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OclElement);
-			ownedClasses.add(type = _OrderedCollection_OclElement);
+			ownedClasses.add(type);
+			type = _OrderedCollection_OclElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_OclElement);
-			ownedClasses.add(type = _OrderedSet_OclElement_NullFree);
+			ownedClasses.add(type);
+			type = _OrderedSet_OclElement_NullFree;
 			type.setIsNullFree(true);
 			superClasses = type.getSuperClasses();
 			superClasses.add(_OrderedCollection_OclElement);
 			superClasses.add(_UniqueCollection_OclElement);
-			ownedClasses.add(type = _Set_CollectionItem);
+			ownedClasses.add(type);
+			type = _Set_CollectionItem;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_CollectionItem);
-			ownedClasses.add(type = _Set_Element);
+			ownedClasses.add(type);
+			type = _Set_Element;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Element);
-			ownedClasses.add(type = _Set_Property);
+			ownedClasses.add(type);
+			type = _Set_Property;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_Property);
-			ownedClasses.add(type = _Set_TupleLiteralPart);
+			ownedClasses.add(type);
+			type = _Set_TupleLiteralPart;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_TupleLiteralPart);
-			ownedClasses.add(type = _Set_PseudoOperations_loop_E);
+			ownedClasses.add(type);
+			type = _Set_PseudoOperations_loop_E;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_UniqueCollection_PseudoOperations_loop_E);
-			ownedClasses.add(type = _UniqueCollection_OclElement);
+			ownedClasses.add(type);
+			type = _UniqueCollection_OclElement;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_OclElement);
-			ownedClasses.add(type = _UniqueCollection_CollectionItem);
+			ownedClasses.add(type);
+			type = _UniqueCollection_CollectionItem;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_CollectionItem);
-			ownedClasses.add(type = _UniqueCollection_Element);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Element;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Element);
-			ownedClasses.add(type = _UniqueCollection_Property);
+			ownedClasses.add(type);
+			type = _UniqueCollection_Property;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_Property);
-			ownedClasses.add(type = _UniqueCollection_TupleLiteralPart);
+			ownedClasses.add(type);
+			type = _UniqueCollection_TupleLiteralPart;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_TupleLiteralPart);
-			ownedClasses.add(type = _UniqueCollection_PseudoOperations_loop_E);
+			ownedClasses.add(type);
+			type = _UniqueCollection_PseudoOperations_loop_E;
 			superClasses = type.getSuperClasses();
 			superClasses.add(_Collection_PseudoOperations_loop_E);
+			ownedClasses.add(type);
 		}
 
 		private final @NonNull Operation op_PseudoOperations_collection = createOperation("collection", _CollectionLiteralExp, null, null, tp_PseudoOperations_collection_T);
diff --git a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryPackage.java b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryPackage.java
index 9307340..b2daf79 100644
--- a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryPackage.java
+++ b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryPackage.java
@@ -295,11 +295,11 @@
 	protected void createEmofAnnotations() {
 		String source = "http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName"; //$NON-NLS-1$
 		addAnnotation
-		(getExtent_Elements(),
-			source,
-			new String[] {
-				"body", "extent" //$NON-NLS-1$ //$NON-NLS-2$
-		});
+		  (getExtent_Elements(),
+		   source,
+		   new String[] {
+			   "body", "extent" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
 	}
 
 	/**
diff --git a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryTables.java b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryTables.java
index 1907abc..1e6aee6 100644
--- a/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryTables.java
+++ b/plugins/org.eclipse.qvtd.runtime/emf-gen/org/eclipse/qvtd/runtime/qvtruntimelibrary/QVTruntimeLibraryTables.java
@@ -287,8 +287,13 @@
 		private static final @NonNull ExecutorOperation @NonNull [] _Extent__OclElement = {
 			OCLstdlibTables.Operations._OclElement__allInstances /* allInstances(Integer[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclBase /* oclBase() */,
+			OCLstdlibTables.Operations._OclElement__1_oclBase /* oclBase(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */,
 			OCLstdlibTables.Operations._OclElement__oclContents /* oclContents() */,
+			OCLstdlibTables.Operations._OclElement__oclExtension /* oclExtension(OclStereotype[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclExtensions /* oclExtensions() */,
+			OCLstdlibTables.Operations._OclElement__1_oclExtensions /* oclExtensions(OclStereotype[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclIsModelKindOf /* oclIsModelKindOf(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclModelType /* oclModelType() */,
 			OCLstdlibTables.Operations._OclElement__oclModelTypes /* oclModelTypes() */
@@ -315,8 +320,13 @@
 		private static final @NonNull ExecutorOperation @NonNull [] _Model__OclElement = {
 			OCLstdlibTables.Operations._OclElement__allInstances /* allInstances(Integer[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclBase /* oclBase() */,
+			OCLstdlibTables.Operations._OclElement__1_oclBase /* oclBase(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */,
 			OCLstdlibTables.Operations._OclElement__oclContents /* oclContents() */,
+			OCLstdlibTables.Operations._OclElement__oclExtension /* oclExtension(OclStereotype[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclExtensions /* oclExtensions() */,
+			OCLstdlibTables.Operations._OclElement__1_oclExtensions /* oclExtensions(OclStereotype[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclIsModelKindOf /* oclIsModelKindOf(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclModelType /* oclModelType() */,
 			OCLstdlibTables.Operations._OclElement__oclModelTypes /* oclModelTypes() */
@@ -343,8 +353,13 @@
 		private static final @NonNull ExecutorOperation @NonNull [] _Transformation__OclElement = {
 			OCLstdlibTables.Operations._OclElement__allInstances /* allInstances(Integer[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclBase /* oclBase() */,
+			OCLstdlibTables.Operations._OclElement__1_oclBase /* oclBase(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */,
 			OCLstdlibTables.Operations._OclElement__oclContents /* oclContents() */,
+			OCLstdlibTables.Operations._OclElement__oclExtension /* oclExtension(OclStereotype[1]) */,
+			OCLstdlibTables.Operations._OclElement__0_oclExtensions /* oclExtensions() */,
+			OCLstdlibTables.Operations._OclElement__1_oclExtensions /* oclExtensions(OclStereotype[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclIsModelKindOf /* oclIsModelKindOf(OclType[1]) */,
 			OCLstdlibTables.Operations._OclElement__oclModelType /* oclModelType() */,
 			OCLstdlibTables.Operations._OclElement__oclModelTypes /* oclModelTypes() */