anchor.diff:    method bar() → void {}
   }
   class B extends self::A {
  -  method foo() → void;
  +  abstract method foo() → void;
   }
   class C extends self::A implements self::B {}
   class D {}
  
positive.code:     var b = addClass(new Class(
          name: 'B',
          supertype: a.asThisSupertype,
          procedures: [newEmptyMethod('foo', abstract: true)]));
      var c = addClass(new Class(
          name: 'C',
          supertype: a.asThisSupertype,
  
negative.code: 
    ClassHierarchy createClassHierarchy(Program program);
  
    Procedure newEmptyMethod(String name, {bool isAbstract: false}) {
      var body = isAbstract ? null : new Block([]);
      return new Procedure(new Name(name), ProcedureKind.Method,
          new FunctionNode(body, returnType: const VoidType()),
          isAbstract: isAbstract);
    }
  
    Procedure newEmptySetter(String name, {bool abstract: false}) {
  