[580143] Add oclBase() / oclExtension() tests
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
index b9f56d1..55fff22 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
@@ -52,6 +52,7 @@
 			int index = path.indexOf(csPathElement);
 			int indexes = path.size();
 			boolean lastElement = index >= indexes-1;
+			environmentView.setIsQualified(index > 0);
 			environmentView.setIsQualifier(!lastElement);
 			if (lastElement) {			// Last element may have a scope filter
 				scopeFilter = csPathName.getScopeFilter();
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
index 8f55a25..97e0369 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
@@ -13,6 +13,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jdt.annotation.NonNull;
@@ -86,7 +87,8 @@
 		public String getMessage(@NonNull EObject eObject, @NonNull String linkText) {
 			PathElementCS csPathElement = (PathElementCS) eObject;
 			PathNameCS pathName = csPathElement.getOwningPathName();
-			List<PathElementCS> path = pathName.getOwnedPathElements();
+			EList<PathElementCS> pathElements = pathName.getOwnedPathElements();
+			List<PathElementCS> path = pathElements;
 			int index = path.indexOf(csPathElement);
 			for (int i = 0; i < index; i++) {
 				PathElementCS csElement = path.get(i);
@@ -101,11 +103,22 @@
 			}
 			assert csContext != null;
 			String messageTemplate;
+			String typeText = null;
 			String argumentText = null;
 			ExpCS navigationArgument = null;
 			Type sourceType = null;
 			if ((index + 1) < path.size()) {
 				messageTemplate = PivotMessagesInternal.UnresolvedNamespace_ERROR_;
+				if (pathElements.size() > 0) {
+					StringBuilder s = new StringBuilder();
+					for (int i = 0; i < index; i++) {
+						if (i > 0) {
+							s.append("::");
+						}
+						s.append(pathElements.get(i));
+					}
+					typeText = s.toString();
+				}
 			}
 			else if (csContext instanceof NameExpCS) {
 				NameExpCS csNameExp = (NameExpCS)csContext;
@@ -134,7 +147,16 @@
 				if (csNameExp.getSourceTypeValue() != null) {
 					sourceType = csNameExp.getSourceTypeValue();
 				}
-				linkText = pathName.toString();
+				if (index > 0) {
+					StringBuilder s = new StringBuilder();
+					for (int i = 0; i < index; i++) {
+						if (i > 0) {
+							s.append("::");
+						}
+						s.append(pathElements.get(i));
+					}
+					typeText = s.toString();
+				}
 			}
 			else if (csContext instanceof TypeNameExpCS) {
 				messageTemplate = PivotMessagesInternal.UnresolvedType_ERROR_;
@@ -155,61 +177,63 @@
 			else {
 				messageTemplate = "Unresolved ''{0}'' ''{1}''";
 			}
-			assert messageTemplate != null;
-			TypedElement source = null;
-			ExpCS csSource = navigationArgument;
-			OperatorExpCS csOperator = null;
-			for (ExpCS aSource = csSource; aSource != null; ) {										// FIXME rewrite me
-				csOperator = aSource.getLocalParent();
-				if ((csOperator != null) && (csOperator.getSource() != aSource)) {
-					csSource = csOperator.getSource();
-					break;
+			if (typeText == null) {
+				assert messageTemplate != null;
+				TypedElement source = null;
+				ExpCS csSource = navigationArgument;
+				OperatorExpCS csOperator = null;
+				for (ExpCS aSource = csSource; aSource != null; ) {										// FIXME rewrite me
+					csOperator = aSource.getLocalParent();
+					if ((csOperator != null) && (csOperator.getSource() != aSource)) {
+						csSource = csOperator.getSource();
+						break;
+					}
+					EObject eContainer = aSource.eContainer();
+					if (eContainer instanceof NavigatingArgCS) {
+						aSource = ((NavigatingArgCS)eContainer).getOwningRoundBracketedClause().getOwningNameExp();
+					}
+					else if (eContainer instanceof InfixExpCS) {
+						aSource = (InfixExpCS)eContainer;
+					}
+					else if (eContainer instanceof PrefixExpCS) {
+						aSource = (PrefixExpCS)eContainer;
+					}
+					else if (eContainer instanceof NestedExpCS) {
+						aSource = (NestedExpCS)eContainer;
+					}
+					else if (eContainer instanceof SpecificationCS) {
+						ExpressionInOCL expression = PivotUtil.getContainingExpressionInOCL(((SpecificationCS)eContainer).getPivot());
+						source = expression!= null ? expression.getOwnedContext() : null;
+						break;
+					}
+					else {
+						break;
+					}
 				}
-				EObject eContainer = aSource.eContainer();
-				if (eContainer instanceof NavigatingArgCS) {
-					aSource = ((NavigatingArgCS)eContainer).getOwningRoundBracketedClause().getOwningNameExp();
+				if (source == null) {
+					if ((csSource != null) && (csSource != navigationArgument)) {
+						source = PivotUtil.getPivot(OCLExpression.class, csSource);
+					}
 				}
-				else if (eContainer instanceof InfixExpCS) {
-					aSource = (InfixExpCS)eContainer;
-				}
-				else if (eContainer instanceof PrefixExpCS) {
-					aSource = (PrefixExpCS)eContainer;
-				}
-				else if (eContainer instanceof NestedExpCS) {
-					aSource = (NestedExpCS)eContainer;
-				}
-				else if (eContainer instanceof SpecificationCS) {
-					ExpressionInOCL expression = PivotUtil.getContainingExpressionInOCL(((SpecificationCS)eContainer).getPivot());
-					source = expression!= null ? expression.getOwnedContext() : null;
-					break;
-				}
-				else {
-					break;
-				}
-			}
-			if (source == null) {
-				if ((csSource != null) && (csSource != navigationArgument)) {
-					source = PivotUtil.getPivot(OCLExpression.class, csSource);
-				}
-			}
-			if (source != null) {
-				if (sourceType == null) {
-					sourceType = source.getType();
-				}
-				if (csOperator != null) {
-					boolean isAggregate = PivotUtil.isAggregate(sourceType);
-					if (isAggregate) {
-						String navigationOperatorName = csOperator.getName();
-						if (PivotUtil.isObjectNavigationOperator(navigationOperatorName)) {
-							if (source.eContainingFeature() == PivotPackage.Literals.CALL_EXP__OWNED_SOURCE) {
-								EObject eContainer = source.eContainer();
-								if (eContainer instanceof IteratorExp) {
-									IteratorExp iteratorExp = (IteratorExp)eContainer;
-									if (iteratorExp.isIsImplicit()) {
-										LibraryFeature iterationImplementation = iteratorExp.getReferredIteration().getImplementation();
-										if (iterationImplementation == CollectIteration.INSTANCE) {
-											Variable iterator = PivotUtil.getOwnedIterators(iteratorExp).iterator().next();
-											sourceType = PivotUtil.getType(iterator);
+				if (source != null) {
+					if (sourceType == null) {
+						sourceType = source.getType();
+					}
+					if (csOperator != null) {
+						boolean isAggregate = PivotUtil.isAggregate(sourceType);
+						if (isAggregate) {
+							String navigationOperatorName = csOperator.getName();
+							if (PivotUtil.isObjectNavigationOperator(navigationOperatorName)) {
+								if (source.eContainingFeature() == PivotPackage.Literals.CALL_EXP__OWNED_SOURCE) {
+									EObject eContainer = source.eContainer();
+									if (eContainer instanceof IteratorExp) {
+										IteratorExp iteratorExp = (IteratorExp)eContainer;
+										if (iteratorExp.isIsImplicit()) {
+											LibraryFeature iterationImplementation = iteratorExp.getReferredIteration().getImplementation();
+											if (iterationImplementation == CollectIteration.INSTANCE) {
+												Variable iterator = PivotUtil.getOwnedIterators(iteratorExp).iterator().next();
+												sourceType = PivotUtil.getType(iterator);
+											}
 										}
 									}
 								}
@@ -217,21 +241,21 @@
 						}
 					}
 				}
-			}
-			String typeText = "";
-			if (source != null) {
-				typeText = PivotConstantsInternal.UNKNOWN_TYPE_TEXT;
-				if (sourceType == null) {
-					sourceType = source.getType();
-				}
-				if (sourceType != null) {
-				//	sourceType = PivotUtil.getBehavioralType(sourceType);
-					OperatorExpCS csParent = navigationArgument != null ? navigationArgument.getLocalParent() : null;
-					if (!PivotUtil.isAggregate(sourceType) && NavigationUtil.isNavigationInfixExp(csParent) && (csParent != null) && PivotUtil.isAggregateNavigationOperator(((InfixExpCS)csParent).getName())) {
-						typeText = "Set(" + sourceType.toString() + ")";
+				typeText = "";
+				if (source != null) {
+					typeText = PivotConstantsInternal.UNKNOWN_TYPE_TEXT;
+					if (sourceType == null) {
+						sourceType = source.getType();
 					}
-					else {
-						typeText = sourceType.toString();
+					if (sourceType != null) {
+					//	sourceType = PivotUtil.getBehavioralType(sourceType);
+						OperatorExpCS csParent = navigationArgument != null ? navigationArgument.getLocalParent() : null;
+						if (!PivotUtil.isAggregate(sourceType) && NavigationUtil.isNavigationInfixExp(csParent) && (csParent != null) && PivotUtil.isAggregateNavigationOperator(((InfixExpCS)csParent).getName())) {
+							typeText = "Set(" + sourceType.toString() + ")";
+						}
+						else {
+							typeText = sourceType.toString();
+						}
 					}
 				}
 			}
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml b/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
index 922e033..8f99d76 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:InternationalizedProfile="http://www.eclipse.org/ocl/examples/Internationalized" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/ocl/examples/Internationalized Internationalized.profile.uml#_1CnJUOyFEeK3EpfBjgn1Sw">
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:InternationalizedProfile="http://www.eclipse.org/ocl/examples/Internationalized" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/ocl/examples/Internationalized Internationalized.profile.uml#_1CnJUOyFEeK3EpfBjgn1Sw">
   <uml:Model xmi:id="_iHBam_EUEeGbmcl4mtVQXA" name="Model" URI="http://www.eclipse.org/ocl/examples/International">
-    <packageImport xmi:type="uml:PackageImport" xmi:id="_iHBanPEUEeGbmcl4mtVQXA">
+    <packageImport xmi:id="_iHBanPEUEeGbmcl4mtVQXA">
       <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
     </packageImport>
     <packagedElement xmi:type="uml:Class" xmi:id="_k1-T4PEUEeGbmcl4mtVQXA" name="EnglishClass">
-      <generalization xmi:type="uml:Generalization" xmi:id="_NfH6gPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_zXzMUPEZEeGbmcl4mtVQXA" name="englishName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+      <generalization xmi:id="_NfH6gPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+      <ownedAttribute xmi:id="_zXzMUPEZEeGbmcl4mtVQXA" name="englishName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
         <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__48YsPEZEeGbmcl4mtVQXA" value="1"/>
         <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__48YsfEZEeGbmcl4mtVQXA" value="1"/>
         <defaultValue xmi:type="uml:LiteralString" xmi:id="__48YsvEZEeGbmcl4mtVQXA">
@@ -15,8 +15,8 @@
       </ownedAttribute>
     </packagedElement>
     <packagedElement xmi:type="uml:Class" xmi:id="_zj3EoPEUEeGbmcl4mtVQXA" name="FrenchClass">
-      <generalization xmi:type="uml:Generalization" xmi:id="_OHlosPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_B5MZMPEaEeGbmcl4mtVQXA" name="frenchName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+      <generalization xmi:id="_OHlosPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+      <ownedAttribute xmi:id="_B5MZMPEaEeGbmcl4mtVQXA" name="frenchName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
         <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EMLIcPEaEeGbmcl4mtVQXA" value="1"/>
         <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EMLIcfEaEeGbmcl4mtVQXA" value="1"/>
         <defaultValue xmi:type="uml:LiteralString" xmi:id="_EMLIcvEaEeGbmcl4mtVQXA">
@@ -25,8 +25,8 @@
       </ownedAttribute>
     </packagedElement>
     <packagedElement xmi:type="uml:Class" xmi:id="_4Ci2cPEUEeGbmcl4mtVQXA" name="GermanClass">
-      <generalization xmi:type="uml:Generalization" xmi:id="_Oq_3wPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_FGMgsPEaEeGbmcl4mtVQXA" name="germanName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+      <generalization xmi:id="_Oq_3wPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+      <ownedAttribute xmi:id="_FGMgsPEaEeGbmcl4mtVQXA" name="germanName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
         <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HHfDAPEaEeGbmcl4mtVQXA" value="1"/>
         <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HHfDAfEaEeGbmcl4mtVQXA" value="1"/>
         <defaultValue xmi:type="uml:LiteralString" xmi:id="_HHfDAvEaEeGbmcl4mtVQXA">
@@ -35,11 +35,11 @@
       </ownedAttribute>
     </packagedElement>
     <packagedElement xmi:type="uml:Class" xmi:id="_rsu64PEVEeGbmcl4mtVQXA" name="PlainClass">
-      <generalization xmi:type="uml:Generalization" xmi:id="_POaG0PEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+      <generalization xmi:id="_POaG0PEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
     </packagedElement>
     <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_8dgMkPEZEeGbmcl4mtVQXA" name="String"/>
     <packagedElement xmi:type="uml:Class" xmi:id="_JRPk0PEaEeGbmcl4mtVQXA" name="LanguageClass">
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_LKWbgPEaEeGbmcl4mtVQXA" name="name" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+      <ownedAttribute xmi:id="_LKWbgPEaEeGbmcl4mtVQXA" name="name" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
         <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MY55UPEaEeGbmcl4mtVQXA" value="1"/>
         <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MY55UfEaEeGbmcl4mtVQXA" value="1"/>
         <defaultValue xmi:type="uml:LiteralString" xmi:id="_MY55UvEaEeGbmcl4mtVQXA">
@@ -47,14 +47,20 @@
         </defaultValue>
       </ownedAttribute>
     </packagedElement>
-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sMi40PEUEeGbmcl4mtVQXA">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sMsp0PEUEeGbmcl4mtVQXA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+    <packagedElement xmi:type="uml:Class" xmi:id="_VdLzsO2OEeyedcx5-3T3Sg" name="MultiLingualClass">
+      <generalization xmi:id="_VdLzse2OEeyedcx5-3T3Sg" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+    </packagedElement>
+    <profileApplication xmi:id="_sMi40PEUEeGbmcl4mtVQXA">
+      <eAnnotations xmi:id="_sMsp0PEUEeGbmcl4mtVQXA" source="http://www.eclipse.org/uml2/2.0.0/UML">
         <references xmi:type="ecore:EPackage" href="Internationalized.profile.uml#_UuTWoOyUEeK3EpfBjgn1Sw"/>
       </eAnnotations>
-      <appliedProfile xmi:type="uml:Profile" href="Internationalized.profile.uml#_bNIm0PETEeGbmcl4mtVQXA"/>
+      <appliedProfile href="Internationalized.profile.uml#_bNIm0PETEeGbmcl4mtVQXA"/>
     </profileApplication>
   </uml:Model>
   <InternationalizedProfile:InEnglish xmi:id="_t7-PEPEUEeGbmcl4mtVQXA" base_Class="_k1-T4PEUEeGbmcl4mtVQXA" text="Thank You"/>
   <InternationalizedProfile:InFrench xmi:id="_29NmEPEUEeGbmcl4mtVQXA" base_Class="_zj3EoPEUEeGbmcl4mtVQXA" text="Merci" face="ITALIC"/>
   <InternationalizedProfile:InGerman xmi:id="_6WkukPEUEeGbmcl4mtVQXA" base_Class="_4Ci2cPEUEeGbmcl4mtVQXA" text="Danke Schon" face="BOLD"/>
+  <InternationalizedProfile:InEnglish xmi:id="_ehqr8O2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
+  <InternationalizedProfile:InFrench xmi:id="_ehqr8e2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
+  <InternationalizedProfile:InGerman xmi:id="_ehqr8u2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
 </xmi:XMI>
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
index 25de97a..fd76bce 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
@@ -552,10 +552,10 @@
 		ocl.assertQueryEquals(redApple, redApple, "self.oclAsType(fruit::Apple)");
 		ocl.assertQueryEquals(redApple, idResolver.createSetOfEach(TypeId.SET, redApple), "self->oclAsType(Set(Fruit))");
 		ocl.assertQueryEquals(redApple, idResolver.createSetOfEach(TypeId.SET, redApple), "self->oclAsType(Set(fruit::Apple))");
-		ocl.assertSemanticErrorQuery(appleType, "self.oclAsType(fruit::fruit::Apple)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "fruit");	// Demonstrates Bug 353985
+		ocl.assertSemanticErrorQuery(appleType, "self.oclAsType(fruit::fruit::Apple)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "fruit", "fruit");	// Demonstrates Bug 353985
 		ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::apple::BadApple))", PivotMessagesInternal.UnresolvedType_ERROR_, "", "BadApple");
 		ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::apple::BadApple))", PivotMessagesInternal.UnresolvedType_ERROR_, "", "BadApple");
-		ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "badapple");
+		ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "fruit", "badapple");
 		ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(badfruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "badfruit");
 		ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::apple::EatingApple))");
 		ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::Tree))");
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
index dbd9956..65c19d2 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
@@ -303,7 +303,7 @@
 		ocl.assertValidQuery(asTrain, "self.oclIsKindOf(RootElement::Train2)");		// Sibling class => false
 		ocl.assertValidQuery(asTrain, "self.oclIsKindOf(TestProfile::Train)");		// Stereotype metaclass => false
 		ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement::Train1", "Train");
-		ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(RootElement::Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement::Train1", "RootElement::Train");
+		ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(RootElement::Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement", "Train");
 		//
 		ocl.assertValidQuery(asTrain, "let t = Train1 in self.oclIsKindOf(t)");
 		ocl.assertValidQuery(asTrain, "let t = Train2 in self.oclIsKindOf(t)");
@@ -311,7 +311,7 @@
 		ocl.assertValidQuery(asTrain, "let t = RootElement::Train2 in self.oclIsKindOf(t)");
 		ocl.assertValidQuery(asTrain, "let t = TestProfile::Train in self.oclIsKindOf(t)");
 		ocl.assertSemanticErrorQuery(asTrain, "let t = Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "", "Train");
-		ocl.assertSemanticErrorQuery(asTrain, "let t = RootElement::Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "", "RootElement::Train");
+		ocl.assertSemanticErrorQuery(asTrain, "let t = RootElement::Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement", "Train");
 		//
 		//	aTrain = ... no Ecore instance available
 		//	ocl.assertQueryEquals(aTrain, false, "let t = TestProfile::Train in self.oclIsKindOf(t)");
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
index 9b63acb..64a27ec 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
@@ -53,6 +53,8 @@
 import org.junit.After;
 import org.junit.Before;
 
+import com.google.common.collect.Sets;
+
 /**
  * Tests for stereotype expressions.
  */
@@ -95,15 +97,25 @@
 		org.eclipse.uml2.uml.Type umlFrenchClass;
 		org.eclipse.uml2.uml.Type umlGermanClass;
 		org.eclipse.uml2.uml.Type umlLanguageClass;
+		org.eclipse.uml2.uml.Type umlMultiLingualClass;
 		org.eclipse.uml2.uml.Type umlPlainClass;
 		org.eclipse.uml2.uml.Type umlString;
 		UMLElementExtension umlEnglishClassInEnglish;
+		EObject umlEnglishClassInEnglish2;
+		EObject umlMultiLingualClassInEnglish2;
+		EObject umlMultiLingualClassInFrench2;
+		EObject umlMultiLingualClassInGerman2;
 		org.eclipse.ocl.pivot.Class asEnglishClass;
 		org.eclipse.ocl.pivot.Class asFrenchClass;
 		org.eclipse.ocl.pivot.Class asGermanClass;
+		org.eclipse.ocl.pivot.Class asPlainClass;
+		org.eclipse.ocl.pivot.Class asMultiLingualClass;
 		ElementExtension asEnglishClassInEnglish;
 		ElementExtension asFrenchClassInEnglish;
 		ElementExtension asGermanClassInEnglish;
+		ElementExtension asMultiLingualClassInEnglish;
+		ElementExtension asMultiLingualClassInFrench;
+		ElementExtension asMultiLingualClassInGerman;
 
 		public InternationalizedMetamodel(@NonNull OCL ocl, @NonNull InternationalizedProfile mmm, org.eclipse.uml2.uml.Package umlPackage) throws ParserException {
 			EnvironmentFactoryInternalExtension environmentFactory = (EnvironmentFactoryInternalExtension)ocl.getEnvironmentFactory();
@@ -118,16 +130,26 @@
 			umlFrenchClass = umlPackage.getOwnedType("FrenchClass");
 			umlGermanClass = umlPackage.getOwnedType("GermanClass");
 			umlLanguageClass = umlPackage.getOwnedType("LanguageClass");
+			umlMultiLingualClass = umlPackage.getOwnedType("MultiLingualClass");
 			umlPlainClass = umlPackage.getOwnedType("PlainClass");
 			umlString = umlPackage.getOwnedType("String");
 			asEnglishClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlEnglishClass);
 			asFrenchClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlFrenchClass);
 			asGermanClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlGermanClass);
+			asPlainClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlPlainClass);
+			asMultiLingualClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlMultiLingualClass);
 			//
 			umlEnglishClassInEnglish = (UMLElementExtension) UMLElementExtension.getUMLElementExtension(mmm.asInEnglishStereotype, umlEnglishClass);
 			asEnglishClassInEnglish = NameUtil.getNameable(asEnglishClass.getOwnedExtensions(), "EnglishClass$InEnglish");
 			asFrenchClassInEnglish = NameUtil.getNameable(asFrenchClass.getOwnedExtensions(), "FrenchClass$InFrench");
 			asGermanClassInEnglish = NameUtil.getNameable(asGermanClass.getOwnedExtensions(), "GermanClass$InGerman");
+			asMultiLingualClassInEnglish = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InEnglish");
+			asMultiLingualClassInFrench = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InFrench");
+			asMultiLingualClassInGerman = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InGerman");
+			umlEnglishClassInEnglish2 = asEnglishClassInEnglish.getESObject();
+			umlMultiLingualClassInEnglish2 = asMultiLingualClassInEnglish.getESObject();
+			umlMultiLingualClassInFrench2 = asMultiLingualClassInFrench.getESObject();
+			umlMultiLingualClassInGerman2 = asMultiLingualClassInGerman.getESObject();
 		}
 	}
 
@@ -312,7 +334,7 @@
 			IdResolver idResolver2 = ocl2.getIdResolver();
 			ocl2.setModelManager(new LazyEcoreModelManager(ocl2.mm.umlEnglishClass.eResource().getContents(), null, null));
 			ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET), "Model::EnglishClass.allInstances()");
-			ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET, ocl2.mm.umlPlainClass, ocl2.mm.umlEnglishClass, ocl2.mm.umlLanguageClass, ocl2.mm.umlFrenchClass, ocl2.mm.umlGermanClass), "Class.allInstances()");
+			ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET, ocl2.mm.umlPlainClass, ocl2.mm.umlEnglishClass, ocl2.mm.umlLanguageClass, ocl2.mm.umlFrenchClass, ocl2.mm.umlGermanClass, ocl2.mm.umlMultiLingualClass), "Class.allInstances()");
 			ocl2.dispose();
 		}
 		//M1 - Pivot
