anchor.diff:      if (n1 === void 0) {
         return false;
       }
  -    if (!$_isSubtype(n2, n1)) {
  +    if (!$_isSubtype(n2, n1, strictMode)) {
         return false;
       }
     }
  
positive.code:     // 1) All named params in the superclass are named params in the subclass.
      // 2) All required named params in the subclass are required named params
      //    in the superclass.
      var supertypeNamed = supertype.getNamedParameters();
      var supertypeRequiredNamed = supertype.getRequiredNamedParameters();
      var subtypeNamed = supertype.getNamedParameters();
      var subtypeRequiredNamed = supertype.getRequiredNamedParameters();
      for (var name in subtypeRequiredNamed.keys) {
        var supertypeParamType = supertypeRequiredNamed[name];
        if (supertypeParamType == null) return false;
  
negative.code:   // 1) All named params in the superclass are named params in the subclass.
    // 2) All required named params in the subclass are required named params
    //    in the superclass.
    // 3) With strict null checking disabled, we treat required named params as
    //    optional named params.
    let named1 = $ft1.named;
    let requiredNamed1 = $ft1.requiredNamed;
    let named2 = $ft2.named;
    let requiredNamed2 = $ft2.requiredNamed;
    if (!strictMode) {
      // In weak mode, treat required named params as optional named params.
      named1 = Object.assign({}, named1, requiredNamed1);
      named2 = Object.assign({}, named2, requiredNamed2);
      requiredNamed1 = {};
      requiredNamed2 = {};
    }
  
    let names = $getOwnPropertyNames(requiredNamed1);
    for (let i = 0; i < names.length; ++i) {
  