@Override
    public RangeStoreKey deserialize(final ByteBuffer byteBuffer) {

        // Create a bytebuffer that is a view onto the existing buffer
        // NOTE: if the passed bytebuffer is owned by LMDB then this deserialize method
        // needs to be used with care
        final ByteBuffer dupBuffer = byteBuffer.duplicate();

        // Set the limit at the end of the UID part
        dupBuffer.limit(byteBuffer.position() + UID.UID_ARRAY_LENGTH);
        final UID mapUid = UID.wrap(dupBuffer);

        // advance the position now we have a dup of the UID portion
        byteBuffer.position(byteBuffer.position() + UID.UID_ARRAY_LENGTH);

        long rangeFromInc = byteBuffer.getLong();
        long rangeToExc = byteBuffer.getLong();
        byteBuffer.flip();

        return new RangeStoreKey(mapUid, new Range<>(rangeFromInc, rangeToExc));
    }
< mapUid >< rangeStartInc >< rangeEndExc >
< 4 bytes >< 8 bytes >< 8 bytes >
stroom-pipeline/src/main/java/stroom/pipeline/refdata/store/offheapstore/serdes/RangeStoreKeySerde.java