anchor.diff:      if (object instanceof HTMLElement) return "HTMLElement";
       return getUnknownTag(object, tag);
     }
  +  function prototypeForTag(tag) {
  +    if (typeof window == "undefined") return null;
  +    if (typeof window[tag] == "undefined") return null;
  +    var constructor = window[tag];
  +    if (typeof constructor != "function") return null;
  +    return constructor.prototype;
  +  }
     function discriminator(tag) { return null; }
   
     var isBrowser = typeof navigator == "object";
  
positive.code:   return {
      getTag: typeNameInChrome,
      getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
      discriminator: discriminator };
  }''');
  
  
negative.code:  *
   *     { getTag: function(obj) {...},
   *       getUnknownTag: function(obj, tag) {...},
   *       prototypeForTag: function(tag) {...},
   *       discriminator: function(tag) {...},
   *      }
   *
   * * getTag(obj) returns the dispatch tag, or `null`.
   * * getUnknownTag(obj, tag) returns a tag when [getTag] fails.
   * * prototypeForTag(tag) returns the prototype of the constructor for tag,
   *   or `null` if not available or prepatching is undesirable.
   * * discriminator(tag) returns a function TBD.
   *
   * The web site can adapt a dart2js application by loading code ahead of the
   * dart2js application that defines hook transformers to be after the built in
  