@Test
	public void testSeekBeforeBufferStart() {
		CharStream input = createStream("xyz");
		input.consume();
		int m1 = input.mark();
		assertEquals(1, input.index());
		input.consume();
		assertThrows(IllegalArgumentException.class, () -> input.seek(0));
	}
It is not valid to pass a mark to {@link IntStream#seek}, but
{@link UnbufferedCharStream} creates marks in such a way that this
invalid usage results in an {@link IllegalArgumentException}.
tool-testsuite/test/org/antlr/v4/test/tool/TestUnbufferedCharStream.java