public <R> R executeIdempotentOp(final Path file,
                                   final @NotNull FileChannelIdempotentOperation<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.executeIdempotentOp(file, operation, readOnly);
    }
    else {
      getBufferCache().incrementUncachedFileAccess();
      try (OpenChannelsCache.ChannelDescriptor desc = new OpenChannelsCache.ChannelDescriptor(file, readOnly)) {
        return desc.channel().executeOperation(operation);
      }
    }
  }
public <R> R executeIdempotentOp(final Path file,
                                   final @NotNull FileChannelIdempotentOperation<R> operation,
                                   final boolean readOnly)