prepare to start from a node, figure out the continuations.
get the value of an attribute from the given node
get the next list of nodes at the current position in the path.
reduce the current set of possible nodes based on the given condition.
the list of (currelement, continuation) to reduce
finally unwrap whatever and serve plain objects
the node we'll start resolving from