public final int end() {
            int k1 = 0;
            switch (tailLen) {
                case 3:
                    k1 ^= tail[2] << 16;
                case 2:
                    k1 ^= tail[1] << 8;
                case 1:
                    k1 ^= tail[0];

                    // mix functions
                    k1 *= C1_32;
                    k1 = Integer.rotateLeft(k1, R1_32);
                    k1 *= C2_32;
                    hash ^= k1;
            }

            // finalization
            hash ^= totalLen;
            hash ^= (hash >>> 16);
            hash *= 0x85ebca6b;
            hash ^= (hash >>> 13);
            hash *= 0xc2b2ae35;
            hash ^= (hash >>> 16);
            return hash;
        }
Murmur3 128-bit variant.

@param data   - input byte array
@param offset - the first element of array
@param length - length of array
@param seed   - seed. (default is 0)
@return - hashcode (2 longs)
streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java