anchor.diff:      var b = addClass(new Class(
           name: 'B',
           supertype: a.asThisSupertype,
  -        procedures: [newEmptyMethod('foo', abstract: true)]));
  +        procedures: [newEmptyMethod('foo', isAbstract: true)]));
       var c = addClass(new Class(
           name: 'C',
           supertype: a.asThisSupertype,
  
positive.code:   }
  
    void test_getDispatchTarget_abstract() {
      var aMethodConcrete = newEmptyMethod('aMethodConcrete');
      var bMethodConcrete = newEmptyMethod('aMethodConcrete');
      var a = addClass(new Class(name: 'A', supertype: objectSuper, procedures: [
        newEmptyMethod('aMethodAbstract', abstract: true),
        aMethodConcrete
      ]));
      var b = addClass(
          new Class(name: 'B', supertype: a.asThisSupertype, procedures: [
        newEmptyMethod('aMethodConcrete', abstract: true),
        newEmptyMethod('bMethodAbstract', abstract: true),
        bMethodConcrete
      ]));
      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
      // documented as "If the class is abstract, abstract members are ignored and
      // the dispatch is resolved if the class was not abstract.". Unfortunately
      // the implementation does not follow the documentation. We need to fix
      // either documentation, or implementation.
  //    expect(hierarchy.getDispatchTarget(c, new Name('aMethodConcrete')),
  //        aMethodConcrete);
  //    expect(hierarchy.getDispatchTarget(b, new Name('aMethodConcrete')),
  //        aMethodConcrete);
    }
  
    void test_getInterfaceMember_extends() {
  
negative.code:   method bar() → void {}
  }
  class B extends self::A {
    abstract method foo() → void;
  }
  ''');
  
  