public static ByteBufferReader of(FileChannel file, long readBase, Closeable close) throws IOException {
        return new ByteBufferReader() {
            String name;

            @Override
            public void read(long position, ByteBuffer dst) throws IOException {
                try {
                    IOUtil.readFully(file, readBase + position, dst);
                } catch (Exception e) {
                    throw new IOException(String.format("name: %s", name), e);
                }
            }

            @Override
            public boolean exists(long position) throws IOException {
                return position >= 0 && readBase + position < file.size();
            }

            @Override
            public void close() throws IOException {
                if (close != null) {
                    close.close();
                }
            }

            @Override
            public void setName(String name) {
                this.name = name;
            }
        };
    }
Wrap a ByteBufferReader into an {@link Opener}.
Note that the close will <b>not</b> passed to the opener,
indexr-common/src/main/java/io/indexr/io/ByteBufferReader.java