private void lexerError() { throw new AssertionError( String.format( "unexpected lexer state: pos %s, state: %s, at char: '%s', current tokens: %s", i, States.print(state), s.charAt(i), tks.subList(Math.max(0, tks.size() - 10), tks.size()))); }