anchor.diff:      _checkOrdinarySubtypeMatch(objectType, dynamicType, [T], covariant: true);
       _checkOrdinarySubtypeMatch(nullType, dynamicType, [T], covariant: true);
       _checkOrdinarySubtypeMatch(
  -      _functionType(required: [intType], returns: stringType),
  +      functionTypeStar(
  +        parameters: [
  +          requiredParameter(type: intType),
  +        ],
  +        returnType: stringType,
  +      ),
         dynamicType,
         [T],
         covariant: true,
  
positive.code:     var listOfIntType = listType(intType);
      var listOfDoubleType = listType(doubleType);
      // TODO(rnystrom): Can we do something better here?
      _checkGreatestLowerBound(listOfIntType, listOfDoubleType, bottomType);
    }
  
    void test_typeParameters_same() {
  
negative.code:   }
  
    void test_self() {
      var T = typeParameter('T');
      var A = class_(name: 'A');
  
      List<DartType> types = [
        dynamicType,
        voidType,
        neverStar,
        typeParameterTypeStar(T),
        interfaceType(A),
        functionTypeStar(returnType: voidType)
      ];
  
      for (DartType type in types) {
  