anchor.diff:      var tag = getTag(o);
       var newTag = quickMap[tag];
       if (newTag) return newTag;
  -    if (tag == "Document") {
  -      // IE calls both HTML and XML documents "Document", so we check for the
  -      // xmlVersion property, which is the empty string on HTML documents.
  -      // Since both dart:html classes Document and HtmlDocument share the same
  -      // type, we must patch the instances and not the prototype.
  -      if (!!o.xmlVersion) return "!Document";
  -      return "!HTMLDocument";
  -    }
       // Patches for types which report themselves as Objects.
       if (tag == "Object") {
         if (window.DataView && (o instanceof window.DataView)) return "DataView";
  
positive.code:   hooks.prototypeForTag = prototypeForTagIE;
  }''');
  
  
  const _firefoxHooksTransformer = const JS_CONST(r'''
  function(hooks) {
  
negative.code:   hooks = applyHooksTransformer(_ieHooksTransformer, hooks);
    hooks = applyHooksTransformer(_operaHooksTransformer, hooks);
    hooks = applyHooksTransformer(_safariHooksTransformer, hooks);
  
    hooks = applyHooksTransformer(_fixDocumentHooksTransformer, hooks);
  
    // TODO(sra): Update ShadowDOM polyfil to use
    // [dartNativeDispatchHooksTransformer] and remove this hook.
  