/** Tests the nested name accesses */
 @Test
 public void test_nested_names() throws InvocationTargetException {
   TestOCL ocl = createOCL();
   initFruitPackage(ocl);
   MetamodelManagerInternal metamodelManager = ocl.getMetamodelManager();
   IdResolver idResolver = ocl.getIdResolver();
   org.eclipse.ocl.pivot.Class appleType =
       metamodelManager.getASOfEcore(org.eclipse.ocl.pivot.Class.class, apple);
   //
   //	Simple model: appleTree contains redApple
   //
   EObject redApple = fruitEFactory.create(apple);
   redApple.eSet(fruit_color, color_red);
   redApple.eSet(fruit_name, "RedApple");
   EObject appleTree = fruitEFactory.create(tree);
   appleTree.eSet(tree_name, "AppleTree");
   @SuppressWarnings("unchecked")
   List<Object> treeFruits = (List<Object>) appleTree.eGet(tree_fruits);
   treeFruits.add(redApple);
   //
   ocl.assertQueryEquals(redApple, "RedApple", "self.name");
   ocl.assertQueryEquals(redApple, "RedApple", "self.Fruit::name");
   ocl.assertQueryEquals(redApple, "RedApple", "self.Apple::name");
   ocl.assertValidationErrorQuery(
       appleType,
       "self.Tree::name",
       PivotMessages.ValidationConstraintIsNotSatisfied_ERROR_,
       PivotTables.STR_PropertyCallExp_c_c_NonStaticSourceTypeIsConformant,
       "self.name");
   ocl.assertQueryEquals(redApple, redApple, "self.oclAsType(Apple)");
   ocl.assertQueryEquals(redApple, redApple, "self.oclAsType(fruit::Apple)");
   ocl.assertQueryEquals(
       redApple, idResolver.createSetOfEach(null, redApple), "self->oclAsType(Set(Fruit))");
   ocl.assertQueryEquals(
       redApple, idResolver.createSetOfEach(null, 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(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(badfruit::badapple::BadApple))",
       PivotMessagesInternal.UnresolvedNamespace_ERROR_,
       "",
       "badfruit");
   ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::apple::EatingApple))");
   ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::Tree))");
   //
   ocl.assertQueryEquals(
       redApple, idResolver.createSetOfEach(null, appleTree), "Tree.allInstances()");
   ocl.assertQueryEquals(
       redApple, idResolver.createSetOfEach(null, appleTree), "fruit::Tree.allInstances()");
   ocl.assertQueryEquals(null, ocl.getEmptySetValue(), "fruit::Tree.allInstances()");
   //
   metamodelManager.addGlobalNamespace("zz", fruitPackage);
   ocl.assertQueryEquals(
       redApple, idResolver.createSetOfEach(null, appleTree), "zz::Tree.allInstances()");
   //
   ocl.assertQueryEquals(
       redApple,
       idResolver.createBagOfEach(null, redApple),
       "Fruit.allInstances().oclAsType(Apple)");
   ocl.assertQueryEquals(
       redApple,
       idResolver.createSetOfEach(null, redApple),
       "Fruit.allInstances()->oclAsType(Set(Apple))");
   ocl.dispose();
 }