public <R> R executeOp(final Path file,
                         final @NotNull FileChannelOperation<R> operation,
                         final boolean readOnly) throws IOException {
    //MAYBE RC: both branches should be encapsulated inside OpenChannelsCache
    //          (and the OpenChannelsCache should be a part of StorageLockContext then)
    if (useChannelCache()) {
      return CHANNELS_CACHE.executeOp(file, operation, readOnly);
    }
    else {
      getBufferCache().incrementUncachedFileAccess();
      try (OpenChannelsCache.ChannelDescriptor desc = new OpenChannelsCache.ChannelDescriptor(file, readOnly)) {
        return operation.execute(desc.channel());
      }
    }
  }
public <R> R executeOp(final Path file,
                         final @NotNull FileChannelOperation<R> operation,
                         final boolean readOnly)