question: public static long murmur ( final BitVector bv , final long prefixLength , final long [ ] state , final long lcp ) { final int startStateWord = ( int ) ( Math . min ( lcp , prefixLength ) / Long . SIZE ) ; long h = state [ startStateWord ] , k ; long from = startStateWord * Long . SIZE ; while ( prefixLength - from >= Long . SIZE ) { k = bv . getLong ( from , from += Long . SIZE ) ; k *= M ; k ^= k > > > R ; k *= M ; h ^= k ; h *= M ; } if ( prefixLength > from ) { k = bv . getLong ( from , prefixLength ) ; k *= M ; k ^= k > > > R ; k *= M ; h ^= k ; h *= M ; } k = prefixLength ; k *= M ; k ^= k > > > R ; k *= M ; h ^= k ; h *= M ; return h ; }
target:  Constant-time MurmurHash 64-bit hashing reusing precomputed state partially.