anchor.diff:  
     // "Left Nullable".
     if (_jsInstanceOf(t1, NullableType)) {
  -    // TODO(nshahan) Need to handle type variables.
  -    // https://github.com/dart-lang/sdk/issues/38816
       return _isSubtype(JS<NullableType>('!', '#', t1).type, t2, strictMode) &&
           _isSubtype(typeRep<Null>(), t2, strictMode);
     }
  
positive.code: 
    // "Left Null".
    if (_equalType(t1, Null)) {
      // TODO(nshahan) Need to handle type variables.
      // https://github.com/dart-lang/sdk/issues/38816
      if (_isFutureOr(t2)) {
        var t2TypeArg = JS('', '#[0]', getGenericArgs(t2));
        return _isSubtype(typeRep<Null>(), t2TypeArg, strictMode);
  
negative.code:     // t1 <: (Future<A> | A) iff t1 <: Future<A> or t1 <: A
      var t2TypeArg = JS('!', '#[0]', getGenericArgs(t2));
      var t2Future = JS('!', '#(#)', getGenericClassStatic<Future>(), t2TypeArg);
      return _isSubtype(t1, t2Future, strictMode) ||
          _isSubtype(t1, t2TypeArg, strictMode);
    }
  
    // "Right Nullable".
    if (_jsInstanceOf(t2, NullableType)) {
      return _isSubtype(t1, JS<NullableType>('!', '#', t2).type, strictMode) ||
          _isSubtype(t1, typeRep<Null>(), strictMode);
    }
  