LoggingReader extends FilterReader { @Override public boolean ready() throws IOException { final boolean ready = super.ready(); level.log(logger, "ready() : {}", ready); return ready; } LoggingReader(@Nonnull Reader reader, Logger logger, @Nonnull LogLevel level);  LoggingReader(@Nonnull Reader reader, @Nonnull Class<?> context, @Nonnull LogLevel level); @Override int read(); @Override int read(char[] chars, int off, int len); @Override long skip(long len); @Override boolean ready(); @Override boolean markSupported(); @Override void mark(int readAheadLimit); @Override void reset(); @Override void close();  }
@Test public void whenReady_thenCallsDelegate() throws IOException { loggingReader.ready(); verify(delegateReader, only()).ready(); }