It's currently not clear when different combinators should "rewind" the parser state back after a failure.
This means it may be possible to accidentally break existing functionality when refactoring.
Let's fix this by adding test cases for these parser positions after failures.