anchor.diff:  }
   
   @reflectiveTest
  -class TypeSystemTest {
  +class StrongAssignabilityTest {
     TypeProvider typeProvider;
     TypeSystem typeSystem;
  -  FunctionType simpleFunctionType;
   
     DartType get bottomType => typeProvider.bottomType;
     InterfaceType get doubleType => typeProvider.doubleType;
  
positive.code:     _checkLattice(top, left, right, bottom);
    }
  
    void test_isSubtypeOf_void_functions() {
      FunctionType top = TypeBuilder.functionType(<DartType>[intType], voidType);
      FunctionType bottom =
          TypeBuilder.functionType(<DartType>[objectType], intType);
  
      _checkIsStrictSubtypeOf(bottom, top);
    }
  
    void test_isSubtypeOf_named_optional() {
  
negative.code:         equivalents: [nnn], subtypes: [], unrelated: [r, o, rr, ro, rn, oo]);
    }
  
    void test_isSubtypeOf_num() {
      List<DartType> equivalents = <DartType>[numType];
      List<DartType> supertypes = <DartType>[];
      List<DartType> unrelated = <DartType>[stringType];
      List<DartType> subtypes = <DartType>[intType, doubleType];
      _checkGroups(numType,
          equivalents: equivalents,
          supertypes: supertypes,
          unrelated: unrelated,
          subtypes: subtypes);
    }
  
    void test_isSubtypeOf_simple_function() {
      FunctionType top =
          TypeBuilder.functionType(<DartType>[intType], objectType);
      FunctionType left = TypeBuilder.functionType(<DartType>[intType], intType);
      FunctionType right =
          TypeBuilder.functionType(<DartType>[objectType], objectType);
      FunctionType bottom =
          TypeBuilder.functionType(<DartType>[objectType], intType);
  
      _checkLattice(top, left, right, bottom);
    }
  
    void test_isSubtypeOf_void_functions() {
      FunctionType top = TypeBuilder.functionType(<DartType>[intType], voidType);
      FunctionType bottom =
          TypeBuilder.functionType(<DartType>[objectType], intType);
  
      _checkIsStrictSubtypeOf(bottom, top);
    }
  
    void _checkEquivalent(DartType type1, DartType type2) {
      _checkIsSubtypeOf(type1, type2);
      _checkIsSubtypeOf(type2, type1);
    }
  
    void _checkGroups(DartType t1,
  