[469012] WIP towards more general Console selections
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsole.java b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsole.java
index 878f565..4771ce1 100644
--- a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsole.java
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsole.java
@@ -79,13 +79,21 @@
 		return instance;
 	}
 
+	/** @deprecated API preservation for Mars RC3 */
+	@Deprecated
 	public void setSelection(EObject contextObject) {
+		setSelection((Object)contextObject);
+	}
+
+	public void setSelection(Object contextObject) {
 		String typeName = "null"; //$NON-NLS-1$;
 		String objectName = "null"; //$NON-NLS-1$
 		if (contextObject != null) {
 			objectName = LabelUtil.getLabel(contextObject);
-			typeName = contextObject.eClass().getName();				
+			if (contextObject instanceof EObject) {
+				typeName =  ((EObject)contextObject).eClass().getName();
+			}
 		}
-		setName(NLS.bind(ConsoleMessages.Console_TitleWithContext, objectName, typeName));		
+		setName(NLS.bind(ConsoleMessages.Console_TitleWithContext, objectName, typeName));
 	}
 }
diff --git a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
index c47ae05..1447022 100644
--- a/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
+++ b/examples/org.eclipse.ocl.examples.xtext.console/src/org/eclipse/ocl/examples/xtext/console/OCLConsolePage.java
@@ -168,7 +168,7 @@
 			monitor.subTask(ConsoleMessages.Progress_Synchronising);
 			monitor.worked(1);
 //			CS2ASResourceAdapter csAdapter = CS2ASResourceAdapter.getAdapter((BaseCSResource)resource, metamodelManager);
-			EnvironmentFactory environmentFactory = getEnvironmentFactory(contextObject);
+			EnvironmentFactory environmentFactory = getEnvironmentFactory(getContextObject());
 //			monitor.subTask(ConsoleMessages.Progress_CST);
 //			try {
 //				csAdapter.refreshPivotMappings();
@@ -324,7 +324,7 @@
 	
 	private ISelectionService selectionService;
 	private ISelectionListener selectionListener;
-	private EObject contextObject;
+	private Object contextObject;
 	private ParserContext parserContext;
 	
 	private OCLInternal nullOCL = null;
@@ -789,7 +789,17 @@
 	}
 
 	public EObject getContextObject() {
-		return contextObject;
+		if (contextObject instanceof EObject) {
+			return (EObject) contextObject;
+		}
+		if (contextObject instanceof Iterable<?>) {
+			for (Object object : (Iterable<?>)contextObject) {
+				if (object instanceof EObject) {
+					return (EObject) object;
+				}
+			}
+		}
+		return null;
 	}
 
 	@Override
@@ -855,18 +865,13 @@
 				    org.eclipse.uml2.uml.Element selectedElement = (org.eclipse.uml2.uml.Element)selectedObject;
 					MetamodelManager metamodelManager = getMetamodelManager(selectedElement);
 					contextObject = metamodelManager.getPivotOf(Element.class, selectedElement);
-	            }
-	            else*/ if (selectedObject instanceof EObject) {
-	            	contextObject = (EObject) selectedObject;
-	            }
-	            else {		// FIXME else Value in particular CollectionValue
-	            	contextObject = null;
-	            }
+	            } */
+	            contextObject = selectedObject;
 		    	if (resource instanceof BaseCSResource) {
 		    		((BaseCSResource)resource).dispose();
 		    	}
 		    	
-		    	EnvironmentFactoryInternal environmentFactory = getEnvironmentFactory(contextObject);
+		    	EnvironmentFactoryInternal environmentFactory = getEnvironmentFactory(getContextObject());
 				IdResolver idResolver = environmentFactory.getIdResolver();
 //				DomainType staticType = idResolver.getStaticTypeOf(selectedObject);
 				org.eclipse.ocl.pivot.Class staticType = idResolver.getStaticTypeOf(contextObject);
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/library/executor/JavaType.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/library/executor/JavaType.java
index 7f0c347..3260795 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/library/executor/JavaType.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/library/executor/JavaType.java
@@ -15,6 +15,7 @@
 import org.eclipse.ocl.pivot.CompleteInheritance;
 import org.eclipse.ocl.pivot.Operation;
 import org.eclipse.ocl.pivot.StandardLibrary;
+import org.eclipse.ocl.pivot.TemplateParameter;
 import org.eclipse.ocl.pivot.Type;
 import org.eclipse.ocl.pivot.ids.IdResolver;
 import org.eclipse.ocl.pivot.ids.TypeId;
@@ -122,6 +123,11 @@
 	}
 
 	@Override
+	public @Nullable TemplateParameter isTemplateParameter() {
+		return null;
+	}
+
+	@Override
 	public @NonNull Operation lookupActualOperation(@NonNull StandardLibrary standardLibrary, @NonNull Operation apparentOperation) {
 		CompleteInheritance inheritance = getInheritance(standardLibrary);
 		return inheritance.lookupActualOperation(standardLibrary, apparentOperation);