### Question:
BufferedCharStream implements CharStream { @Override public LineColumn position() { return new LineColumn(line, column); } BufferedCharStream(InputStream stream);  BufferedCharStream(InputStream stream, int line, int column); private  BufferedCharStream(InputStream stream, int tabSize); @Override char take(); @Override char peek(); @Override void mark(); @Override void reset(); @Override void rollback(int count); @Override boolean hasRemaining(); @Override LineColumn position();  }### Answer:
@Test void testPosition() throws IOException { var stream = new BufferedCharStream(new ByteArrayInputStream("abc\n\ta".getBytes())); assertEquals(new LineColumn(1, 1), stream.position()); stream.take(); assertEquals(new LineColumn(1, 2), stream.position()); stream.take(); assertEquals(new LineColumn(1, 3), stream.position()); stream.take(); assertEquals(new LineColumn(1, 4), stream.position()); stream.take(); assertEquals(new LineColumn(2, 1), stream.position()); stream.take(); assertEquals(new LineColumn(2, 5), stream.position()); stream.take(); assertEquals(new LineColumn(2, 6), stream.position()); stream.take(); assertEquals(new LineColumn(2, 6), stream.position()); }