@@ -320,7 +342,7 @@
 			MyOCL ocl3 = createOCL();
 			IdResolver idResolver3 = ocl3.getIdResolver();
 			ocl3.setModelManager(new LazyEcoreModelManager(ocl3.mm.asEnglishClass.eResource().getContents(), null, null));
-			ocl3.assertQueryEquals(ocl3.mm.asEnglishClass, idResolver3.createSetOfEach(TypeId.SET, ocl3.mm.asEnglishClassInEnglish, ocl3.mm.asFrenchClassInEnglish, ocl3.mm.asGermanClassInEnglish), "ocl::ElementExtension.allInstances()");
+			ocl3.assertQueryEquals(ocl3.mm.asEnglishClass, idResolver3.createSetOfEach(TypeId.SET, ocl3.mm.asEnglishClassInEnglish, ocl3.mm.asFrenchClassInEnglish, ocl3.mm.asGermanClassInEnglish, ocl3.mm.asMultiLingualClassInEnglish, ocl3.mm.asMultiLingualClassInFrench, ocl3.mm.asMultiLingualClassInGerman), "ocl::ElementExtension.allInstances()");
 			//
 			//    	ocl.assertQueryEquals(ocl.mm.umlMMM, metamodelManager.createSetValueOf(null, ocl.mm.string, ocl.mm.plainClass, ocl.mm.englishClass, ocl.mm.languageClass, ocl.mm.frenchClass, ocl.mm.germanClass), "uml::Stereotype.allInstances()");
 			//    	ocl.assertQueryEquals(metamodelManager.getOclAnyType(), metamodelManager.createSetValueOf(null, ocl.mm.string, ocl.mm.plainClass, ocl.mm.englishClass, ocl.mm.languageClass, ocl.mm.frenchClass, ocl.mm.germanClass), "ocl::Stereotype.allInstances()");
