anchor.diff:      var double = coreTypes.doubleClass.rawType;
       var bool = coreTypes.boolClass.rawType;
   
  -    // Create the class hierarchy:
  -    //
  -    //    Object
  -    //      |
  -    //      A
  -    //     / \
  -    // B<T>   C<U>
  -    //     \  /
  -    //    D<T,U>
  -    //     /  \
  -    //    E    F
  -    //
  -    // Where E implements D<int, double> and F implements D<int, bool>.
       var a = addGenericClass('A', []);
       var b =
           addGenericClass('B', ['T'], implements_: (_) => [a.asThisSupertype]);
  
positive.code: 
    Procedure newEmptyMethod(String name, {bool abstract: false}) {
      var body = abstract ? null : new Block([]);
      return new Procedure(
          new Name(name), ProcedureKind.Method, new FunctionNode(body));
    }
  
    Procedure newEmptySetter(String name) {
  
negative.code:         new Name(name),
          ProcedureKind.Setter,
          new FunctionNode(new Block([]),
              returnType: const VoidType(),
              positionalParameters: [new VariableDeclaration('_')]));
    }
  
  