public int getString(int index, byte[] container) throws IOException {
        int totalIndexLen = (count + 1) << 2;
        int strOffset = readInt(index << 2);
        int nextOffset = readInt((index + 1) << 2);
        reader.read(totalIndexLen + strOffset, container, 0, nextOffset - strOffset);
        //reader.position(totalIndexLen + strOffset);
        //reader.get(container, 0, nextOffset - strOffset);
        return nextOffset - strOffset;
    }
The ByteBuffer here is normally comes from {@link java.nio.channels.FileChannel#map(FileChannel.MapMode, long, long)}.
If it is a pure memory byte reader, then you probably should use {@link StringsStruct}.
indexr-common/src/main/java/io/indexr/data/StringsStructOnByteBufferReader.java