@@ -385,4 +407,109 @@
 		ocl.assertQueryEquals(ocl.mm.umlGermanClass, umlBold, "self.extension_Internationalized.face()");
 		ocl.dispose();
 	}
+
+	/**
+	 * Tests M2 parsing and M1 evaluation using oclBase().
+	 */
+	public void testStereotypes_oclBase() throws Exception {
+		MyOCL ocl = createOCL();
+		//
+		//	AS => AS
+		//
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClassInEnglish, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClass, "self.oclBase()");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClass, "self.oclBase(Model::EnglishClass)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, null, "self.oclBase(Model::GermanClass)");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClass, "self.oclBase()");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClass, "self.oclBase(Model::MultiLingualClass)");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, null, "self.oclBase(Model::EnglishClass)");
+		//
+		//	UML => UML
+		//
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish2, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClass, "self.oclBase()");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClass, "self.oclBase(Model::EnglishClass)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, null, "self.oclBase(Model::GermanClass)");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClass, "self.oclBase()");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClass, "self.oclBase(Model::MultiLingualClass)");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, null, "self.oclBase(Model::EnglishClass)");
+		//
+		ocl.dispose();
+	}
+
+	/**
+	 * Tests M2 parsing and M1 evaluation using oclExtension()/oclExtensions() and diverse KindOf.
+	 */
+	public void testStereotypes_oclExtensions() throws Exception {
+		MyOCL ocl = createOCL();
+		//
+		//	AS => AS
+		//
+		ocl.assertQueryEquals(ocl.mm.asPlainClass, Sets.newHashSet(), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.asPlainClass, null, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		//
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(), "self.oclExtensions(Standard::Focus)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClassInEnglish, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, null, "self.oclExtension(Standard::Focus)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, null, "self.oclExtension(Ecore::EClass)");
+		//
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClassInFrench, ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClassInFrench, ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions(InternationalizedProfile::InGerman)");
+		ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, ocl.mm.asMultiLingualClassInGerman, "self.oclExtension(InternationalizedProfile::InGerman)");
+		ocl.assertQueryInvalid(ocl.mm.asMultiLingualClass, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		//
+		//	UML => UML
+		//
+		ocl.assertQueryEquals(ocl.mm.umlPlainClass, Sets.newHashSet(), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.umlPlainClass, null, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		//
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mm.umlEnglishClassInEnglish2), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mm.umlEnglishClassInEnglish2), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(), "self.oclExtensions(Standard::Focus)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish2, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, null, "self.oclExtension(Standard::Focus)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, null, "self.oclExtension(Ecore::EClass)");
+		//
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClassInFrench2, ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions()");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClassInFrench2, ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions(InternationalizedProfile::InGerman)");
+		ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, ocl.mm.umlMultiLingualClassInGerman2, "self.oclExtension(InternationalizedProfile::InGerman)");
+		ocl.assertQueryInvalid(ocl.mm.umlMultiLingualClass, "self.oclExtension(InternationalizedProfile::Internationalized)");
+		//
+		//	Errors
+		//
+		ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(standard::Class_Focus)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "standard");
+		ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Standard::NoSuchFocus::WhoCares)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "Standard", "NoSuchFocus");
+		ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Standard::NoSuchFocus)", PivotMessagesInternal.UnresolvedElement_ERROR_, "Standard", "NoSuchFocus");
+		ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Boolean)", PivotMessagesInternal.UnresolvedOperationCall_ERROR_, "Model::EnglishClass", "oclExtension", "Class");
+		ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtensions(Boolean)", PivotMessagesInternal.UnresolvedOperationCall_ERROR_, "Model::EnglishClass", "oclExtensions", "Class");
+		//
+		ocl.dispose();
+	}
+
+	/**
+	 * Tests M2 parsing and M1 evaluation using more diverse oclbBase()/oclExtension()/oclExtensions() and in particular let.
+	 */
+	public void testStereotypes_let_580136() throws Exception {
+		MyOCL ocl = createOCL();
+		//
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClass, "self.oclExtension(InternationalizedProfile::Internationalized).oclBase()");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClass, "self.oclExtension(InternationalizedProfile::Internationalized).oclBase()");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClassInEnglish, "self.oclBase().oclExtension(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClassInEnglish2, "self.oclBase().oclExtension(InternationalizedProfile::Internationalized)");
+		//
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "let st = InternationalizedProfile::Internationalized in self.oclExtensions(st)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions()->selectByKind(InternationalizedProfile::Internationalized)");
+		ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "let st = InternationalizedProfile::Internationalized in self.oclExtensions()->select(oclIsKindOf(st))");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish, "self.extension_Internationalized");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()->select(true)");
+	//bad missing boxing normalization for loop compare	ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()->select(s | s = InternationalizedProfile::InEnglish)");
+		ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(), "self.getAppliedStereotypes()->selectByKind(InternationalizedProfile::Internationalized)");	// wrong metalevel
+		//
+		ocl.dispose();
+	}
 }
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
index 15dcfd0..5979691 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
@@ -92,7 +92,7 @@
 		assertConsoleResult(consolePage, b1Book, "hasSpareCopies(5)", "false\n");
 		//
 		assertConsoleResult(consolePage, ecoreBook, "name", "'Book'\n");
