anchor.diff:    }
   
     /** Attach event listeners inside a shadow [root]. */
  -  void addInstanceListeners(ShadowRoot root, Element template) {
  +  void addInstanceListeners(Node root, Element template) {
       var templateDelegates = _declaration._templateDelegates;
       if (templateDelegates == null) return;
       var events = templateDelegates[template];
  
positive.code:   }
  
    /** Locate nodes with id and store references to them in [$] hash. */
    void marshalNodeReferences(ShadowRoot root) {
      if (root == null) return;
      for (var n in root.queryAll('[id]')) {
        $[n.id] = n;
  
negative.code:   Element fetchTemplate(Element elementElement) =>
        elementElement.query('template');
  
    /**
     * Utility function that creates a shadow root from a `<template>`.
     *
     * The base implementation will return a [ShadowRoot], but you can replace it
     * with your own code and skip ShadowRoot creation. In that case, you should
     * return `null`.
     *
     * In your overridden method, you can use [instanceTemplate] to stamp the
     * template and initialize data binding, and [shadowRootReady] to intialize
     * other Polymer features like event handlers. It is fine to call
     * shadowRootReady with a node something other than a ShadowRoot; for example,
     * with this Node.
     */
    ShadowRoot shadowFromTemplate(Element template) {
      if (template == null) return null;
      // cache elder shadow root (if any)
  