anchor.diff:  import 'package:kernel/ast.dart';
   
   /// Attempts to find a set of constraints for the given [typeParameters] under
  -/// which [subtype] is a subtype of [supertype].  If such a set can be found, it
  -/// is returned (as a map from type parameter to constraint).  If it can't,
  -/// `null` is returned.
  +/// which [subtype] is a subtype of [supertype].
  +///
  +/// If such a set can be found, it is returned (as a map from type parameter to
  +/// constraint).  If it can't, `null` is returned.
   Map<TypeParameter, TypeConstraint> subtypeMatch(
       TypeSchemaEnvironment environment,
       Iterable<TypeParameter> typeParameters,
  
positive.code:     return true;
    }
  
    bool _isNull(DartType type) =>
        type is InterfaceType &&
        identical(type.classNode, environment.coreTypes.nullClass);
  
    bool _isTop(DartType type) =>
        type is DynamicType ||
  
negative.code:     // no constraints.
      if (_isTop(supertype)) return true;
      // `Null` is a subtype match for any type `Q` under no constraints.
      // Note that nullable types will change this.
      if (_isNull(subtype)) return true;
      // `FutureOr<P>` is a subtype match for `FutureOr<Q>` with respect to `L`
      // under constraints `C`:
  