/** Tests the basic name accesses */
 @Test
 public void test_container_navigation() throws InvocationTargetException {
   TestOCL ocl = createOCL();
   initFruitPackage(ocl);
   MetamodelManagerInternal metamodelManager = ocl.getMetamodelManager();
   IdResolver idResolver = ocl.getIdResolver();
   metamodelManager.addGlobalNamespace("fruit", fruitPackage);
   //
   //	Simple model: aTree contains redApple
   //
   EObject redApple = fruitEFactory.create(apple);
   redApple.eSet(fruit_color, color_red);
   //		EObject greenApple = fruitEFactory.create(apple);
   //		greenApple.eSet(fruit_color, color_green);
   EObject aTree = fruitEFactory.create(tree);
   @SuppressWarnings("unchecked")
   List<Object> treeFruits = (List<Object>) aTree.eGet(tree_fruits);
   treeFruits.add(redApple);
   //
   Type pivotTree = metamodelManager.getASOfEcore(Type.class, tree);
   //
   ocl.assertQueryEquals(redApple, color_red, "let aFruit : fruit::Fruit = self in aFruit.color");
   ocl.assertQueryEquals(
       aTree,
       idResolver.createOrderedSetOfEach(null, redApple),
       "let aTree : fruit::Tree = self in aTree.fruits");
   ocl.assertQueryEquals(aTree, idResolver.createOrderedSetOfEach(null, redApple), "self.fruits");
   ocl.assertQueryEquals(aTree, idResolver.createOrderedSetOfEach(null, redApple), "fruits");
   ocl.assertQueryEquals(redApple, aTree, "self.oclContainer()");
   ocl.assertQueryEquals(redApple, aTree, "self.Tree");
   //
   //	type/property ambiguity is resolved to type.
   //
   ocl.assertQueryEquals(redApple, pivotTree, "Tree");
   //
   //	type/property ambiguity is resolved to type.
   //
   ocl.assertQueryInvalid(redApple, "self.oclAsType(Tree)");
   //		ocl.assertQueryEquals(aTree, ValuesUtil.createOrderedSetValue(null, redApple),
   // "self.oclAsType(Tree).fruits");
   ocl.dispose();
 }