-		assertConsoleResult(consolePage, ecoreBook, "copies", "<b><error>Parsing failure\n</error></b><error>\n1:1: Unresolved Property '::copies'\n</error>");
+		assertConsoleResult(consolePage, ecoreBook, "copies", "<b><error>Parsing failure\n</error></b><error>\n1:1: Unresolved Element '::copies'\n</error>");
 		assertConsoleResult(consolePage, ecoreBook, "oclType().ownedProperties->sortedBy(name)",
 			"ecore::EClass::EClass\n" +
 					"ecore::EClass::EClass\n" +
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
index c2b6781..bf816a4 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
@@ -308,21 +308,21 @@
 		// class AD4 extends A3::A;
 		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "A3"));
 		// class AD011 extends A0::A1::A1::A;
-		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "A1"));
+		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "A0::A1", "A1"));
 		// class BD0 extends B0::B;
 		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B0"));
 		// class BD01 extends B0::B1::B;
 		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B0"));
 		// class BD11 extends B1::B1::B;
-		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B1"));
+		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "B1", "B1"));
 		// class BD2 extends B2::B;
 		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B2"));
 		// class BD3 extends B3::B;
 		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B3"));
 		// class GDC extends G0::C1::GD01;
-		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "C1"));
+		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "G0", "C1"));
 		// class GD01 extends G0::F1::F;
