By using Traversal#each_node and _not_ calling on_test() (which was only called for node_matches?) we can save ourselves a few object allocations.