docs: function(node, ignoreSelfAndKids) {
      function nextSiblingEl(n) {
        do {
          n = n.nextSibling;
        } while (n && n.nodeType !== n.ELEMENT_NODE);
        return n;
      }
      // First check for kids if those aren't being ignored
      if (!ignoreSelfAndKids && node.children[0]) {
        return node.children[0];
      }
      // Then for siblings...
      var next = nextSiblingEl(node);
      if (next) {
        return next;
      }
      // And finally, move up the parent chain *and* find a sibling
      // (because this is depth-first traversal, we will have already
      // seen the parent nodes themselves).
      do {
        node = node.parentNode;
        if (node)
          next = nextSiblingEl(node);
      } while (node && !next);
      return node && next;
    }