@SuppressFBWarnings(value = {"SF_SWITCH_FALLTHROUGH", "SF_SWITCH_NO_DEFAULT"}, justification = "Expected")
    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)
storage-api/src/java/org/apache/hive/common/util/Murmur3.java