@Override
  public void put(final long offsetInFile,
                  final byte[] src, final int offsetInArray, final int length) throws IOException {
    //MAYBE RC: here array could cross page boundary, while for all other methods it is prohibited
    //          which is inconsistent. Prohibit crossing page boundary here also, and move this code
    //          to PagedStorageWithUnalignedAccess?
    long i = offsetInFile;
    int o = offsetInArray;
    int l = length;

    while (l > 0) {
      final int pageIndex = toPageIndex(i);
      final int offsetInPage = toOffsetInPage(i);

      final int page_len = Math.min(l, pageSize - offsetInPage);
      try (final Page page = pageByIndex(pageIndex, /*forWrite: */ true)) {
        page.putFromArray(src, o, offsetInPage, page_len);
      }
      l -= page_len;
      o += page_len;
      i += page_len;
    }
  }
@Override
  public void put(final long offsetInFile,
                  final byte[] src, final int offsetInArray, final int length)