public final void _pack(long[] in, byte[] out) {
        int valCount = in.length;

        int step = valCount >>> 3;
        for (int s = 0; s < step; s++) {
            pack8Values(in, s << 3, out, s * bitWidth);
        }

        int tail = valCount & 0x07;
        if (tail != 0) {
            int tailStart = (valCount >>> 3) << 3;
            long[] tailData = new long[8];
            for (int i = 0; i < valCount - tailStart; i++) {
                tailData[i] = in[tailStart + i];
            }
            pack8Values(tailData, 0, out, (valCount >>> 3) * bitWidth);
        }
    }
unpack bitWidth bytes from input into 8 values in output.
nextPosition: input = (inAddr + bitWidth), output = (outAddr + 8 * 4)
indexr-vlt-segment/src/main/java/io/indexr/vlt/codec/pack/LongPacker.java