first steps towards leaner common path in Lexer.advance