code: function matchGeneralSibling(nodes, predicate, root) {
    return uniqueReduce((matches, node) => {
      const parent = findParentNode(root, node);
      if (!parent) {
        return matches;
      }
      const parentChildren = childrenOfNode(parent);
      const nodeIndex = parentChildren.indexOf(node);
      const youngerSiblings = parentChildren.slice(nodeIndex + 1);
      return matches.concat(youngerSiblings.filter(predicate));
    }, nodes);
  }
docs: Matches only nodes which are general siblings (any sibling *after*)
  against a predicate, returning those that match.
  @param {Array<Node>} nodes
  @param {Function} predicate
  @param {Node} root