anchor.diff:  
     // GenericFunctionTypeIdentifiers are implicitly normalized.
     if (JS<bool>('!', '# instanceof #', type, GenericFunctionTypeIdentifier)) {
  -    return wrapType(type, isNormalized: true);
  +    return wrapType(type, true);
     }
     if (JS<bool>('!', '# instanceof #', type, FunctionType)) {
       var normReturnType = normalizeHelper(type.returnType);
  
positive.code:             type.requiredNamed)) {
        if (type.optionals.isEmpty) {
          var normType = fnType(normReturnType, normArgs);
          return wrapType(normType, isNormalized: true);
        }
        var normOptionals = type.optionals.map(normalizeHelper).toList();
        var normType = fnType(normReturnType, normArgs, normOptionals);
        return wrapType(normType, isNormalized: true);
      }
      var normNamed = JS('', '{}');
      _transformJSObject(type.named, normNamed, normalizeHelper);
  
negative.code: ///
  /// [isNormalized] is true when [type] is known to be in a canonicalized
  /// normal form, so the algorithm can directly wrap and return the value.
  Type wrapType(type, [@notNull bool isNormalized = false]) {
    // If we've already wrapped this type once, use the previous wrapper. This
    // way, multiple references to the same type return an identical Type.
    if (JS('!', '#.hasOwnProperty(#)', type, _typeObject)) {
  