Different loop termination conditions resulted in confusion of whether
*Offset was intended to be inside or outside the token.
This ultimately led to constructing an out-of-range SourceLocation.
Fix by making Offset consistently point *after* the token.
it's a separate concern, but feels like this could also trigger some crashes (e.g. an input like "`\")