code: function nodeStream(node) {
      var result = [];
      (function (node, offset) {
        for (var i = 0; i < node.childNodes.length; i++) {
          if (node.childNodes[i].nodeType == 3)
            offset += node.childNodes[i].nodeValue.length;
          else if (node.childNodes[i].nodeName == 'BR')
            offset += 1;
          else if (node.childNodes[i].nodeType == 1) {
            result.push({
              event: 'start',
              offset: offset,
              node: node.childNodes[i]
            });
            offset = arguments.callee(node.childNodes[i], offset);
            result.push({
              event: 'stop',
              offset: offset,
              node: node.childNodes[i]
            });
          }
        }
        return offset;
      })(node, 0);
      return result;
    }
docs: /* Stream merging