Explore whether it's feasible/useful to introduce holders for coerced and uncoerced variable values.
For example, there are two QueryTraverser constructors, one which takes coerced variables and the other does not. It could be clearer where we coerced variables, and where we don't. Might also help with more refactoring down the track.