wip CompleteClass NameManager
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
index e4fe556..4e2b6aa 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
@@ -128,7 +128,6 @@
 import org.eclipse.ocl.pivot.ids.PropertyId;
 import org.eclipse.ocl.pivot.ids.TuplePartId;
 import org.eclipse.ocl.pivot.ids.TypeId;
-import org.eclipse.ocl.pivot.internal.complete.CompleteClassInternal;
 import org.eclipse.ocl.pivot.internal.complete.StandardLibraryInternal;
 import org.eclipse.ocl.pivot.internal.manager.FinalAnalysis;
 import org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager;
@@ -775,6 +774,13 @@
 		return currentNameManager;
 	}
 
+	public  @Nullable NestedNameManager popPackageNameManager() {
+		assert (currentNameManager != null) && (currentNameManager.getCGScope() instanceof CGPackage);
+		nameManagerStack.pop();
+		currentNameManager = nameManagerStack.isEmpty() ? null : nameManagerStack.peek();
+		return currentNameManager;
+	}
+
 	public @NonNull NestedNameManager pushClassNameManager(@NonNull CGClass cgClass) {
 		NestedNameManager nameManager = globalNameManager.basicGetNestedNameManager(cgClass);
 		if (nameManager == null) {			//
@@ -797,6 +803,17 @@
 		return nameManager;
 	}
 
+	public @NonNull NestedNameManager pushPackageNameManager(@NonNull CGPackage cgPackage) {
+		NestedNameManager nameManager = globalNameManager.basicGetNestedNameManager(cgPackage);
+		if (nameManager == null) {			//
+			NestedNameManager parentNameManager = currentNameManager != null ? currentNameManager.getClassParentNameManager() : null;
+			nameManager = globalNameManager.createNestedNameManager(parentNameManager, cgPackage);
+		}
+		currentNameManager = nameManager;
+		nameManagerStack.push(nameManager);
+		return nameManager;
+	}
+
 	protected void setCGVariableInit(@NonNull CGVariable cgVariable, @NonNull CGValuedElement cgInit) {
 	//	NameResolution variableNameResolution = cgVariable.getNameResolution();
 		if (cgInit.basicGetNameResolution() == null) {
@@ -845,8 +862,8 @@
 	 */
 	@Override
 	public @NonNull CGClass visitClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
-		CompleteClassInternal completeClass = getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
-		asClass = completeClass.getPrimaryClass();
+	//	CompleteClassInternal completeClass = getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
+	//	asClass = completeClass.getPrimaryClass();
 		CGClass cgClass = analyzer.basicGetCGClass(asClass);
 		if (cgClass == null) {
 			cgClass = generateClassDeclaration(asClass, null);
@@ -1118,6 +1135,7 @@
 		CGPackage cgPackage = CGModelFactory.eINSTANCE.createCGPackage();
 		cgPackage.setAst(asPackage);
 		globalNameManager.declareEagerName(cgPackage, PivotUtil.getName(asPackage));
+		pushPackageNameManager(cgPackage);
 		for (org.eclipse.ocl.pivot.@NonNull Class asType : ClassUtil.nullFree(asPackage.getOwnedClasses())) {
 			CGClass cgClass = doVisit(CGClass.class, asType);
 			cgPackage.getClasses().add(cgClass);
@@ -1126,6 +1144,7 @@
 			CGPackage cgNestedPackage = doVisit(CGPackage.class, asNestedPackage);
 			cgPackage.getPackages().add(cgNestedPackage);
 		}
+		popPackageNameManager();
 		return cgPackage;
 	}
 
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
index 5de61bf..35920f2 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
@@ -184,7 +184,7 @@
 	public void addCGClass(@NonNull CGClass cgClass) {
 		org.eclipse.ocl.pivot.Class asClass = CGUtil.getAST(cgClass);
 		CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
-		assert asClass == completeClass.getPrimaryClass();
+	//	assert asClass == completeClass.getPrimaryClass();
 		CGClass old = asClass2cgClass.put(completeClass, cgClass);
 		assert old == null;
 		if (cgRootClass == null) {
@@ -304,7 +304,7 @@
 
 	public @Nullable CGClass basicGetCGClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
 		CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
-		assert asClass == completeClass.getPrimaryClass();
+	//	assert asClass == completeClass.getPrimaryClass();
 		return asClass2cgClass.get(completeClass);
 	}
 
@@ -588,7 +588,7 @@
 
 	public @NonNull CGClass getCGClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
 		CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
-		assert asClass == completeClass.getPrimaryClass();
+	//	assert asClass == completeClass.getPrimaryClass();
 		return ClassUtil.nonNullState(asClass2cgClass.get(completeClass));
 	/*	CGClass cgClass = asClass2cgClass.get(asClass);
 		if (cgClass == null) {
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
index e426597..4699c46 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
@@ -62,7 +62,7 @@
 	protected final @NonNull NameManager parent;
 	protected final @NonNull CGNamedElement cgScope;
 	protected final @NonNull NamedElement asScope;
-	protected final @NonNull Type asType;
+	protected final @NonNull Type zasType;
 	protected final boolean isStatic;
 
 	/**
@@ -104,7 +104,8 @@
 		this.cgScope = cgScope;
 		this.asScope = CGUtil.getAST(cgScope);
 		if (parent instanceof GlobalNameManager) {
-			this.asType = ClassUtil.nonNullState(PivotUtil.getContainingType(asScope));
+		//	this.asType = ClassUtil.nonNullState(PivotUtil.getContainingType(asScope));
+			this.asType = PivotUtil.basicGetContainingType(asScope);
 		}
 		else {
 			this.asType = ((NestedNameManager)parent).asType;