default <R> @NotNull R readInputStream(
    @NotNull ThrowableNotNullFunction<? super InputStream, R, ? extends IOException> consumer
  ) throws IOException {
    //MAYBE RC: it is likely suboptimal way to read through storage -- potentially many pages are load only
    //         to be abandoned, aka 'cache trashing'. The better way would be to use already cached
    //         pages as-is, but read not-currently-cached pages just temporary, re-using single transient
    //         page object, without evicting currently cached pages.
    try (final InputStreamOverPagedStorage stream = new InputStreamOverPagedStorage(this, 0, length())) {
      return consumer.fun(stream);
    }
  }
default <R> @NotNull R readInputStream(
    @NotNull ThrowableNotNullFunction<? super InputStream, R, ? extends IOException> consumer
  )