anchor.diff:    }
   
     void test_getClassAsInstanceOf_generic_with() {
  -    // Create the class hierarchy:
  -    //
  -    //  class A<T, U> extends Object {}
  -    //  class B<T> extends Object with A<T, bool> {}
  -    //  class C extends Object with B<int> {}
       var int = coreTypes.intClass.rawType;
       var bool = coreTypes.boolClass.rawType;
   
  
positive.code:     var g = addImplementsClass('G', [c, d]);
      var h = addImplementsClass('H', [c, d, e]);
      var i = addImplementsClass('I', [c, d, e]);
      var hierarchy = new ClassHierarchy(program);
  
      expect(hierarchy.getClassicLeastUpperBound(a.rawType, b.rawType),
          objectClass.rawType);
  
negative.code:     ]));
      addClass(new Class(name: 'C', supertype: b.asThisSupertype));
  
      _assertTestLibraryText('''
  class A {
    method aMethodAbstract() → void;
    method aMethodConcrete() → void {}
  }
  class B extends self::A {
    method aMethodConcrete() → void;
    method bMethodAbstract() → void;
    method aMethodConcrete() → void {}
  }
  class C extends self::B {}
  ''');
  
      expect(hierarchy.getDispatchTarget(a, new Name('aMethodConcrete')),
          aMethodConcrete);
      // TODO(scheglov): The next two commented statements verify the behavior
  