anchor.diff:    }
   
     void test_self() {
  -    DartType typeParam = ElementFactory.typeParameterElement('T').type;
  -    DartType interfaceType = ElementFactory.classElement2('A', []).type;
  +    var typeParam = _typeParameter('T').type;
  +    var interfaceType = _class(name: 'A').type;
   
       List<DartType> types = [
         dynamicType,
  
positive.code:     //
      // In other words, S <: List<T> is satisfied provided that
      // bound(S) <: List<T>.
      var S = _newTypeParameter('S', list(stringType));
      _checkIsSubtypeMatchOf(S, list(T), [T], ['String <: T'], covariant: false);
    }
  
  
negative.code:     // Regression test for https://github.com/dart-lang/sdk/issues/25740.
  
      // class A {}
      var a = _class(name: 'A', superType: objectType);
  
      // class B extends A {}
      var b = _class(name: 'B', superType: a.type);
  
      // class C<T extends A> {
      var c = _class(
          name: 'C',
          superType: objectType,
          typeParameters: [_typeParameter('T', bound: a.type)]);
      //   S m<S extends Iterable<T>>(S);
      var iterableOfT = iterableType.instantiate([c.typeParameters[0].type]);
      var s = _typeParameter('S', bound: iterableOfT);
      var m = _method(
        'm',
        _typeParameterType(s),
        typeFormals: [s],
        parameters: [_requiredParameter('_', _typeParameterType(s))],
      );
      c.methods = [m];
      // }
  
  