I think conceptually if I can take a node and follow it through the graph via -> then there's not much difference to trying every matching node and doing the same thing. It's just that instead of adding an edge for every user you have the virtual node:*