anchor.diff:      ]));
       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
  
positive.code:   }
  
    void test_getClassAsInstanceOf_notGeneric_extends() {
      // Create the class hierarchy:
      //
      //  class A extends Object {}
      //  class B extends A {}
      //  class C extends B {}
      //  class Z extends Object {}
      var a = addClass(new Class(name: 'A', supertype: objectSuper));
      var b = addClass(new Class(name: 'B', supertype: a.asThisSupertype));
      var c = addClass(new Class(name: 'C', supertype: b.asThisSupertype));
      var z = addClass(new Class(name: 'Z', supertype: objectSuper));
  
      expect(hierarchy.getClassAsInstanceOf(a, objectClass), objectSuper);
      expect(hierarchy.getClassAsInstanceOf(a, a), a.asThisSupertype);
  
negative.code: 
      var c = addClass(new Class(name: 'C', supertype: new Supertype(b, [int])));
  
      _assertTestLibraryText('''
  class A<T, U> {}
  class B<T> extends self::A<self::B::T, core::bool> {}
  class C extends self::B<core::int> {}
  ''');
  
      expect(hierarchy.getClassAsInstanceOf(a, objectClass), objectSuper);
      expect(hierarchy.getClassAsInstanceOf(a, a), a.asThisSupertype);
      expect(hierarchy.getClassAsInstanceOf(b, a), new Supertype(a, [bTT, bool]));
  