whole_func_string: function nodeWalkAllPrior(node, predicate, matches) {
    if (!matches) {
      matches = [];
    }
    if (predicate(node)) {
      matches.push(node);
    }
    // Search our earlier siblings and their descendents.
    var parent = node.parentNode;
    if (parent) {
      var idx = parent.childNodes.indexOf(node);
      var siblings = parent.childNodes.slice(0, idx);
      for (var i = siblings.length - 1; i >= 0; i--) {
        _reverseNodeWalkAll(siblings[i], predicate, matches);
      }
      nodeWalkAllPrior(parent, predicate, matches);
    }
    return matches;
  }
func_code_string: function nodeWalkAllPrior(node, predicate, matches) {
    if (!matches) {
      matches = [];
    }
    if (predicate(node)) {
      matches.push(node);
    }
    // Search our earlier siblings and their descendents.
    var parent = node.parentNode;
    if (parent) {
      var idx = parent.childNodes.indexOf(node);
      var siblings = parent.childNodes.slice(0, idx);
      for (var i = siblings.length - 1; i >= 0; i--) {
        _reverseNodeWalkAll(siblings[i], predicate, matches);
      }
      nodeWalkAllPrior(parent, predicate, matches);
    }
    return matches;
  }
func_documentation_string: Equivalent to `nodeWalkAll`, but only returns nodes that are either
  ancestors or earlier cousins/siblings in the document.
  
  Nodes are returned in reverse document order, starting from `node`.