diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/TestOCL.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/TestOCL.java
index b9ca1c0..ea9c437 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/TestOCL.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/TestOCL.java
@@ -41,6 +41,7 @@
 import org.eclipse.ocl.pivot.OperationCallExp;
 import org.eclipse.ocl.pivot.Parameter;
 import org.eclipse.ocl.pivot.PivotFactory;
+import org.eclipse.ocl.pivot.PivotPackage;
 import org.eclipse.ocl.pivot.PivotTables;
 import org.eclipse.ocl.pivot.Property;
 import org.eclipse.ocl.pivot.Type;
@@ -54,12 +55,14 @@
 import org.eclipse.ocl.pivot.internal.messages.PivotMessagesInternal;
 import org.eclipse.ocl.pivot.internal.resource.ASResourceFactoryRegistry;
 import org.eclipse.ocl.pivot.internal.resource.EnvironmentFactoryAdapter;
+import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
 import org.eclipse.ocl.pivot.internal.utilities.EnvironmentFactoryInternal;
 import org.eclipse.ocl.pivot.internal.utilities.OCLInternal;
 import org.eclipse.ocl.pivot.library.LibraryUnaryOperation;
 import org.eclipse.ocl.pivot.messages.PivotMessages;
 import org.eclipse.ocl.pivot.resource.CSResource;
 import org.eclipse.ocl.pivot.resource.ProjectManager;
+import org.eclipse.ocl.pivot.resource.ProjectManager.IPackageDescriptor;
 import org.eclipse.ocl.pivot.utilities.ClassUtil;
 import org.eclipse.ocl.pivot.utilities.MetamodelManager;
 import org.eclipse.ocl.pivot.utilities.ParserContext;
@@ -98,16 +101,24 @@
 		else {
 			this.testName = testName;
 		}
-//		projectManager.initializeResourceSet(resourceSet);		// FIXME redundant ?
 		EPackage.Registry packageRegistry = resourceSet.getPackageRegistry();
 		packageRegistry.put(org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eNS_URI, org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eINSTANCE);
 		packageRegistry.put(org.eclipse.uml2.codegen.ecore.genmodel.GenModelPackage.eNS_URI, org.eclipse.uml2.codegen.ecore.genmodel.GenModelPackage.eINSTANCE);
 		//
 		// http://www.eclipse.org/emf/2002/Ecore is referenced by just about any model load
-		// Ecore.core is referenced from Ecore.genmodel that is used by the CG to coordinate Ecore objects with their Java classes
-		// therefore suppress diagnostics about confusing usage.
+		// Ecore.core/Pivot.core  is referenced from Ecore.genmodel/Pivot.genmodel that is used by the CG to coordinate
+		// Ecore/Pivot objects with their Java classes. Therefore force the Java EPackage to hide the Resource.
 		//
-		projectManager.configureLoadFirst(resourceSet, EcorePackage.eNS_URI);
+		configureGeneratedPackage(EcorePackage.eNS_URI);
+		configureGeneratedPackage(PivotPackage.eNS_URI);
+	}
+
+	private void configureGeneratedPackage( /*@NonNull*/ String uriString) {
+		URI nsURI = URI.createURI(uriString);
+		IPackageDescriptor packageDescriptor = getProjectManager().getPackageDescriptor(nsURI);
+		if (packageDescriptor != null) {
+			packageDescriptor.configure(getResourceSet(), StandaloneProjectMap.LoadGeneratedPackageStrategy.INSTANCE, null);
+		}
 	}
 
 	public void addSupertype(org.eclipse.ocl.pivot.@NonNull Class aClass, org.eclipse.ocl.pivot.@NonNull Class superClass) {
