Simplify PropertyAssignment
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGEcoreContainerAssignment.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGEcoreContainerAssignment.java
deleted file mode 100644
index a01af4b..0000000
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGEcoreContainerAssignment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2015, 2018 Willink Transformations and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v20.html
- *
- * Contributors:
- *   E.D.Willink - Initial API and implementation
- *
- * </copyright>
- */
-package org.eclipse.ocl.examples.codegen.cgmodel;
-
-import org.eclipse.emf.ecore.EStructuralFeature;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>CG Ecore Container Assignment</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment#getEStructuralFeature <em>EStructural Feature</em>}</li>
- * </ul>
- *
- * @see org.eclipse.ocl.examples.codegen.cgmodel.CGModelPackage#getCGEcoreContainerAssignment()
- * @generated
- */
-public interface CGEcoreContainerAssignment extends CGPropertyAssignment {
-	/**
-	 * Returns the value of the '<em><b>EStructural Feature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>EStructural Feature</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>EStructural Feature</em>' reference.
-	 * @see #setEStructuralFeature(EStructuralFeature)
-	 * @see org.eclipse.ocl.examples.codegen.cgmodel.CGModelPackage#getCGEcoreContainerAssignment_EStructuralFeature()
-	 * @generated
-	 */
-	EStructuralFeature getEStructuralFeature();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment#getEStructuralFeature <em>EStructural Feature</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>EStructural Feature</em>' reference.
-	 * @see #getEStructuralFeature()
-	 * @generated
-	 */
-	void setEStructuralFeature(EStructuralFeature value);
-
-} // CGEcoreContainerAssignment
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelFactory.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelFactory.java
index ff17951..8dc7926 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelFactory.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelFactory.java
@@ -419,15 +419,6 @@
 	@NonNull CGEcoreClassShadowExp createCGEcoreClassShadowExp();
 
 	/**
-	 * Returns a new object of class '<em>CG Ecore Container Assignment</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>CG Ecore Container Assignment</em>'.
-	 * @generated
-	 */
-	@NonNull CGEcoreContainerAssignment createCGEcoreContainerAssignment();
-
-	/**
 	 * Returns a new object of class '<em>CG Ecore Property Assignment</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelPackage.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelPackage.java
index 61480fd..2853423 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelPackage.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/CGModelPackage.java
@@ -1064,27 +1064,6 @@
 	EReference getCGEcoreClassShadowExp_EClass();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment <em>CG Ecore Container Assignment</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>CG Ecore Container Assignment</em>'.
-	 * @see org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment
-	 * @generated
-	 */
-	EClass getCGEcoreContainerAssignment();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment#getEStructuralFeature <em>EStructural Feature</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>EStructural Feature</em>'.
-	 * @see org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment#getEStructuralFeature()
-	 * @see #getCGEcoreContainerAssignment()
-	 * @generated
-	 */
-	EReference getCGEcoreContainerAssignment_EStructuralFeature();
-
-	/**
 	 * Returns the meta object for class '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyAssignment <em>CG Ecore Property Assignment</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -3452,24 +3431,6 @@
 		EReference CG_ECORE_CLASS_SHADOW_EXP__ECLASS = eINSTANCE.getCGEcoreClassShadowExp_EClass();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.ocl.examples.codegen.cgmodel.impl.CGEcoreContainerAssignmentImpl <em>CG Ecore Container Assignment</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.ocl.examples.codegen.cgmodel.impl.CGEcoreContainerAssignmentImpl
-		 * @see org.eclipse.ocl.examples.codegen.cgmodel.impl.CGModelPackageImpl#getCGEcoreContainerAssignment()
-		 * @generated
-		 */
-		EClass CG_ECORE_CONTAINER_ASSIGNMENT = eINSTANCE.getCGEcoreContainerAssignment();
-
-		/**
-		 * The meta object literal for the '<em><b>EStructural Feature</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference CG_ECORE_CONTAINER_ASSIGNMENT__ESTRUCTURAL_FEATURE = eINSTANCE.getCGEcoreContainerAssignment_EStructuralFeature();
-
-		/**
 		 * The meta object literal for the '{@link org.eclipse.ocl.examples.codegen.cgmodel.impl.CGEcorePropertyAssignmentImpl <em>CG Ecore Property Assignment</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGEcoreContainerAssignmentImpl.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGEcoreContainerAssignmentImpl.java
deleted file mode 100644
index 5ed3f8e..0000000
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGEcoreContainerAssignmentImpl.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2015, 2019 Willink Transformations and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v20.html
- *
- * Contributors:
- *   E.D.Willink - Initial API and implementation
- *
- * </copyright>
- */
-package org.eclipse.ocl.examples.codegen.cgmodel.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGModelPackage;
-import org.eclipse.ocl.examples.codegen.cgmodel.util.CGModelVisitor;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>CG Ecore Container Assignment</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.ocl.examples.codegen.cgmodel.impl.CGEcoreContainerAssignmentImpl#getEStructuralFeature <em>EStructural Feature</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class CGEcoreContainerAssignmentImpl extends CGPropertyAssignmentImpl implements CGEcoreContainerAssignment {
-	/**
-	 * The number of structural features of the '<em>CG Ecore Container Assignment</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int CG_ECORE_CONTAINER_ASSIGNMENT_FEATURE_COUNT = CGPropertyAssignmentImpl.CG_PROPERTY_ASSIGNMENT_FEATURE_COUNT + 1;
-	/**
-	 * The cached value of the '{@link #getEStructuralFeature() <em>EStructural Feature</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getEStructuralFeature()
-	 * @generated
-	 * @ordered
-	 */
-	protected EStructuralFeature eStructuralFeature;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected CGEcoreContainerAssignmentImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return CGModelPackage.Literals.CG_ECORE_CONTAINER_ASSIGNMENT;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EStructuralFeature getEStructuralFeature() {
-		return eStructuralFeature;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setEStructuralFeature(EStructuralFeature newEStructuralFeature) {
-		EStructuralFeature oldEStructuralFeature = eStructuralFeature;
-		eStructuralFeature = newEStructuralFeature;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, 9, oldEStructuralFeature, eStructuralFeature));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case 9:
-				return getEStructuralFeature();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case 9:
-				setEStructuralFeature((EStructuralFeature)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case 9:
-				setEStructuralFeature((EStructuralFeature)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case 9:
-				return eStructuralFeature != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 * @generated
-	 */
-	@SuppressWarnings("unchecked")
-	@Override
-	public <R> R accept(@NonNull CGModelVisitor<R> visitor) {
-		return visitor.visitCGEcoreContainerAssignment(this);
-	}
-
-} //CGEcoreContainerAssignmentImpl
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelFactoryImpl.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelFactoryImpl.java
index e4b9933..b4ca1c7 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelFactoryImpl.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelFactoryImpl.java
@@ -23,7 +23,6 @@
 import org.eclipse.ocl.examples.codegen.calling.ClassCallingConvention;
 import org.eclipse.ocl.examples.codegen.calling.OperationCallingConvention;
 import org.eclipse.ocl.examples.codegen.calling.PropertyCallingConvention;
-import org.eclipse.ocl.examples.codegen.cgmodel.*;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGAccumulator;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGAssertNonNullExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGBoolean;
@@ -40,7 +39,6 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGConstrainedProperty;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGConstraint;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreClassShadowExp;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreDataTypeShadowExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreOperation;
@@ -181,71 +179,70 @@
 			case 17: return createCGConstrainedProperty();
 			case 18: return createCGConstraint();
 			case 19: return createCGEcoreClassShadowExp();
-			case 20: return createCGEcoreContainerAssignment();
-			case 21: return createCGEcorePropertyAssignment();
-			case 22: return createCGEcoreDataTypeShadowExp();
-			case 23: return createCGEcoreExp();
-			case 24: return createCGEcoreOperation();
-			case 25: return createCGEcoreOperationCallExp();
-			case 26: return createCGEcoreOppositePropertyCallExp();
-			case 27: return createCGEcorePropertyCallExp();
-			case 29: return createCGElementId();
-			case 30: return createCGExecutorCompositionProperty();
-			case 31: return createCGExecutorNavigationProperty();
-			case 32: return createCGExecutorOppositeProperty();
-			case 33: return createCGExecutorOppositePropertyCallExp();
-			case 35: return createCGExecutorPropertyCallExp();
-			case 36: return createCGExecutorShadowPart();
-			case 37: return createCGExecutorType();
-			case 38: return createCGFinalVariable();
-			case 39: return createCGForeignOperationCallExp();
-			case 40: return createCGForeignProperty();
-			case 41: return createCGForeignPropertyCallExp();
-			case 42: return createCGGuardExp();
-			case 43: return createCGIfExp();
-			case 44: return createCGIndexExp();
-			case 45: return createCGInlinedOperation();
-			case 46: return createCGInteger();
-			case 47: return createCGInvalid();
-			case 48: return createCGIsEqualExp();
-			case 49: return createCGIsEqual2Exp();
-			case 50: return createCGIsInvalidExp();
-			case 51: return createCGIsKindOfExp();
-			case 52: return createCGIsUndefinedExp();
-			case 54: return createCGIterator();
-			case 55: return createCGLetExp();
-			case 56: return createCGLibraryIterateCallExp();
-			case 57: return createCGLibraryIterationCallExp();
-			case 58: return createCGLibraryOperation();
-			case 59: return createCGLibraryOperationCallExp();
-			case 60: return createCGLibraryPropertyCallExp();
-			case 61: return createCGLocalVariable();
-			case 62: return createCGMapExp();
-			case 63: return createCGMapPart();
-			case 64: return createCGModel();
-			case 66: return createCGNativeOperation();
-			case 67: return createCGNativeOperationCallExp();
-			case 68: return createCGNativeProperty();
-			case 69: return createCGNativePropertyCallExp();
-			case 71: return createCGNull();
-			case 76: return createCGPackage();
-			case 77: return createCGParameter();
-			case 79: return createCGPropertyAssignment();
-			case 81: return createCGReal();
-			case 82: return createCGSequence();
-			case 83: return createCGSettableVariable();
-			case 85: return createCGShadowPart();
-			case 87: return createCGString();
-			case 88: return createCGTemplateParameterExp();
-			case 89: return createCGThrowExp();
-			case 90: return createCGTupleExp();
-			case 91: return createCGTuplePart();
-			case 92: return createCGTuplePartCallExp();
-			case 93: return createCGTypeId();
-			case 94: return createCGTypeExp();
-			case 96: return createCGUnboxExp();
-			case 97: return createCGUnlimited();
-			case 100: return createCGVariableExp();
+			case 20: return createCGEcorePropertyAssignment();
+			case 21: return createCGEcoreDataTypeShadowExp();
+			case 22: return createCGEcoreExp();
+			case 23: return createCGEcoreOperation();
+			case 24: return createCGEcoreOperationCallExp();
+			case 25: return createCGEcoreOppositePropertyCallExp();
+			case 26: return createCGEcorePropertyCallExp();
+			case 28: return createCGElementId();
+			case 29: return createCGExecutorCompositionProperty();
+			case 30: return createCGExecutorNavigationProperty();
+			case 31: return createCGExecutorOppositeProperty();
+			case 32: return createCGExecutorOppositePropertyCallExp();
+			case 34: return createCGExecutorPropertyCallExp();
+			case 35: return createCGExecutorShadowPart();
+			case 36: return createCGExecutorType();
+			case 37: return createCGFinalVariable();
+			case 38: return createCGForeignOperationCallExp();
+			case 39: return createCGForeignProperty();
+			case 40: return createCGForeignPropertyCallExp();
+			case 41: return createCGGuardExp();
+			case 42: return createCGIfExp();
+			case 43: return createCGIndexExp();
+			case 44: return createCGInlinedOperation();
+			case 45: return createCGInteger();
+			case 46: return createCGInvalid();
+			case 47: return createCGIsEqualExp();
+			case 48: return createCGIsEqual2Exp();
+			case 49: return createCGIsInvalidExp();
+			case 50: return createCGIsKindOfExp();
+			case 51: return createCGIsUndefinedExp();
+			case 53: return createCGIterator();
+			case 54: return createCGLetExp();
+			case 55: return createCGLibraryIterateCallExp();
+			case 56: return createCGLibraryIterationCallExp();
+			case 57: return createCGLibraryOperation();
+			case 58: return createCGLibraryOperationCallExp();
+			case 59: return createCGLibraryPropertyCallExp();
+			case 60: return createCGLocalVariable();
+			case 61: return createCGMapExp();
+			case 62: return createCGMapPart();
+			case 63: return createCGModel();
+			case 65: return createCGNativeOperation();
+			case 66: return createCGNativeOperationCallExp();
+			case 67: return createCGNativeProperty();
+			case 68: return createCGNativePropertyCallExp();
+			case 70: return createCGNull();
+			case 75: return createCGPackage();
+			case 76: return createCGParameter();
+			case 78: return createCGPropertyAssignment();
+			case 80: return createCGReal();
+			case 81: return createCGSequence();
+			case 82: return createCGSettableVariable();
+			case 84: return createCGShadowPart();
+			case 86: return createCGString();
+			case 87: return createCGTemplateParameterExp();
+			case 88: return createCGThrowExp();
+			case 89: return createCGTupleExp();
+			case 90: return createCGTuplePart();
+			case 91: return createCGTuplePartCallExp();
+			case 92: return createCGTypeId();
+			case 93: return createCGTypeExp();
+			case 95: return createCGUnboxExp();
+			case 96: return createCGUnlimited();
+			case 99: return createCGVariableExp();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -259,43 +256,43 @@
 	@Override
 	public Object createFromString(EDataType eDataType, String initialValue) {
 		switch (eDataType.getClassifierID()) {
-			case 102:
+			case 101:
 				return createClassCallingConventionFromString(eDataType, initialValue);
-			case 103:
+			case 102:
 				return createElementFromString(eDataType, initialValue);
-			case 104:
+			case 103:
 				return createElementIdFromString(eDataType, initialValue);
-			case 105:
+			case 104:
 				return createEnumerationLiteralIdFromString(eDataType, initialValue);
-			case 106:
+			case 105:
 				return createIterationFromString(eDataType, initialValue);
-			case 107:
+			case 106:
 				return createFieldFromString(eDataType, initialValue);
-			case 108:
+			case 107:
 				return createLibraryIterationFromString(eDataType, initialValue);
-			case 109:
+			case 108:
 				return createLibraryOperationFromString(eDataType, initialValue);
-			case 110:
+			case 109:
 				return createLibraryPropertyFromString(eDataType, initialValue);
-			case 111:
+			case 110:
 				return createMethodFromString(eDataType, initialValue);
-			case 113:
+			case 112:
 				return createNumberFromString(eDataType, initialValue);
-			case 114:
+			case 113:
 				return createObjectFromString(eDataType, initialValue);
-			case 115:
+			case 114:
 				return createOperationFromString(eDataType, initialValue);
-			case 116:
+			case 115:
 				return createOperationCallingConventionFromString(eDataType, initialValue);
-			case 117:
+			case 116:
 				return createPropertyFromString(eDataType, initialValue);
-			case 118:
+			case 117:
 				return createPropertyCallingConventionFromString(eDataType, initialValue);
-			case 119:
+			case 118:
 				return createTuplePartIdFromString(eDataType, initialValue);
-			case 120:
+			case 119:
 				return createTypeFromString(eDataType, initialValue);
-			case 121:
+			case 120:
 				return createTypeIdFromString(eDataType, initialValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
@@ -310,43 +307,43 @@
 	@Override
 	public String convertToString(EDataType eDataType, Object instanceValue) {
 		switch (eDataType.getClassifierID()) {
-			case 102:
+			case 101:
 				return convertClassCallingConventionToString(eDataType, instanceValue);
-			case 103:
+			case 102:
 				return convertElementToString(eDataType, instanceValue);
-			case 104:
+			case 103:
 				return convertElementIdToString(eDataType, instanceValue);
-			case 105:
+			case 104:
 				return convertEnumerationLiteralIdToString(eDataType, instanceValue);
-			case 106:
+			case 105:
 				return convertIterationToString(eDataType, instanceValue);
-			case 107:
+			case 106:
 				return convertFieldToString(eDataType, instanceValue);
-			case 108:
+			case 107:
 				return convertLibraryIterationToString(eDataType, instanceValue);
-			case 109:
+			case 108:
 				return convertLibraryOperationToString(eDataType, instanceValue);
-			case 110:
+			case 109:
 				return convertLibraryPropertyToString(eDataType, instanceValue);
-			case 111:
+			case 110:
 				return convertMethodToString(eDataType, instanceValue);
-			case 113:
+			case 112:
 				return convertNumberToString(eDataType, instanceValue);
-			case 114:
+			case 113:
 				return convertObjectToString(eDataType, instanceValue);
-			case 115:
+			case 114:
 				return convertOperationToString(eDataType, instanceValue);
-			case 116:
+			case 115:
 				return convertOperationCallingConventionToString(eDataType, instanceValue);
-			case 117:
+			case 116:
 				return convertPropertyToString(eDataType, instanceValue);
-			case 118:
+			case 117:
 				return convertPropertyCallingConventionToString(eDataType, instanceValue);
-			case 119:
+			case 118:
 				return convertTuplePartIdToString(eDataType, instanceValue);
-			case 120:
+			case 119:
 				return convertTypeToString(eDataType, instanceValue);
-			case 121:
+			case 120:
 				return convertTypeIdToString(eDataType, instanceValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
@@ -579,17 +576,6 @@
 	 * @generated
 	 */
 	@Override
-	public @NonNull CGEcoreContainerAssignment createCGEcoreContainerAssignment() {
-		CGEcoreContainerAssignmentImpl cgEcoreContainerAssignment = new CGEcoreContainerAssignmentImpl();
-		return cgEcoreContainerAssignment;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public @NonNull CGEcorePropertyAssignment createCGEcorePropertyAssignment() {
 		CGEcorePropertyAssignmentImpl cgEcorePropertyAssignment = new CGEcorePropertyAssignmentImpl();
 		return cgEcorePropertyAssignment;
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
index 6a05f72..de5166c 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
@@ -42,7 +42,6 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGConstrainedProperty;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGConstraint;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreClassShadowExp;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreDataTypeShadowExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreOperation;
@@ -334,13 +333,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass cgEcoreContainerAssignmentEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	private EClass cgEcorePropertyAssignmentEClass = null;
 
 	/**
@@ -1658,26 +1650,6 @@
 	 * @generated
 	 */
 	@Override
-	public EClass getCGEcoreContainerAssignment() {
-		return cgEcoreContainerAssignmentEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EReference getCGEcoreContainerAssignment_EStructuralFeature() {
-		return (EReference)cgEcoreContainerAssignmentEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public EClass getCGEcorePropertyAssignment() {
 		return cgEcorePropertyAssignmentEClass;
 	}
@@ -3557,283 +3529,280 @@
 		cgEcoreClassShadowExpEClass = createEClass(19);
 		createEReference(cgEcoreClassShadowExpEClass, 7);
 
-		cgEcoreContainerAssignmentEClass = createEClass(20);
-		createEReference(cgEcoreContainerAssignmentEClass, 9);
-
-		cgEcorePropertyAssignmentEClass = createEClass(21);
+		cgEcorePropertyAssignmentEClass = createEClass(20);
 		createEReference(cgEcorePropertyAssignmentEClass, 9);
 
-		cgEcoreDataTypeShadowExpEClass = createEClass(22);
+		cgEcoreDataTypeShadowExpEClass = createEClass(21);
 		createEReference(cgEcoreDataTypeShadowExpEClass, 7);
 
-		cgEcoreExpEClass = createEClass(23);
+		cgEcoreExpEClass = createEClass(22);
 		createEReference(cgEcoreExpEClass, 6);
 
-		cgEcoreOperationEClass = createEClass(24);
+		cgEcoreOperationEClass = createEClass(23);
 		createEReference(cgEcoreOperationEClass, 11);
 
-		cgEcoreOperationCallExpEClass = createEClass(25);
+		cgEcoreOperationCallExpEClass = createEClass(24);
 		createEReference(cgEcoreOperationCallExpEClass, 8);
 
-		cgEcoreOppositePropertyCallExpEClass = createEClass(26);
+		cgEcoreOppositePropertyCallExpEClass = createEClass(25);
 		createEReference(cgEcoreOppositePropertyCallExpEClass, 8);
 
-		cgEcorePropertyCallExpEClass = createEClass(27);
+		cgEcorePropertyCallExpEClass = createEClass(26);
 		createEReference(cgEcorePropertyCallExpEClass, 8);
 
-		cgElementEClass = createEClass(28);
+		cgElementEClass = createEClass(27);
 
-		cgElementIdEClass = createEClass(29);
+		cgElementIdEClass = createEClass(28);
 		createEAttribute(cgElementIdEClass, 5);
 
-		cgExecutorCompositionPropertyEClass = createEClass(30);
+		cgExecutorCompositionPropertyEClass = createEClass(29);
 
-		cgExecutorNavigationPropertyEClass = createEClass(31);
+		cgExecutorNavigationPropertyEClass = createEClass(30);
 
-		cgExecutorOppositePropertyEClass = createEClass(32);
+		cgExecutorOppositePropertyEClass = createEClass(31);
 
-		cgExecutorOppositePropertyCallExpEClass = createEClass(33);
+		cgExecutorOppositePropertyCallExpEClass = createEClass(32);
 		createEReference(cgExecutorOppositePropertyCallExpEClass, 8);
 
-		cgExecutorPropertyEClass = createEClass(34);
+		cgExecutorPropertyEClass = createEClass(33);
 		createEReference(cgExecutorPropertyEClass, 7);
 		createEReference(cgExecutorPropertyEClass, 8);
 
-		cgExecutorPropertyCallExpEClass = createEClass(35);
+		cgExecutorPropertyCallExpEClass = createEClass(34);
 		createEReference(cgExecutorPropertyCallExpEClass, 8);
 
-		cgExecutorShadowPartEClass = createEClass(36);
+		cgExecutorShadowPartEClass = createEClass(35);
 
-		cgExecutorTypeEClass = createEClass(37);
+		cgExecutorTypeEClass = createEClass(36);
 
-		cgFinalVariableEClass = createEClass(38);
+		cgFinalVariableEClass = createEClass(37);
 
-		cgForeignOperationCallExpEClass = createEClass(39);
+		cgForeignOperationCallExpEClass = createEClass(38);
 
-		cgForeignPropertyEClass = createEClass(40);
+		cgForeignPropertyEClass = createEClass(39);
 		createEReference(cgForeignPropertyEClass, 8);
 
-		cgForeignPropertyCallExpEClass = createEClass(41);
+		cgForeignPropertyCallExpEClass = createEClass(40);
 
-		cgGuardExpEClass = createEClass(42);
+		cgGuardExpEClass = createEClass(41);
 		createEAttribute(cgGuardExpEClass, 6);
 		createEAttribute(cgGuardExpEClass, 7);
 
-		cgIfExpEClass = createEClass(43);
+		cgIfExpEClass = createEClass(42);
 		createEReference(cgIfExpEClass, 5);
 		createEReference(cgIfExpEClass, 6);
 		createEReference(cgIfExpEClass, 7);
 
-		cgIndexExpEClass = createEClass(44);
+		cgIndexExpEClass = createEClass(43);
 		createEReference(cgIndexExpEClass, 6);
 
-		cgInlinedOperationEClass = createEClass(45);
+		cgInlinedOperationEClass = createEClass(44);
 
-		cgIntegerEClass = createEClass(46);
+		cgIntegerEClass = createEClass(45);
 
-		cgInvalidEClass = createEClass(47);
+		cgInvalidEClass = createEClass(46);
 		createEAttribute(cgInvalidEClass, 5);
 		createEAttribute(cgInvalidEClass, 6);
 
-		cgIsEqualExpEClass = createEClass(48);
+		cgIsEqualExpEClass = createEClass(47);
 		createEReference(cgIsEqualExpEClass, 6);
 		createEAttribute(cgIsEqualExpEClass, 7);
 
-		cgIsEqual2ExpEClass = createEClass(49);
+		cgIsEqual2ExpEClass = createEClass(48);
 		createEReference(cgIsEqual2ExpEClass, 6);
 
-		cgIsInvalidExpEClass = createEClass(50);
+		cgIsInvalidExpEClass = createEClass(49);
 
-		cgIsKindOfExpEClass = createEClass(51);
+		cgIsKindOfExpEClass = createEClass(50);
 		createEReference(cgIsKindOfExpEClass, 6);
 
-		cgIsUndefinedExpEClass = createEClass(52);
+		cgIsUndefinedExpEClass = createEClass(51);
 
-		cgIterationCallExpEClass = createEClass(53);
+		cgIterationCallExpEClass = createEClass(52);
 		createEReference(cgIterationCallExpEClass, 6);
 		createEReference(cgIterationCallExpEClass, 7);
 		createEReference(cgIterationCallExpEClass, 8);
 		createEReference(cgIterationCallExpEClass, 9);
 		createEAttribute(cgIterationCallExpEClass, 10);
 
-		cgIteratorEClass = createEClass(54);
+		cgIteratorEClass = createEClass(53);
 
-		cgLetExpEClass = createEClass(55);
+		cgLetExpEClass = createEClass(54);
 		createEReference(cgLetExpEClass, 5);
 		createEReference(cgLetExpEClass, 6);
 
-		cgLibraryIterateCallExpEClass = createEClass(56);
+		cgLibraryIterateCallExpEClass = createEClass(55);
 		createEReference(cgLibraryIterateCallExpEClass, 12);
 
-		cgLibraryIterationCallExpEClass = createEClass(57);
+		cgLibraryIterationCallExpEClass = createEClass(56);
 		createEAttribute(cgLibraryIterationCallExpEClass, 11);
 
-		cgLibraryOperationEClass = createEClass(58);
+		cgLibraryOperationEClass = createEClass(57);
 
-		cgLibraryOperationCallExpEClass = createEClass(59);
+		cgLibraryOperationCallExpEClass = createEClass(58);
 		createEAttribute(cgLibraryOperationCallExpEClass, 8);
 
-		cgLibraryPropertyCallExpEClass = createEClass(60);
+		cgLibraryPropertyCallExpEClass = createEClass(59);
 		createEAttribute(cgLibraryPropertyCallExpEClass, 8);
 
-		cgLocalVariableEClass = createEClass(61);
+		cgLocalVariableEClass = createEClass(60);
 
-		cgMapExpEClass = createEClass(62);
+		cgMapExpEClass = createEClass(61);
 		createEReference(cgMapExpEClass, 5);
 
-		cgMapPartEClass = createEClass(63);
+		cgMapPartEClass = createEClass(62);
 		createEReference(cgMapPartEClass, 5);
 		createEReference(cgMapPartEClass, 6);
 		createEReference(cgMapPartEClass, 7);
 
-		cgModelEClass = createEClass(64);
+		cgModelEClass = createEClass(63);
 		createEReference(cgModelEClass, 2);
 		createEReference(cgModelEClass, 3);
 
-		cgNamedElementEClass = createEClass(65);
+		cgNamedElementEClass = createEClass(64);
 		createEAttribute(cgNamedElementEClass, 0);
 		createEAttribute(cgNamedElementEClass, 1);
 
-		cgNativeOperationEClass = createEClass(66);
+		cgNativeOperationEClass = createEClass(65);
 
-		cgNativeOperationCallExpEClass = createEClass(67);
+		cgNativeOperationCallExpEClass = createEClass(66);
 		createEAttribute(cgNativeOperationCallExpEClass, 8);
 		createEAttribute(cgNativeOperationCallExpEClass, 9);
 		createEAttribute(cgNativeOperationCallExpEClass, 10);
 		createEReference(cgNativeOperationCallExpEClass, 11);
 
-		cgNativePropertyEClass = createEClass(68);
+		cgNativePropertyEClass = createEClass(67);
 
-		cgNativePropertyCallExpEClass = createEClass(69);
+		cgNativePropertyCallExpEClass = createEClass(68);
 		createEAttribute(cgNativePropertyCallExpEClass, 8);
 
-		cgNavigationCallExpEClass = createEClass(70);
+		cgNavigationCallExpEClass = createEClass(69);
 		createEReference(cgNavigationCallExpEClass, 6);
 		createEAttribute(cgNavigationCallExpEClass, 7);
 
-		cgNullEClass = createEClass(71);
+		cgNullEClass = createEClass(70);
 
-		cgNumberEClass = createEClass(72);
+		cgNumberEClass = createEClass(71);
 		createEAttribute(cgNumberEClass, 5);
 
-		cgOperationEClass = createEClass(73);
+		cgOperationEClass = createEClass(72);
 		createEReference(cgOperationEClass, 7);
 		createEReference(cgOperationEClass, 8);
 		createEReference(cgOperationEClass, 9);
 		createEAttribute(cgOperationEClass, 10);
 
-		cgOperationCallExpEClass = createEClass(74);
+		cgOperationCallExpEClass = createEClass(73);
 		createEReference(cgOperationCallExpEClass, 5);
 		createEReference(cgOperationCallExpEClass, 6);
 		createEAttribute(cgOperationCallExpEClass, 7);
 
-		cgOppositePropertyCallExpEClass = createEClass(75);
+		cgOppositePropertyCallExpEClass = createEClass(74);
 
-		cgPackageEClass = createEClass(76);
+		cgPackageEClass = createEClass(75);
 		createEReference(cgPackageEClass, 2);
 		createEReference(cgPackageEClass, 3);
 		createEReference(cgPackageEClass, 4);
 
-		cgParameterEClass = createEClass(77);
+		cgParameterEClass = createEClass(76);
 		createEReference(cgParameterEClass, 6);
 		createEAttribute(cgParameterEClass, 7);
 		createEAttribute(cgParameterEClass, 8);
 
-		cgPropertyEClass = createEClass(78);
+		cgPropertyEClass = createEClass(77);
 		createEAttribute(cgPropertyEClass, 5);
 		createEReference(cgPropertyEClass, 6);
 
-		cgPropertyAssignmentEClass = createEClass(79);
+		cgPropertyAssignmentEClass = createEClass(78);
 		createEReference(cgPropertyAssignmentEClass, 5);
 		createEReference(cgPropertyAssignmentEClass, 6);
 		createEReference(cgPropertyAssignmentEClass, 7);
 		createEAttribute(cgPropertyAssignmentEClass, 8);
 
-		cgPropertyCallExpEClass = createEClass(80);
+		cgPropertyCallExpEClass = createEClass(79);
 
-		cgRealEClass = createEClass(81);
+		cgRealEClass = createEClass(80);
 
-		cgSequenceEClass = createEClass(82);
+		cgSequenceEClass = createEClass(81);
 		createEReference(cgSequenceEClass, 5);
 
-		cgSettableVariableEClass = createEClass(83);
+		cgSettableVariableEClass = createEClass(82);
 
-		cgShadowExpEClass = createEClass(84);
+		cgShadowExpEClass = createEClass(83);
 		createEReference(cgShadowExpEClass, 5);
 		createEReference(cgShadowExpEClass, 6);
 
-		cgShadowPartEClass = createEClass(85);
+		cgShadowPartEClass = createEClass(84);
 		createEReference(cgShadowPartEClass, 5);
 		createEReference(cgShadowPartEClass, 6);
 		createEReference(cgShadowPartEClass, 7);
 
-		cgSourcedCallExpEClass = createEClass(86);
+		cgSourcedCallExpEClass = createEClass(85);
 		createEReference(cgSourcedCallExpEClass, 5);
 
-		cgStringEClass = createEClass(87);
+		cgStringEClass = createEClass(86);
 		createEAttribute(cgStringEClass, 5);
 
-		cgTemplateParameterExpEClass = createEClass(88);
+		cgTemplateParameterExpEClass = createEClass(87);
 		createEReference(cgTemplateParameterExpEClass, 5);
 		createEAttribute(cgTemplateParameterExpEClass, 6);
 
-		cgThrowExpEClass = createEClass(89);
+		cgThrowExpEClass = createEClass(88);
 
-		cgTupleExpEClass = createEClass(90);
+		cgTupleExpEClass = createEClass(89);
 		createEReference(cgTupleExpEClass, 5);
 
-		cgTuplePartEClass = createEClass(91);
+		cgTuplePartEClass = createEClass(90);
 		createEReference(cgTuplePartEClass, 5);
 		createEReference(cgTuplePartEClass, 6);
 
-		cgTuplePartCallExpEClass = createEClass(92);
+		cgTuplePartCallExpEClass = createEClass(91);
 		createEAttribute(cgTuplePartCallExpEClass, 8);
 
-		cgTypeIdEClass = createEClass(93);
+		cgTypeIdEClass = createEClass(92);
 
-		cgTypeExpEClass = createEClass(94);
+		cgTypeExpEClass = createEClass(93);
 		createEReference(cgTypeExpEClass, 5);
 
-		cgTypedElementEClass = createEClass(95);
+		cgTypedElementEClass = createEClass(94);
 		createEReference(cgTypedElementEClass, 2);
 		createEAttribute(cgTypedElementEClass, 3);
 
-		cgUnboxExpEClass = createEClass(96);
+		cgUnboxExpEClass = createEClass(95);
 
-		cgUnlimitedEClass = createEClass(97);
+		cgUnlimitedEClass = createEClass(96);
 
-		cgValuedElementEClass = createEClass(98);
+		cgValuedElementEClass = createEClass(97);
 		createEReference(cgValuedElementEClass, 4);
 
-		cgVariableEClass = createEClass(99);
+		cgVariableEClass = createEClass(98);
 		createEReference(cgVariableEClass, 5);
 
-		cgVariableExpEClass = createEClass(100);
+		cgVariableExpEClass = createEClass(99);
 		createEReference(cgVariableExpEClass, 5);
 
-		nameableEClass = createEClass(101);
+		nameableEClass = createEClass(100);
 
 		// Create data types
-		classCallingConventionEDataType = createEDataType(102);
-		elementEDataType = createEDataType(103);
-		elementIdEDataType = createEDataType(104);
-		enumerationLiteralIdEDataType = createEDataType(105);
-		iterationEDataType = createEDataType(106);
-		fieldEDataType = createEDataType(107);
-		libraryIterationEDataType = createEDataType(108);
-		libraryOperationEDataType = createEDataType(109);
-		libraryPropertyEDataType = createEDataType(110);
-		methodEDataType = createEDataType(111);
-		nameResolutionEDataType = createEDataType(112);
-		numberEDataType = createEDataType(113);
-		objectEDataType = createEDataType(114);
-		operationEDataType = createEDataType(115);
-		operationCallingConventionEDataType = createEDataType(116);
-		propertyEDataType = createEDataType(117);
-		propertyCallingConventionEDataType = createEDataType(118);
-		tuplePartIdEDataType = createEDataType(119);
-		typeEDataType = createEDataType(120);
-		typeIdEDataType = createEDataType(121);
+		classCallingConventionEDataType = createEDataType(101);
+		elementEDataType = createEDataType(102);
+		elementIdEDataType = createEDataType(103);
+		enumerationLiteralIdEDataType = createEDataType(104);
+		iterationEDataType = createEDataType(105);
+		fieldEDataType = createEDataType(106);
+		libraryIterationEDataType = createEDataType(107);
+		libraryOperationEDataType = createEDataType(108);
+		libraryPropertyEDataType = createEDataType(109);
+		methodEDataType = createEDataType(110);
+		nameResolutionEDataType = createEDataType(111);
+		numberEDataType = createEDataType(112);
+		objectEDataType = createEDataType(113);
+		operationEDataType = createEDataType(114);
+		operationCallingConventionEDataType = createEDataType(115);
+		propertyEDataType = createEDataType(116);
+		propertyCallingConventionEDataType = createEDataType(117);
+		tuplePartIdEDataType = createEDataType(118);
+		typeEDataType = createEDataType(119);
+		typeIdEDataType = createEDataType(120);
 	}
 
 	/**
@@ -3884,7 +3853,6 @@
 		cgConstrainedPropertyEClass.getESuperTypes().add(this.getCGBodiedProperty());
 		cgConstraintEClass.getESuperTypes().add(this.getCGCallable());
 		cgEcoreClassShadowExpEClass.getESuperTypes().add(this.getCGShadowExp());
-		cgEcoreContainerAssignmentEClass.getESuperTypes().add(this.getCGPropertyAssignment());
 		cgEcorePropertyAssignmentEClass.getESuperTypes().add(this.getCGPropertyAssignment());
 		cgEcoreDataTypeShadowExpEClass.getESuperTypes().add(this.getCGShadowExp());
 		cgEcoreExpEClass.getESuperTypes().add(this.getCGSourcedCallExp());
@@ -4032,9 +4000,6 @@
 		initEClass(cgEcoreClassShadowExpEClass, CGEcoreClassShadowExp.class, "CGEcoreClassShadowExp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getCGEcoreClassShadowExp_EClass(), ecorePackage.getEClass(), null, "eClass", null, 1, 1, CGEcoreClassShadowExp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(cgEcoreContainerAssignmentEClass, CGEcoreContainerAssignment.class, "CGEcoreContainerAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getCGEcoreContainerAssignment_EStructuralFeature(), ecorePackage.getEStructuralFeature(), null, "eStructuralFeature", null, 1, 1, CGEcoreContainerAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
 		initEClass(cgEcorePropertyAssignmentEClass, CGEcorePropertyAssignment.class, "CGEcorePropertyAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getCGEcorePropertyAssignment_EStructuralFeature(), ecorePackage.getEStructuralFeature(), null, "eStructuralFeature", null, 1, 1, CGEcorePropertyAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractExtendingCGModelVisitor.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractExtendingCGModelVisitor.java
index 37900d8..458463d 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractExtendingCGModelVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractExtendingCGModelVisitor.java
@@ -140,11 +140,6 @@
 	}
 
 	@Override
-	public R visitCGEcoreContainerAssignment(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreContainerAssignment object) {
-		return visitCGPropertyAssignment(object);
-	}
-
-	@Override
 	public R visitCGEcoreDataTypeShadowExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreDataTypeShadowExp object) {
 		return visitCGShadowExp(object);
 	}
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNonNullExtendingCGModelVisitor.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNonNullExtendingCGModelVisitor.java
index c3bb8b8..01f93c6 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNonNullExtendingCGModelVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNonNullExtendingCGModelVisitor.java
@@ -159,11 +159,6 @@
 	}
 
 	@Override
-	public @NonNull R visitCGEcoreContainerAssignment(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreContainerAssignment object) {
-		return visitCGPropertyAssignment(object);
-	}
-
-	@Override
 	public @NonNull R visitCGEcoreDataTypeShadowExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreDataTypeShadowExp object) {
 		return visitCGShadowExp(object);
 	}
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNullCGModelVisitor.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNullCGModelVisitor.java
index d61a1cc..be3a045 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNullCGModelVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/AbstractNullCGModelVisitor.java
@@ -140,11 +140,6 @@
 	}
 
 	@Override
-	public R visitCGEcoreContainerAssignment(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreContainerAssignment object) {
-		return null;
-	}
-
-	@Override
 	public R visitCGEcoreDataTypeShadowExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreDataTypeShadowExp object) {
 		return null;
 	}
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelAdapterFactory.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelAdapterFactory.java
index b0cda70..ecaef58 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelAdapterFactory.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelAdapterFactory.java
@@ -253,10 +253,6 @@
 				return createCGEcoreClassShadowExpAdapter();
 			}
 			@Override
-			public Adapter caseCGEcoreContainerAssignment(CGEcoreContainerAssignment object) {
-				return createCGEcoreContainerAssignmentAdapter();
-			}
-			@Override
 			public Adapter caseCGEcorePropertyAssignment(CGEcorePropertyAssignment object) {
 				return createCGEcorePropertyAssignmentAdapter();
 			}
@@ -1189,20 +1185,6 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment <em>CG Ecore Container Assignment</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment
-	 * @generated
-	 */
-	public Adapter createCGEcoreContainerAssignmentAdapter() {
-		return null;
-	}
-
-	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyAssignment <em>CG Ecore Property Assignment</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelSwitch.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelSwitch.java
index 0ec3dec..93177ec 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelSwitch.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelSwitch.java
@@ -395,17 +395,6 @@
 				return result;
 			}
 			case 20: {
-				CGEcoreContainerAssignment cgEcoreContainerAssignment = (CGEcoreContainerAssignment)theEObject;
-				T result = caseCGEcoreContainerAssignment(cgEcoreContainerAssignment);
-				if (result == null) result = caseCGPropertyAssignment(cgEcoreContainerAssignment);
-				if (result == null) result = caseCGValuedElement(cgEcoreContainerAssignment);
-				if (result == null) result = caseCGTypedElement(cgEcoreContainerAssignment);
-				if (result == null) result = caseCGNamedElement(cgEcoreContainerAssignment);
-				if (result == null) result = caseCGElement(cgEcoreContainerAssignment);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case 21: {
 				CGEcorePropertyAssignment cgEcorePropertyAssignment = (CGEcorePropertyAssignment)theEObject;
 				T result = caseCGEcorePropertyAssignment(cgEcorePropertyAssignment);
 				if (result == null) result = caseCGPropertyAssignment(cgEcorePropertyAssignment);
@@ -416,7 +405,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 22: {
+			case 21: {
 				CGEcoreDataTypeShadowExp cgEcoreDataTypeShadowExp = (CGEcoreDataTypeShadowExp)theEObject;
 				T result = caseCGEcoreDataTypeShadowExp(cgEcoreDataTypeShadowExp);
 				if (result == null) result = caseCGShadowExp(cgEcoreDataTypeShadowExp);
@@ -427,7 +416,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 23: {
+			case 22: {
 				CGEcoreExp cgEcoreExp = (CGEcoreExp)theEObject;
 				T result = caseCGEcoreExp(cgEcoreExp);
 				if (result == null) result = caseCGSourcedCallExp(cgEcoreExp);
@@ -439,7 +428,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 24: {
+			case 23: {
 				CGEcoreOperation cgEcoreOperation = (CGEcoreOperation)theEObject;
 				T result = caseCGEcoreOperation(cgEcoreOperation);
 				if (result == null) result = caseCGOperation(cgEcoreOperation);
@@ -451,7 +440,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 25: {
+			case 24: {
 				CGEcoreOperationCallExp cgEcoreOperationCallExp = (CGEcoreOperationCallExp)theEObject;
 				T result = caseCGEcoreOperationCallExp(cgEcoreOperationCallExp);
 				if (result == null) result = caseCGOperationCallExp(cgEcoreOperationCallExp);
@@ -463,7 +452,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 26: {
+			case 25: {
 				CGEcoreOppositePropertyCallExp cgEcoreOppositePropertyCallExp = (CGEcoreOppositePropertyCallExp)theEObject;
 				T result = caseCGEcoreOppositePropertyCallExp(cgEcoreOppositePropertyCallExp);
 				if (result == null) result = caseCGOppositePropertyCallExp(cgEcoreOppositePropertyCallExp);
@@ -477,7 +466,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 27: {
+			case 26: {
 				CGEcorePropertyCallExp cgEcorePropertyCallExp = (CGEcorePropertyCallExp)theEObject;
 				T result = caseCGEcorePropertyCallExp(cgEcorePropertyCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgEcorePropertyCallExp);
@@ -491,13 +480,13 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 28: {
+			case 27: {
 				CGElement cgElement = (CGElement)theEObject;
 				T result = caseCGElement(cgElement);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 29: {
+			case 28: {
 				CGElementId cgElementId = (CGElementId)theEObject;
 				T result = caseCGElementId(cgElementId);
 				if (result == null) result = caseCGConstant(cgElementId);
@@ -508,7 +497,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 30: {
+			case 29: {
 				CGExecutorCompositionProperty cgExecutorCompositionProperty = (CGExecutorCompositionProperty)theEObject;
 				T result = caseCGExecutorCompositionProperty(cgExecutorCompositionProperty);
 				if (result == null) result = caseCGExecutorProperty(cgExecutorCompositionProperty);
@@ -520,7 +509,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 31: {
+			case 30: {
 				CGExecutorNavigationProperty cgExecutorNavigationProperty = (CGExecutorNavigationProperty)theEObject;
 				T result = caseCGExecutorNavigationProperty(cgExecutorNavigationProperty);
 				if (result == null) result = caseCGExecutorProperty(cgExecutorNavigationProperty);
@@ -532,7 +521,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 32: {
+			case 31: {
 				CGExecutorOppositeProperty cgExecutorOppositeProperty = (CGExecutorOppositeProperty)theEObject;
 				T result = caseCGExecutorOppositeProperty(cgExecutorOppositeProperty);
 				if (result == null) result = caseCGExecutorProperty(cgExecutorOppositeProperty);
@@ -544,7 +533,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 33: {
+			case 32: {
 				CGExecutorOppositePropertyCallExp cgExecutorOppositePropertyCallExp = (CGExecutorOppositePropertyCallExp)theEObject;
 				T result = caseCGExecutorOppositePropertyCallExp(cgExecutorOppositePropertyCallExp);
 				if (result == null) result = caseCGOppositePropertyCallExp(cgExecutorOppositePropertyCallExp);
@@ -558,7 +547,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 34: {
+			case 33: {
 				CGExecutorProperty cgExecutorProperty = (CGExecutorProperty)theEObject;
 				T result = caseCGExecutorProperty(cgExecutorProperty);
 				if (result == null) result = caseCGProperty(cgExecutorProperty);
@@ -569,7 +558,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 35: {
+			case 34: {
 				CGExecutorPropertyCallExp cgExecutorPropertyCallExp = (CGExecutorPropertyCallExp)theEObject;
 				T result = caseCGExecutorPropertyCallExp(cgExecutorPropertyCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgExecutorPropertyCallExp);
@@ -583,7 +572,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 36: {
+			case 35: {
 				CGExecutorShadowPart cgExecutorShadowPart = (CGExecutorShadowPart)theEObject;
 				T result = caseCGExecutorShadowPart(cgExecutorShadowPart);
 				if (result == null) result = caseCGExecutorProperty(cgExecutorShadowPart);
@@ -595,7 +584,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 37: {
+			case 36: {
 				CGExecutorType cgExecutorType = (CGExecutorType)theEObject;
 				T result = caseCGExecutorType(cgExecutorType);
 				if (result == null) result = caseCGValuedElement(cgExecutorType);
@@ -605,7 +594,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 38: {
+			case 37: {
 				CGFinalVariable cgFinalVariable = (CGFinalVariable)theEObject;
 				T result = caseCGFinalVariable(cgFinalVariable);
 				if (result == null) result = caseCGVariable(cgFinalVariable);
@@ -616,7 +605,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 39: {
+			case 38: {
 				CGForeignOperationCallExp cgForeignOperationCallExp = (CGForeignOperationCallExp)theEObject;
 				T result = caseCGForeignOperationCallExp(cgForeignOperationCallExp);
 				if (result == null) result = caseCGOperationCallExp(cgForeignOperationCallExp);
@@ -628,7 +617,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 40: {
+			case 39: {
 				CGForeignProperty cgForeignProperty = (CGForeignProperty)theEObject;
 				T result = caseCGForeignProperty(cgForeignProperty);
 				if (result == null) result = caseCGBodiedProperty(cgForeignProperty);
@@ -640,7 +629,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 41: {
+			case 40: {
 				CGForeignPropertyCallExp cgForeignPropertyCallExp = (CGForeignPropertyCallExp)theEObject;
 				T result = caseCGForeignPropertyCallExp(cgForeignPropertyCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgForeignPropertyCallExp);
@@ -654,7 +643,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 42: {
+			case 41: {
 				CGGuardExp cgGuardExp = (CGGuardExp)theEObject;
 				T result = caseCGGuardExp(cgGuardExp);
 				if (result == null) result = caseCGSourcedCallExp(cgGuardExp);
@@ -666,7 +655,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 43: {
+			case 42: {
 				CGIfExp cgIfExp = (CGIfExp)theEObject;
 				T result = caseCGIfExp(cgIfExp);
 				if (result == null) result = caseCGValuedElement(cgIfExp);
@@ -676,7 +665,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 44: {
+			case 43: {
 				CGIndexExp cgIndexExp = (CGIndexExp)theEObject;
 				T result = caseCGIndexExp(cgIndexExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIndexExp);
@@ -688,7 +677,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 45: {
+			case 44: {
 				CGInlinedOperation cgInlinedOperation = (CGInlinedOperation)theEObject;
 				T result = caseCGInlinedOperation(cgInlinedOperation);
 				if (result == null) result = caseCGOperation(cgInlinedOperation);
@@ -700,7 +689,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 46: {
+			case 45: {
 				CGInteger cgInteger = (CGInteger)theEObject;
 				T result = caseCGInteger(cgInteger);
 				if (result == null) result = caseCGNumber(cgInteger);
@@ -712,7 +701,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 47: {
+			case 46: {
 				CGInvalid cgInvalid = (CGInvalid)theEObject;
 				T result = caseCGInvalid(cgInvalid);
 				if (result == null) result = caseCGConstant(cgInvalid);
@@ -723,7 +712,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 48: {
+			case 47: {
 				CGIsEqualExp cgIsEqualExp = (CGIsEqualExp)theEObject;
 				T result = caseCGIsEqualExp(cgIsEqualExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIsEqualExp);
@@ -735,7 +724,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 49: {
+			case 48: {
 				CGIsEqual2Exp cgIsEqual2Exp = (CGIsEqual2Exp)theEObject;
 				T result = caseCGIsEqual2Exp(cgIsEqual2Exp);
 				if (result == null) result = caseCGSourcedCallExp(cgIsEqual2Exp);
@@ -747,7 +736,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 50: {
+			case 49: {
 				CGIsInvalidExp cgIsInvalidExp = (CGIsInvalidExp)theEObject;
 				T result = caseCGIsInvalidExp(cgIsInvalidExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIsInvalidExp);
@@ -759,7 +748,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 51: {
+			case 50: {
 				CGIsKindOfExp cgIsKindOfExp = (CGIsKindOfExp)theEObject;
 				T result = caseCGIsKindOfExp(cgIsKindOfExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIsKindOfExp);
@@ -771,7 +760,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 52: {
+			case 51: {
 				CGIsUndefinedExp cgIsUndefinedExp = (CGIsUndefinedExp)theEObject;
 				T result = caseCGIsUndefinedExp(cgIsUndefinedExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIsUndefinedExp);
@@ -783,7 +772,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 53: {
+			case 52: {
 				CGIterationCallExp cgIterationCallExp = (CGIterationCallExp)theEObject;
 				T result = caseCGIterationCallExp(cgIterationCallExp);
 				if (result == null) result = caseCGSourcedCallExp(cgIterationCallExp);
@@ -795,7 +784,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 54: {
+			case 53: {
 				CGIterator cgIterator = (CGIterator)theEObject;
 				T result = caseCGIterator(cgIterator);
 				if (result == null) result = caseCGParameter(cgIterator);
@@ -807,7 +796,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 55: {
+			case 54: {
 				CGLetExp cgLetExp = (CGLetExp)theEObject;
 				T result = caseCGLetExp(cgLetExp);
 				if (result == null) result = caseCGValuedElement(cgLetExp);
@@ -817,7 +806,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 56: {
+			case 55: {
 				CGLibraryIterateCallExp cgLibraryIterateCallExp = (CGLibraryIterateCallExp)theEObject;
 				T result = caseCGLibraryIterateCallExp(cgLibraryIterateCallExp);
 				if (result == null) result = caseCGLibraryIterationCallExp(cgLibraryIterateCallExp);
@@ -831,7 +820,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 57: {
+			case 56: {
 				CGLibraryIterationCallExp cgLibraryIterationCallExp = (CGLibraryIterationCallExp)theEObject;
 				T result = caseCGLibraryIterationCallExp(cgLibraryIterationCallExp);
 				if (result == null) result = caseCGIterationCallExp(cgLibraryIterationCallExp);
@@ -844,7 +833,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 58: {
+			case 57: {
 				CGLibraryOperation cgLibraryOperation = (CGLibraryOperation)theEObject;
 				T result = caseCGLibraryOperation(cgLibraryOperation);
 				if (result == null) result = caseCGOperation(cgLibraryOperation);
@@ -856,7 +845,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 59: {
+			case 58: {
 				CGLibraryOperationCallExp cgLibraryOperationCallExp = (CGLibraryOperationCallExp)theEObject;
 				T result = caseCGLibraryOperationCallExp(cgLibraryOperationCallExp);
 				if (result == null) result = caseCGOperationCallExp(cgLibraryOperationCallExp);
@@ -868,7 +857,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 60: {
+			case 59: {
 				CGLibraryPropertyCallExp cgLibraryPropertyCallExp = (CGLibraryPropertyCallExp)theEObject;
 				T result = caseCGLibraryPropertyCallExp(cgLibraryPropertyCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgLibraryPropertyCallExp);
@@ -882,7 +871,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 61: {
+			case 60: {
 				CGLocalVariable cgLocalVariable = (CGLocalVariable)theEObject;
 				T result = caseCGLocalVariable(cgLocalVariable);
 				if (result == null) result = caseCGVariable(cgLocalVariable);
@@ -893,7 +882,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 62: {
+			case 61: {
 				CGMapExp cgMapExp = (CGMapExp)theEObject;
 				T result = caseCGMapExp(cgMapExp);
 				if (result == null) result = caseCGValuedElement(cgMapExp);
@@ -903,7 +892,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 63: {
+			case 62: {
 				CGMapPart cgMapPart = (CGMapPart)theEObject;
 				T result = caseCGMapPart(cgMapPart);
 				if (result == null) result = caseCGValuedElement(cgMapPart);
@@ -913,7 +902,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 64: {
+			case 63: {
 				CGModel cgModel = (CGModel)theEObject;
 				T result = caseCGModel(cgModel);
 				if (result == null) result = caseCGNamedElement(cgModel);
@@ -921,14 +910,14 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 65: {
+			case 64: {
 				CGNamedElement cgNamedElement = (CGNamedElement)theEObject;
 				T result = caseCGNamedElement(cgNamedElement);
 				if (result == null) result = caseCGElement(cgNamedElement);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 66: {
+			case 65: {
 				CGNativeOperation cgNativeOperation = (CGNativeOperation)theEObject;
 				T result = caseCGNativeOperation(cgNativeOperation);
 				if (result == null) result = caseCGOperation(cgNativeOperation);
@@ -940,7 +929,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 67: {
+			case 66: {
 				CGNativeOperationCallExp cgNativeOperationCallExp = (CGNativeOperationCallExp)theEObject;
 				T result = caseCGNativeOperationCallExp(cgNativeOperationCallExp);
 				if (result == null) result = caseCGOperationCallExp(cgNativeOperationCallExp);
@@ -952,7 +941,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 68: {
+			case 67: {
 				CGNativeProperty cgNativeProperty = (CGNativeProperty)theEObject;
 				T result = caseCGNativeProperty(cgNativeProperty);
 				if (result == null) result = caseCGBodiedProperty(cgNativeProperty);
@@ -964,7 +953,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 69: {
+			case 68: {
 				CGNativePropertyCallExp cgNativePropertyCallExp = (CGNativePropertyCallExp)theEObject;
 				T result = caseCGNativePropertyCallExp(cgNativePropertyCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgNativePropertyCallExp);
@@ -978,7 +967,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 70: {
+			case 69: {
 				CGNavigationCallExp cgNavigationCallExp = (CGNavigationCallExp)theEObject;
 				T result = caseCGNavigationCallExp(cgNavigationCallExp);
 				if (result == null) result = caseCGSourcedCallExp(cgNavigationCallExp);
@@ -990,7 +979,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 71: {
+			case 70: {
 				CGNull cgNull = (CGNull)theEObject;
 				T result = caseCGNull(cgNull);
 				if (result == null) result = caseCGConstant(cgNull);
@@ -1001,7 +990,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 72: {
+			case 71: {
 				CGNumber cgNumber = (CGNumber)theEObject;
 				T result = caseCGNumber(cgNumber);
 				if (result == null) result = caseCGConstant(cgNumber);
@@ -1012,7 +1001,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 73: {
+			case 72: {
 				CGOperation cgOperation = (CGOperation)theEObject;
 				T result = caseCGOperation(cgOperation);
 				if (result == null) result = caseCGCallable(cgOperation);
@@ -1023,7 +1012,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 74: {
+			case 73: {
 				CGOperationCallExp cgOperationCallExp = (CGOperationCallExp)theEObject;
 				T result = caseCGOperationCallExp(cgOperationCallExp);
 				if (result == null) result = caseCGCallExp(cgOperationCallExp);
@@ -1034,7 +1023,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 75: {
+			case 74: {
 				CGOppositePropertyCallExp cgOppositePropertyCallExp = (CGOppositePropertyCallExp)theEObject;
 				T result = caseCGOppositePropertyCallExp(cgOppositePropertyCallExp);
 				if (result == null) result = caseCGNavigationCallExp(cgOppositePropertyCallExp);
@@ -1047,7 +1036,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 76: {
+			case 75: {
 				CGPackage cgPackage = (CGPackage)theEObject;
 				T result = caseCGPackage(cgPackage);
 				if (result == null) result = caseCGNamedElement(cgPackage);
@@ -1055,7 +1044,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 77: {
+			case 76: {
 				CGParameter cgParameter = (CGParameter)theEObject;
 				T result = caseCGParameter(cgParameter);
 				if (result == null) result = caseCGVariable(cgParameter);
@@ -1066,7 +1055,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 78: {
+			case 77: {
 				CGProperty cgProperty = (CGProperty)theEObject;
 				T result = caseCGProperty(cgProperty);
 				if (result == null) result = caseCGValuedElement(cgProperty);
@@ -1076,7 +1065,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 79: {
+			case 78: {
 				CGPropertyAssignment cgPropertyAssignment = (CGPropertyAssignment)theEObject;
 				T result = caseCGPropertyAssignment(cgPropertyAssignment);
 				if (result == null) result = caseCGValuedElement(cgPropertyAssignment);
@@ -1086,7 +1075,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 80: {
+			case 79: {
 				CGPropertyCallExp cgPropertyCallExp = (CGPropertyCallExp)theEObject;
 				T result = caseCGPropertyCallExp(cgPropertyCallExp);
 				if (result == null) result = caseCGNavigationCallExp(cgPropertyCallExp);
@@ -1099,7 +1088,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 81: {
+			case 80: {
 				CGReal cgReal = (CGReal)theEObject;
 				T result = caseCGReal(cgReal);
 				if (result == null) result = caseCGNumber(cgReal);
@@ -1111,7 +1100,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 82: {
+			case 81: {
 				CGSequence cgSequence = (CGSequence)theEObject;
 				T result = caseCGSequence(cgSequence);
 				if (result == null) result = caseCGValuedElement(cgSequence);
@@ -1121,7 +1110,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 83: {
+			case 82: {
 				CGSettableVariable cgSettableVariable = (CGSettableVariable)theEObject;
 				T result = caseCGSettableVariable(cgSettableVariable);
 				if (result == null) result = caseCGVariable(cgSettableVariable);
@@ -1132,7 +1121,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 84: {
+			case 83: {
 				CGShadowExp cgShadowExp = (CGShadowExp)theEObject;
 				T result = caseCGShadowExp(cgShadowExp);
 				if (result == null) result = caseCGValuedElement(cgShadowExp);
@@ -1142,7 +1131,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 85: {
+			case 84: {
 				CGShadowPart cgShadowPart = (CGShadowPart)theEObject;
 				T result = caseCGShadowPart(cgShadowPart);
 				if (result == null) result = caseCGValuedElement(cgShadowPart);
@@ -1152,7 +1141,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 86: {
+			case 85: {
 				CGSourcedCallExp cgSourcedCallExp = (CGSourcedCallExp)theEObject;
 				T result = caseCGSourcedCallExp(cgSourcedCallExp);
 				if (result == null) result = caseCGCallExp(cgSourcedCallExp);
@@ -1163,7 +1152,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 87: {
+			case 86: {
 				CGString cgString = (CGString)theEObject;
 				T result = caseCGString(cgString);
 				if (result == null) result = caseCGConstant(cgString);
@@ -1174,7 +1163,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 88: {
+			case 87: {
 				CGTemplateParameterExp cgTemplateParameterExp = (CGTemplateParameterExp)theEObject;
 				T result = caseCGTemplateParameterExp(cgTemplateParameterExp);
 				if (result == null) result = caseCGValuedElement(cgTemplateParameterExp);
@@ -1184,7 +1173,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 89: {
+			case 88: {
 				CGThrowExp cgThrowExp = (CGThrowExp)theEObject;
 				T result = caseCGThrowExp(cgThrowExp);
 				if (result == null) result = caseCGSourcedCallExp(cgThrowExp);
@@ -1196,7 +1185,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 90: {
+			case 89: {
 				CGTupleExp cgTupleExp = (CGTupleExp)theEObject;
 				T result = caseCGTupleExp(cgTupleExp);
 				if (result == null) result = caseCGValuedElement(cgTupleExp);
@@ -1206,7 +1195,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 91: {
+			case 90: {
 				CGTuplePart cgTuplePart = (CGTuplePart)theEObject;
 				T result = caseCGTuplePart(cgTuplePart);
 				if (result == null) result = caseCGValuedElement(cgTuplePart);
@@ -1216,7 +1205,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 92: {
+			case 91: {
 				CGTuplePartCallExp cgTuplePartCallExp = (CGTuplePartCallExp)theEObject;
 				T result = caseCGTuplePartCallExp(cgTuplePartCallExp);
 				if (result == null) result = caseCGPropertyCallExp(cgTuplePartCallExp);
@@ -1230,7 +1219,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 93: {
+			case 92: {
 				CGTypeId cgTypeId = (CGTypeId)theEObject;
 				T result = caseCGTypeId(cgTypeId);
 				if (result == null) result = caseCGElementId(cgTypeId);
@@ -1242,7 +1231,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 94: {
+			case 93: {
 				CGTypeExp cgTypeExp = (CGTypeExp)theEObject;
 				T result = caseCGTypeExp(cgTypeExp);
 				if (result == null) result = caseCGValuedElement(cgTypeExp);
@@ -1252,7 +1241,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 95: {
+			case 94: {
 				CGTypedElement cgTypedElement = (CGTypedElement)theEObject;
 				T result = caseCGTypedElement(cgTypedElement);
 				if (result == null) result = caseCGNamedElement(cgTypedElement);
@@ -1260,7 +1249,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 96: {
+			case 95: {
 				CGUnboxExp cgUnboxExp = (CGUnboxExp)theEObject;
 				T result = caseCGUnboxExp(cgUnboxExp);
 				if (result == null) result = caseCGSourcedCallExp(cgUnboxExp);
@@ -1272,7 +1261,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 97: {
+			case 96: {
 				CGUnlimited cgUnlimited = (CGUnlimited)theEObject;
 				T result = caseCGUnlimited(cgUnlimited);
 				if (result == null) result = caseCGConstant(cgUnlimited);
@@ -1283,7 +1272,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 98: {
+			case 97: {
 				CGValuedElement cgValuedElement = (CGValuedElement)theEObject;
 				T result = caseCGValuedElement(cgValuedElement);
 				if (result == null) result = caseCGTypedElement(cgValuedElement);
@@ -1292,7 +1281,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 99: {
+			case 98: {
 				CGVariable cgVariable = (CGVariable)theEObject;
 				T result = caseCGVariable(cgVariable);
 				if (result == null) result = caseCGValuedElement(cgVariable);
@@ -1302,7 +1291,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 100: {
+			case 99: {
 				CGVariableExp cgVariableExp = (CGVariableExp)theEObject;
 				T result = caseCGVariableExp(cgVariableExp);
 				if (result == null) result = caseCGValuedElement(cgVariableExp);
@@ -1312,7 +1301,7 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case 101: {
+			case 100: {
 				Nameable nameable = (Nameable)theEObject;
 				T result = caseNameable(nameable);
 				if (result == null) result = defaultCase(theEObject);
@@ -1953,21 +1942,6 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>CG Ecore Container Assignment</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>CG Ecore Container Assignment</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseCGEcoreContainerAssignment(CGEcoreContainerAssignment object) {
-		return null;
-	}
-
-	/**
 	 * Returns the result of interpreting the object as an instance of '<em>CG Ecore Property Assignment</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelVisitor.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelVisitor.java
index b17ca63..511ec90 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/util/CGModelVisitor.java
@@ -63,7 +63,6 @@
 	R visitCGConstrainedProperty(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGConstrainedProperty object);
 	R visitCGConstraint(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGConstraint object);
 	R visitCGEcoreClassShadowExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreClassShadowExp object);
-	R visitCGEcoreContainerAssignment(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreContainerAssignment object);
 	R visitCGEcoreDataTypeShadowExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreDataTypeShadowExp object);
 	R visitCGEcoreExp(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreExp object);
 	R visitCGEcoreOperation(org.eclipse.ocl.examples.codegen.cgmodel.@NonNull CGEcoreOperation object);
diff --git a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
index 70038ed..7b3cf2b 100644
--- a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
+++ b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
@@ -170,11 +170,6 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="eClass" lowerBound="1"
         eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass" resolveProxies="false"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CGEcoreContainerAssignment" eSuperTypes="#//CGPropertyAssignment">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeature" lowerBound="1"
-        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature"
-        resolveProxies="false"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CGEcorePropertyAssignment" eSuperTypes="#//CGPropertyAssignment">
     <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeature" lowerBound="1"
         eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature"
diff --git a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.genmodel b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.genmodel
index f46a875..c3a8e3b 100644
--- a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.genmodel
+++ b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.genmodel
@@ -101,9 +101,6 @@
     <genClasses ecoreClass="cgmodel.ecore#//CGEcoreClassShadowExp">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cgmodel.ecore#//CGEcoreClassShadowExp/eClass"/>
     </genClasses>
-    <genClasses ecoreClass="cgmodel.ecore#//CGEcoreContainerAssignment">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cgmodel.ecore#//CGEcoreContainerAssignment/eStructuralFeature"/>
-    </genClasses>
     <genClasses ecoreClass="cgmodel.ecore#//CGEcorePropertyAssignment">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference cgmodel.ecore#//CGEcorePropertyAssignment/eStructuralFeature"/>
     </genClasses>
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/BoxingAnalyzer.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/BoxingAnalyzer.java
index c6f464e..fb8be8b 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/BoxingAnalyzer.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/BoxingAnalyzer.java
@@ -14,7 +14,6 @@
 
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.ocl.examples.codegen.calling.OperationCallingConvention;
@@ -26,9 +25,7 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGCachedOperationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGCastExp;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreExp;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGElement;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGExecutorType;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGGuardExp;
@@ -46,6 +43,7 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGOperationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGParameter;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGShadowPart;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGTypeExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGTypeId;
@@ -336,7 +334,7 @@
 		return null;
 	}
 
-	@Override
+/*	@Override
 	public @Nullable Object visitCGEcoreContainerAssignment(@NonNull CGEcoreContainerAssignment cgEcoreContainerAssignment) {
 		EStructuralFeature eStructuralFeature = cgEcoreContainerAssignment.getEStructuralFeature();
 		boolean isRequired = eStructuralFeature.isRequired();
@@ -346,7 +344,7 @@
 			rewriteAsGuarded(cgEcoreContainerAssignment.getOwnedSlotValue(), false, "value for " + cgEcoreContainerAssignment.getReferredProperty() + " assignment");
 		}
 		return super.visitCGEcoreContainerAssignment(cgEcoreContainerAssignment);
-	}
+	} */
 
 /*	@Override
 	public @Nullable Object visitCGConstrainedProperty(@NonNull CGConstrainedProperty cgProperty) {
@@ -412,8 +410,12 @@
 		return null;
 	} */
 
-	@Override
+/*	@Override
 	public @Nullable Object visitCGEcorePropertyAssignment(@NonNull CGEcorePropertyAssignment cgEcorePropertyAssignment) {
+		System.out.println(cgEcorePropertyAssignment.getReferredProperty().getCallingConvention() + " <=e " + NameUtil.debugSimpleName(cgEcorePropertyAssignment));
+
+
+
 		EStructuralFeature eStructuralFeature = cgEcorePropertyAssignment.getEStructuralFeature();
 		rewriteAsEcore(cgEcorePropertyAssignment.getOwnedSlotValue(), eStructuralFeature.getEContainingClass());
 		rewriteAsEcore(cgEcorePropertyAssignment.getOwnedInitValue(), eStructuralFeature.getEType());
@@ -425,7 +427,7 @@
 			}
 		}
 		return super.visitCGEcorePropertyAssignment(cgEcorePropertyAssignment);
-	}
+	} */
 
 	@Override
 	public @Nullable Object visitCGElement(@NonNull CGElement cgElement) {
@@ -731,6 +733,15 @@
 	}
 
 	@Override
+	public @Nullable Object visitCGPropertyAssignment(@NonNull CGPropertyAssignment cgPropertyAssignment) {
+		super.visitCGPropertyAssignment(cgPropertyAssignment);
+		CGProperty cgProperty = CGUtil.getReferredProperty(cgPropertyAssignment);
+		PropertyCallingConvention callingConvention = cgProperty.getCallingConvention();
+		callingConvention.rewriteWithBoxingAndGuards(this, cgPropertyAssignment);
+		return null;
+	}
+
+	@Override
 	public @Nullable Object visitCGShadowPart(@NonNull CGShadowPart cgShadowPart) {
 		rewriteAsUnboxed(cgShadowPart.getInit());
 		return super.visitCGShadowPart(cgShadowPart);
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractCachePropertyCallingConvention.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractCachePropertyCallingConvention.java
index 5f82156..00e88e9 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractCachePropertyCallingConvention.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractCachePropertyCallingConvention.java
@@ -12,10 +12,12 @@
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.codegen.analyzer.BoxingAnalyzer;
 import org.eclipse.ocl.examples.codegen.analyzer.CodeGenAnalyzer;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGModelFactory;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGNavigationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGValuedElement;
 import org.eclipse.ocl.examples.codegen.java.CG2JavaVisitor;
@@ -101,32 +103,31 @@
 			js.append(";\n");
 			return true;
 		}
+
+		@Override
+		public void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGPropertyAssignment cgPropertyAssignment) {
+			boxingAnalyzer.rewriteAsBoxed(cgPropertyAssignment.getOwnedInitValue());
+			super.rewriteWithBoxingAndGuards(boxingAnalyzer, cgPropertyAssignment);
+		}
 	}
 
 	@Override
 	public @NonNull CGValuedElement createCGNavigationCallExp(@NonNull CodeGenAnalyzer analyzer, @NonNull CGProperty cgProperty,
 			@NonNull LibraryProperty libraryProperty, @Nullable CGValuedElement cgSource, @NonNull NavigationCallExp asPropertyCallExp) {
-	//	CodeGenerator codeGenerator = as2cgVisitor.getCodeGenerator();
-		Property asProperty = CGUtil.getAST(cgProperty);
-	//	boolean isRequired = asProperty.isIsRequired();
-	//	assert libraryProperty instanceof CacheProperty;
 		CGPropertyCallExp cgPropertyCallExp = CGModelFactory.eINSTANCE.createCGLibraryPropertyCallExp();
 		cgPropertyCallExp.setSource(cgSource);
 		cgPropertyCallExp.setReferredProperty(cgProperty);
 		cgPropertyCallExp.setTypeId(cgProperty.getTypeId());
 		cgPropertyCallExp.setRequired(cgProperty.isRequired());
-	//	CGTuplePartCallExp cgPropertyCallExp = CGModelFactory.eINSTANCE.createCGNaCallExp();
-	//	cgPropertyCallExp.setAstTuplePartId(IdManager.getTuplePartId(asProperty));
-	//	cgPropertyCallExp.setReferredProperty(cgProperty);
 		analyzer.initAst(cgPropertyCallExp, asPropertyCallExp, true);
-	//	cgPropertyCallExp.setRequired(isRequired || codeGenerator.isPrimitive(cgPropertyCallExp));
-	//	cgPropertyCallExp.setSource(cgSource);
 		return cgPropertyCallExp;
 	}
 
 	@Override
-	public boolean generateJavaAssign(@NonNull CG2JavaVisitor cg2javaVisitor,
-			@NonNull CGValuedElement slotValue, @NonNull CGProperty cgProperty, @NonNull CGValuedElement initValue) {
+	public boolean generateJavaAssignment(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGPropertyAssignment cgPropertyAssignment) {
+		CGProperty cgProperty = CGUtil.getReferredProperty(cgPropertyAssignment);
+		CGValuedElement slotValue = CGUtil.getOwnedSlotValue(cgPropertyAssignment);
+		CGValuedElement initValue = CGUtil.getOwnedInitValue(cgPropertyAssignment);
 		assert !initValue.isInvalid();
 		JavaStream js = cg2javaVisitor.getJavaStream();
 		js.appendValueName(slotValue);			// Always "this"
@@ -141,12 +142,9 @@
 	@Override
 	public boolean generateJavaCall(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGNavigationCallExp cgPropertyCallExp) {
 		JavaStream js = cg2javaVisitor.getJavaStream();
-	//	js.appendDeclaration(cgPropertyCallExp);
-	//	js.append(" = ");
 		js.appendValueName(cgPropertyCallExp.getSource());			// Always "this"
 		js.append(".");
 		js.appendReferenceTo(cgPropertyCallExp.getReferredProperty());
-	//	js.append(";\n");
 		return true;
 	}
 
@@ -154,4 +152,12 @@
 	public boolean isInlined() {
 		return true;
 	}
+
+	@Override
+	public void rewriteWithBoxingAndGuards(
+			@NonNull BoxingAnalyzer boxingAnalyzer,
+			@NonNull CGPropertyAssignment cgPropertyAssignment) {
+		// TODO Auto-generated method stub
+		super.rewriteWithBoxingAndGuards(boxingAnalyzer, cgPropertyAssignment);
+	}
 }
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractPropertyCallingConvention.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractPropertyCallingConvention.java
index 9450477..80a4083 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractPropertyCallingConvention.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/AbstractPropertyCallingConvention.java
@@ -21,6 +21,7 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGNavigationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGParameter;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGValuedElement;
 import org.eclipse.ocl.examples.codegen.java.CG2JavaVisitor;
 import org.eclipse.ocl.examples.codegen.java.JavaStream;
@@ -64,7 +65,6 @@
 				ExpressionInOCL query = environmentFactory.parseSpecification(specification);
 				Variable contextVariable = query.getOwnedContext();
 				if (contextVariable != null) {
-//					propertyNameManager.lazyGetSelfParameter(contextVariable);
 					CGParameter selfParameter = propertyNameManager.getSelfParameter();
 					assert selfParameter.getAst() == contextVariable;
 				}
@@ -99,24 +99,24 @@
 	}
 
 	@Override
-	public boolean generateJavaAssign(@NonNull CG2JavaVisitor cg2javaVisitor,
-			@NonNull CGValuedElement slotValue, @NonNull CGProperty cgProperty, @NonNull CGValuedElement initValue) {
+	public boolean generateJavaAssignment(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGPropertyAssignment cgPropertyAssignment) {
 		JavaStream js = cg2javaVisitor.getJavaStream();
-		js.appendReferenceTo(cgProperty);
-		js.append(".initValue(");
-		js.appendValueName(slotValue);
-		js.append(", ");
-		js.appendValueName(initValue);
-		js.append(");\n");
+		CGProperty cgProperty = CGUtil.getReferredProperty(cgPropertyAssignment);
+		Property asProperty = CGUtil.getAST(cgProperty);
+		js.append("«");
+		js.append(getClass().getSimpleName());
+		js.append(".generateJavaAssignment ");		// XXX debugging - change to abstract
+		js.append(asProperty.getOwningClass().getOwningPackage().getName());
+		js.append("::");
+		js.append(asProperty.getOwningClass().getName());
+		js.append("::");
+		js.append(asProperty.getName());
+		js.append("»\n");
 		return false;
 	}
 
 	@Override
 	public boolean generateJavaDeclaration(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGProperty cgProperty) {
-//		return generateJavaDeclarationUnimplemented(cg2javaVisitor, cgProperty);		// XXX
-//	}
-//
-//	protected boolean generateJavaDeclarationUnimplemented(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGProperty cgProperty) {
 		JavaStream js = cg2javaVisitor.getJavaStream();
 		Property asProperty = CGUtil.getAST(cgProperty);
 		js.append("«");
@@ -129,15 +129,10 @@
 		js.append(asProperty.getName());
 		js.append("»\n");
 		return true;
-	//	throw new UnsupportedOperationException("Missing/No support for " + getClass().getSimpleName() + ".generateJavaDeclaration");	// A number of Property Calling Conventions are call-only
 	}
 
 	@Override
 	public boolean generateJavaInitialization(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGProperty cgProperty) {
-//		return generateJavaInitializationUnimplemented(cg2javaVisitor, cgProperty);
-//	}
-//
-//	protected boolean generateJavaInitializationUnimplemented(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGProperty cgProperty) {
 		JavaStream js = cg2javaVisitor.getJavaStream();
 		Property asProperty = CGUtil.getAST(cgProperty);
 		js.append("«");
@@ -150,7 +145,6 @@
 		js.append(asProperty.getName());
 		js.append("»\n");
 		return true;
-	//	throw new UnsupportedOperationException("Missing/No support for " + getClass().getSimpleName() + ".generateJavaInitialization");	// A number of Property Calling Conventions are call-only
 	}
 
 	@Override
@@ -186,6 +180,11 @@
 		rewriteWithResultBoxing(boxingAnalyzer, cgNavigationCallExp);
 	}
 
+	@Override
+	public void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGPropertyAssignment cgPropertyAssignment) {
+		// XXX change to abstract to mandate handling
+	}
+
 	protected void rewriteWithResultBoxing(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGNavigationCallExp cgNavigationCallExp) {
 		// XXX change to abstract to mandate handling
 	}
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/EcorePropertyCallingConvention.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/EcorePropertyCallingConvention.java
index 9365342..570f61b 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/EcorePropertyCallingConvention.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/EcorePropertyCallingConvention.java
@@ -19,11 +19,13 @@
 import org.eclipse.ocl.examples.codegen.analyzer.CodeGenAnalyzer;
 import org.eclipse.ocl.examples.codegen.calling.AbstractOperationCallingConvention.CGParameterStyle;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGBodiedProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGInvalid;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGModelFactory;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGNavigationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGTypeId;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGValuedElement;
@@ -244,6 +246,22 @@
 	}
 
 	@Override
+	public void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGPropertyAssignment cgPropertyAssignment) {
+		CGEcorePropertyAssignment cgEcorePropertyAssignment = (CGEcorePropertyAssignment)cgPropertyAssignment;
+		EStructuralFeature eStructuralFeature = cgEcorePropertyAssignment.getEStructuralFeature();
+		boxingAnalyzer.rewriteAsEcore(cgEcorePropertyAssignment.getOwnedSlotValue(), eStructuralFeature.getEContainingClass());
+		boxingAnalyzer.rewriteAsEcore(cgEcorePropertyAssignment.getOwnedInitValue(), eStructuralFeature.getEType());
+		if (eStructuralFeature.isRequired()) {
+			CGValuedElement cgInit = cgEcorePropertyAssignment.getOwnedInitValue();
+			TypeDescriptor typeDescriptor = cgInit != null ? boxingAnalyzer.getCodeGenerator().getTypeDescriptor(cgInit) : null;
+			if ((typeDescriptor == null) || !typeDescriptor.isPrimitive()) {
+				boxingAnalyzer.rewriteAsGuarded(cgInit, false, "value for " + cgEcorePropertyAssignment.getReferredProperty() + " assignment");
+			}
+		}
+		super.rewriteWithBoxingAndGuards(boxingAnalyzer, cgPropertyAssignment);
+	}
+
+	@Override
 	protected void rewriteWithResultBoxing(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGNavigationCallExp cgNavigationCallExp) {
 		CGEcorePropertyCallExp cgEcorePropertyCallExp = (CGEcorePropertyCallExp) cgNavigationCallExp;
 		if (cgEcorePropertyCallExp.getEStructuralFeature().isMany()) {
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/ImplementedOperationCallingConvention.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/ImplementedOperationCallingConvention.java
index 40b1cfa..494b4d7 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/ImplementedOperationCallingConvention.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/ImplementedOperationCallingConvention.java
@@ -46,7 +46,6 @@
 import org.eclipse.ocl.pivot.library.AbstractOperation;
 import org.eclipse.ocl.pivot.library.LibraryFeature;
 import org.eclipse.ocl.pivot.library.LibraryOperation;
-import org.eclipse.ocl.pivot.utilities.PivotHelper;
 
 /**
  *  ImplementedOperationCallingConvention defines the support for the call of an operation implemented by a Java class.
@@ -78,7 +77,7 @@
 			List<@NonNull CGProperty> cgProperties = CGUtil.getPropertiesList(cgEntryClass);
 			ExecutableNameManager operationNameManager = analyzer.getOperationNameManager(cgConstructor, asOperation, asOrigin);
 			//
-			PivotHelper asHelper = analyzer.getASHelper();
+		//	PivotHelper asHelper = analyzer.getASHelper();
 			CGParameter cgEntryBoxedValuesParameter = operationNameManager.getBoxedValuesParameter();
 			CGTypeId cgTypeId = analyzer.getCGTypeId(TypeId.OCL_VOID);
 			CGParameter cgThisParameter = operationNameManager.getThisParameter();
@@ -105,7 +104,9 @@
 					cgProperty.getNameResolution().addCGElement(cgLetVariable);
 					cgLetVariables.push(cgLetVariable);
 					cgInitValue = analyzer.createCGVariableExp(cgLetVariable);
-					cgSourceAndArguments.add(analyzer.createCGVariableExp(cgLetVariable));
+			//		if (i > 0) {				// Skip self ?? conditionalize on static
+						cgSourceAndArguments.add(analyzer.createCGVariableExp(cgLetVariable));
+			//		}
 				}
 				else {
 					//
@@ -192,27 +193,38 @@
 		//	LibraryFeature asImplementation = asOrigin.getImplementation();
 			LibraryOperation asImplementation = (LibraryOperation)operationNameManager.getCodeGenerator().getEnvironmentFactory().getMetamodelManager().getImplementation(asOrigin);
 			Method method = null;
-		//	boolean hasExecutor = false;
+			boolean hasExecutor = false;
 			boolean hasTypeId = false;
-		/*	if (asImplementation instanceof AbstractOperation) {
+			int hasSelfThenArgs = 0;
+			if (asImplementation instanceof AbstractOperation) {
 				method = ((AbstractOperation)asImplementation).getEvaluateMethod(asOrigin);
 				for (Class<?> jParameterType : method.getParameterTypes()) {
 					if (jParameterType == Executor.class) {
-				//		hasExecutor = true;
+						assert !hasExecutor;
+						assert !hasTypeId;
+						assert hasSelfThenArgs == 0;
+						hasExecutor = true;
 					}
 					else if (jParameterType == TypeId.class) {
+						assert hasExecutor;
+						assert !hasTypeId;
+						assert hasSelfThenArgs == 0;
 						hasTypeId = true;
 					}
+					else {
+						hasSelfThenArgs++;
+					}
 				}
-			} */
-			if (hasTypeId) {
-			//	assert hasExecutor;
+			}
+			assert hasSelfThenArgs == (asOrigin.isIsStatic() ? 0 : 1) + asOrigin.getOwnedParameters().size();
+		/*	if (hasTypeId) {
+				assert hasExecutor;
 				return CG_PARAMETER_STYLES_THIS_TYPE_ID_BOXED_VALUES;
 			}
 		//	else if (hasExecutor) {
 		//		return CG_PARAMETER_STYLES_THIS_EXECUTOR_BOXED_VALUES;
 		//	}
-			else {
+			else*/ {
 				return CG_PARAMETER_STYLES_THIS_BOXED_VALUES;
 			}
 		}
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/PropertyCallingConvention.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/PropertyCallingConvention.java
index 8354159..3675dcd 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/PropertyCallingConvention.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/calling/PropertyCallingConvention.java
@@ -16,6 +16,7 @@
 import org.eclipse.ocl.examples.codegen.analyzer.CodeGenAnalyzer;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGNavigationCallExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGProperty;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGPropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGValuedElement;
 import org.eclipse.ocl.examples.codegen.java.CG2JavaVisitor;
 import org.eclipse.ocl.examples.codegen.naming.ExecutableNameManager;
@@ -57,10 +58,10 @@
 	boolean generateEcoreBody(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGProperty cgProperty);
 
 	/**
-	 * Generate the Java code for a Property assign.
+	 * Generate the Java code for a Property assignment.
 	 * Returns true if control flow continues, false if an exception throw has been synthesized.
 	 */
-	boolean generateJavaAssign(@NonNull CG2JavaVisitor cg2javaVisitor, @NonNull CGValuedElement slotValue, @NonNull CGProperty cgProperty, @NonNull CGValuedElement initValue);
+	boolean generateJavaAssignment(@NonNull CG2JavaVisitor cg2JavaVisitor, @NonNull CGPropertyAssignment cgPropertyAssignment);
 
 	/**
 	 * Generate the Java code for a Property call.
@@ -82,4 +83,5 @@
 
 	void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGProperty cgProperty);
 	void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGNavigationCallExp cgNavigationCallExp);
+	void rewriteWithBoxingAndGuards(@NonNull BoxingAnalyzer boxingAnalyzer, @NonNull CGPropertyAssignment cgPropertyAssignment);
 }
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/CG2JavaVisitor.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/CG2JavaVisitor.java
index f0f2b01..1641d68 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/CG2JavaVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/CG2JavaVisitor.java
@@ -19,6 +19,7 @@
 
 import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
 import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -252,6 +253,14 @@
 		js.append(");\n");
 	}
 
+	public void appendQualifiedLiteralName(@NonNull EStructuralFeature eStructuralFeature) {
+		EClass eContainingClass = ClassUtil.nonNullState(eStructuralFeature.getEContainingClass());
+		EPackage ePackage = ClassUtil.nonNullState(eContainingClass.getEPackage());
+		js.appendClassReference(null, genModelHelper.getQualifiedPackageInterfaceName(ePackage));
+		js.append(".Literals.");
+		js.append(genModelHelper.getEcoreLiteralName(eStructuralFeature));
+	}
+
 	protected void appendSupportPrefix() {}
 
 	protected void appendTablesPrefix() {}
@@ -1635,7 +1644,7 @@
 		if (!js.appendLocalStatements(initValue)) {
 			return Boolean.FALSE;
 		}
-		cgProperty.getCallingConvention().generateJavaAssign(this, slotValue, cgProperty, initValue);
+		cgProperty.getCallingConvention().generateJavaAssignment(this, cgPropertyAssignment);
 		return Boolean.TRUE;
 	}
 
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/JavaStream.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/JavaStream.java
index b8736fa..e942a26 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/JavaStream.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/JavaStream.java
@@ -271,7 +271,7 @@
 			if ("\n".equals(string)) {
 				assert tailNewLines < 2 : "Use appendOptionalBlankLine";
 			}
-			if (string.contains("INSTANCE_CACHE_ATL2QVTr_getProperty")) {
+			if (string.contains("ExternalFunctionSum")) {
 				getClass();		// XXX
 			}
 			if (string.contains("InvalidValueException")) {
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/types/PrimitiveValueDescriptor.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/types/PrimitiveValueDescriptor.java
index 1ad51d7..d828777 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/types/PrimitiveValueDescriptor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/java/types/PrimitiveValueDescriptor.java
@@ -10,7 +10,14 @@
  *******************************************************************************/
 package org.eclipse.ocl.examples.codegen.java.types;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGUnboxExp;
+import org.eclipse.ocl.examples.codegen.cgmodel.CGValuedElement;
+import org.eclipse.ocl.examples.codegen.java.JavaStream;
+import org.eclipse.ocl.examples.codegen.naming.ExecutableNameManager;
 import org.eclipse.ocl.pivot.ids.DataTypeId;
 
 /**
@@ -26,6 +33,40 @@
 	}
 
 	@Override
+	public @NonNull Boolean appendUnboxStatements(@NonNull JavaStream js, @NonNull ExecutableNameManager localNameManager,
+			@NonNull CGUnboxExp cgUnboxExp, @NonNull CGValuedElement boxedValue) {
+		js.appendDeclaration(cgUnboxExp);
+		js.append(" = ");
+		if (primitiveClass == Character.class) {
+			js.append("Character.valueOf(");
+			js.appendValueName(boxedValue);
+			js.append(".asInteger());\n");
+		}
+		else {
+			js.appendValueName(boxedValue);
+			if (primitiveClass == BigInteger.class) {
+				js.append(".bigDecimalValue();\n");
+			}
+			else if (primitiveClass == BigDecimal.class) {
+				js.append(".bigIntegerValue();\n");
+			}
+			else if (primitiveClass == boolean.class) {
+				js.append(".asInteger() != 0;\n");
+			}
+			else if ((primitiveClass == double.class) || (primitiveClass == Double.class) || (primitiveClass == float.class) || (primitiveClass == Float.class)) {
+				js.append(".asDouble();\n");
+			}
+			else if ((primitiveClass == byte.class) || (primitiveClass == char.class) || (primitiveClass == int.class) || (primitiveClass == Integer.class) || (primitiveClass == long.class) || (primitiveClass == Long.class) || (primitiveClass == short.class) || (primitiveClass == Short.class)) {
+				js.append(".asInteger();\n");
+			}
+			else {
+				throw new UnsupportedOperationException("PrimitiveValueDescriptor.appendUnboxStatements for " + primitiveClass);
+			}
+		}
+		return true;
+	}
+
+	@Override
 	protected @NonNull EcoreDescriptor createEcoreDescriptor() {
 		EcoreDescriptor ecoreDescriptor = createPrimitiveObjectEcoreDescriptor(primitiveClass);
 		if (ecoreDescriptor != null) {
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/naming/NameManagerHelper.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/naming/NameManagerHelper.java
index 4ed9a65..2ee5c0f 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/naming/NameManagerHelper.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/naming/NameManagerHelper.java
@@ -28,7 +28,6 @@
 import org.eclipse.ocl.examples.codegen.cgmodel.CGCollectionExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGCollectionPart;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGConstraint;
-import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreContainerAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcoreExp;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGEcorePropertyAssignment;
 import org.eclipse.ocl.examples.codegen.cgmodel.CGElement;
@@ -558,11 +557,6 @@
 		}
 
 		@Override
-		public @NonNull String visitCGEcoreContainerAssignment(@NonNull CGEcoreContainerAssignment object) {
-			return NameResolution.NOT_NEEDED; // "XXX" + context.getNameableHint(object);		// Never used
-		}
-
-		@Override
 		public @NonNull String visitCGConstraint(@NonNull CGConstraint object) {
 			Constraint asConstraint = CGUtil.getAST(object);
 			return context.getConstraintNameHint(asConstraint);
diff --git a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/LoopExpImpl.java b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/LoopExpImpl.java
index 5ca06f4..424aeee 100644
--- a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/LoopExpImpl.java
+++ b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/LoopExpImpl.java
@@ -592,51 +592,44 @@
 				IF_le = ValueUtil.TRUE_VALUE;
 			}
 			else {
-				/*@Caught*/ @Nullable Object CAUGHT_forAll;
-				try {
-					@SuppressWarnings("null")
-					final /*@NonInvalid*/ @NonNull List<IteratorVariable> ownedCoIterators_0 = this.getOwnedCoIterators();
-					final /*@NonInvalid*/ @Nullable OrderedSetValue BOXED_ownedCoIterators = idResolver.createOrderedSetOfAll(PivotSupport.ORD_CLSSid_IteratorVariable, ownedCoIterators_0);
-					final /*@Thrown*/ @NonNull OrderedSetValue excluding = (OrderedSetValue)CollectionExcludingOperation.INSTANCE.evaluate(BOXED_ownedCoIterators, (Object)null);
-					/*@Thrown*/ @Nullable Object accumulator = ValueUtil.TRUE_VALUE;
-					@NonNull Iterator<Object> ITER__1 = excluding.iterator();
-					/*@Thrown*/ @Nullable Boolean forAll;
-					while (true) {
-						if (!ITER__1.hasNext()) {
-							if (accumulator == ValueUtil.TRUE_VALUE) {
-								forAll = ValueUtil.TRUE_VALUE;
-							}
-							else {
-								throw (InvalidValueException)accumulator;
-							}
-							break;
+				@SuppressWarnings("null")
+				final /*@NonInvalid*/ @NonNull List<IteratorVariable> ownedCoIterators_0 = this.getOwnedCoIterators();
+				final /*@NonInvalid*/ @Nullable OrderedSetValue BOXED_ownedCoIterators = idResolver.createOrderedSetOfAll(PivotSupport.ORD_CLSSid_IteratorVariable, ownedCoIterators_0);
+				final /*@NonInvalid*/ @NonNull OrderedSetValue excluding = (OrderedSetValue)CollectionExcludingOperation.INSTANCE.evaluate(BOXED_ownedCoIterators, (Object)null);
+				/*@Thrown*/ @Nullable Object accumulator = ValueUtil.TRUE_VALUE;
+				@NonNull Iterator<Object> ITER__1 = excluding.iterator();
+				/*@NonInvalid*/ @Nullable Boolean forAll;
+				while (true) {
+					if (!ITER__1.hasNext()) {
+						if (accumulator == ValueUtil.TRUE_VALUE) {
+							forAll = ValueUtil.TRUE_VALUE;
 						}
-						@SuppressWarnings("null")
-						/*@NonInvalid*/ @NonNull IteratorVariable _1 = (@NonNull IteratorVariable)ITER__1.next();
-						/**
-						 * ownedInit->isEmpty()
-						 */
-						final /*@NonInvalid*/ @Nullable OCLExpression ownedInit = _1.getOwnedInit();
-						final /*@NonInvalid*/ @NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, PivotSupport.SET_CLSSid_OCLExpression, ownedInit);
-						final /*@NonInvalid*/ boolean isEmpty = CollectionIsEmptyOperation.INSTANCE.evaluate(oclAsSet).booleanValue();
-						//
-						if (!isEmpty) {					// Normal unsuccessful body evaluation result
-							forAll = ValueUtil.FALSE_VALUE;
-							break;														// Stop immediately
+						else {
+							throw (InvalidValueException)accumulator;
 						}
-						else if (isEmpty) {				// Normal successful body evaluation result
-							;															// Carry on
-						}
-						else {															// Impossible badly typed result
-							accumulator = new InvalidValueException(PivotMessages.NonBooleanBody, "forAll");
-						}
+						break;
 					}
-					CAUGHT_forAll = forAll;
+					@SuppressWarnings("null")
+					/*@NonInvalid*/ @NonNull IteratorVariable _1 = (@NonNull IteratorVariable)ITER__1.next();
+					/**
+					 * ownedInit->isEmpty()
+					 */
+					final /*@NonInvalid*/ @Nullable OCLExpression ownedInit = _1.getOwnedInit();
+					final /*@NonInvalid*/ @NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, PivotSupport.SET_CLSSid_OCLExpression, ownedInit);
+					final /*@NonInvalid*/ boolean isEmpty = CollectionIsEmptyOperation.INSTANCE.evaluate(oclAsSet).booleanValue();
+					//
+					if (!isEmpty) {					// Normal unsuccessful body evaluation result
+						forAll = ValueUtil.FALSE_VALUE;
+						break;														// Stop immediately
+					}
+					else if (isEmpty) {				// Normal successful body evaluation result
+						;															// Carry on
+					}
+					else {															// Impossible badly typed result
+						accumulator = new InvalidValueException(PivotMessages.NonBooleanBody, "forAll");
+					}
 				}
-				catch (Exception THROWN_CAUGHT_forAll) {
-					CAUGHT_forAll = ValueUtil.createInvalidValue(THROWN_CAUGHT_forAll);
-				}
-				final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, constraintName, this, (Object)null, diagnostics, context, (Object)null, getSeverity, CAUGHT_forAll, PivotSupport.INT_0).booleanValue();
+				final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, constraintName, this, (Object)null, diagnostics, context, (Object)null, getSeverity, forAll, PivotSupport.INT_0).booleanValue();
 				IF_le = logDiagnostic;
 			}
 			return IF_le;