anchor.diff:      return this.each(styleNode(name, value, priority));
     }
   
  +  text([value = unique]) {
  +    if (value != unique) {
  +      Function fn;
  +      if (value is Function) {
  +        fn = (node, data, i, j) {
  +          utils.FnWith4Args fnWith4Args = utils.relaxFn4Args(value);
  +          var v = fnWith4Args(node, data, i, j);
  +          node.textContent = (v == null ? "" : v);
  +        };
  +      } else if (value == null) {
  +        fn = (node) { node.textContent = ""; };
  +      } else {
  +        fn = (node) { node.textContent = value; };
  +      }
  +      each(fn);
  +    } else {
  +      return this.node().textContent;
  +    }
  +  }
  +
   }
   
   selectNode(s, n) { return n.querySelector(s); }
  
positive.code:     return new Selection(subgroups);
    }
  
    style(name, [value = "", priority = null]) {
      if (priority == null) {
  
  
negative.code:     });
    }
  
    bool empty() {
      return this.node() == null;
    }
  
    html([value = unique]) {
      if (value != unique) {
        Function fn;
        if (value is Function) {
          fn = (node, data, i, j) {
            utils.FnWith4Args fnWith4Args = utils.relaxFn4Args(value);
            var v = fnWith4Args(node, data, i, j);
            node.innerHTML = (v == null ? "" : v);
          };
        } else if (value == null) {
          fn = (node) { node.innerHTML = ""; };
        } else {
          fn = (node) { node.innerHTML = value; };
        }
        this.each(fn);
      } else {
        return this.node().innerHTML;
      }
    }
  
    // TODO remove(selector)?
    // TODO remove(node)?
    // TODO remove(function)?
  