byte @NotNull [] get(CompressedAppendableFile file, int page) throws IOException {
      byte[] bytes;
      synchronized (this) {
        bytes = myMap.get(new FileChunkKey<>(file, page));
        if (bytes != null) return bytes;
      }

      bytes = file.loadChunk(page);   // out of lock
      put(file, page, bytes);
      return bytes;
    }
byte @NotNull [] get(CompressedAppendableFile file, int page)