[469371] WIP towards oclAsType(ecore::EObject).eContainer()
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/library/oclany/OclAnyOclAsTypeOperation.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/library/oclany/OclAnyOclAsTypeOperation.java
index 3afd0cc..5e14a30 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/library/oclany/OclAnyOclAsTypeOperation.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/library/oclany/OclAnyOclAsTypeOperation.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.ocl.pivot.library.oclany;
 
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.ocl.pivot.StandardLibrary;
@@ -40,8 +42,15 @@
 		if (sourceType.conformsTo(standardLibrary, argType)) {
 			return sourceVal;
 		}
-		else {
-			throw new InvalidValueException(PivotMessages.IncompatibleOclAsTypeSourceType, sourceType, argType);
+		EObject esSourceType = sourceType.getESObject();
+		EObject esArgType = argType.getESObject();
+		if ((esSourceType instanceof EClassifier) && (esArgType instanceof EClassifier)) {
+			Class<?> sourceClass = ((EClassifier)esSourceType).getInstanceClass();
+			Class<?> argClass = ((EClassifier)esArgType).getInstanceClass();
+			if ((sourceClass != null) && (argClass != null) && argClass.isAssignableFrom(sourceClass)) {
+				return sourceVal;
+			}
 		}
+		throw new InvalidValueException(PivotMessages.IncompatibleOclAsTypeSourceType, sourceType, argType);
 	}
 }
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateConstructsTest4.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateConstructsTest4.java
index d2b3c0a..7320635 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateConstructsTest4.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateConstructsTest4.java
@@ -14,6 +14,7 @@
 import java.util.Arrays;
 import java.util.Collection;
 
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.ocl.examples.pivot.tests.EvaluateUMLTest4.MyOCL;
 import org.eclipse.ocl.pivot.PivotTables;
@@ -69,6 +70,12 @@
 		super.tearDown();
 	}
 
+	@Test public void testConstruct_eContents() throws Exception {		
+		TestOCL ocl = createOCL();
+//		ocl.assertQueryFalse(EcorePackage.Literals.EPACKAGE, "self.eContents()");
+		ocl.assertQueryFalse(EcorePackage.Literals.EPACKAGE, "self.oclAsType(ecore::EObject).eContents()");
+	}
+
 	@Test public void testConstruct_if() throws Exception {		
 		TestOCL ocl = createOCL();
 		ocl.assertValidationErrorQuery(null, "if null then 1 else 2 endif",