-		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "F1"));
+		bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "G0", "F1"));
 		TestOCL ocl = createOCL();
 		doBadLoadFromString(ocl, "Bug353793bad.oclinecore", testFileBad, bag);
 		ocl.dispose();
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
index 74b7c09..901dc2e 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
@@ -210,8 +210,8 @@
 		// allInstances
 		assertConsoleResult(consolePage, umlEnglishClass, "Stereotype.allInstances()->sortedBy(name)", "");		// Tests Bug 382981
 		assertConsoleResult(consolePage, umlInEnglishStereotype, "Stereotype.allInstances()->sortedBy(name)", "InternationalizedProfile::InEnglish\nInternationalizedProfile::InFrench\nInternationalizedProfile::InGerman\nInternationalizedProfile::Internationalized\n");
-		assertConsoleResult(consolePage, umlEnglishClass, "Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nModel::FrenchClass\nModel::GermanClass\nModel::LanguageClass\nModel::PlainClass\n");
-		assertConsoleResult(consolePage, asEnglishClass, "ocl::Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nEnglishClass$InEnglish\nModel::FrenchClass\nFrenchClass$InFrench\nModel::GermanClass\nGermanClass$InGerman\nModel::LanguageClass\nModel::PlainClass\nString\n");
+		assertConsoleResult(consolePage, umlEnglishClass, "Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nModel::FrenchClass\nModel::GermanClass\nModel::LanguageClass\nModel::MultiLingualClass\nModel::PlainClass\n");
+		assertConsoleResult(consolePage, asEnglishClass, "ocl::Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nEnglishClass$InEnglish\nModel::FrenchClass\nFrenchClass$InFrench\nModel::GermanClass\nGermanClass$InGerman\nModel::LanguageClass\nModel::MultiLingualClass\nMultiLingualClass$InEnglish\nMultiLingualClass$InFrench\nMultiLingualClass$InGerman\nModel::PlainClass\nString\n");
 		//
 		consolePage.cancelValidation();
 		//		ocl.dispose();