code: function matchDescendant(nodes, predicate) {
    return uniqueReduce(
      (matches, node) => matches.concat(treeFilter(node, predicate)),
      flat(nodes.map(childrenOfNode)),
    );
  }
docs: Matches all descendant nodes against a predicate,
  returning those that match.
  @param {Array<Node>} nodes
  @param {Function} predicate