Right now we copy the state of the parser as every point of uncertainty is reached.
I am speculating that we could copy on demand. So, for example, if no variable modifying operation occurs then there would be no overhead to copy the variable state. This comes at the cost of each variable doing an additional test of whether the variable state needs to be copied first. Thoughts?