code: public static long[] preprocessMurmur(final BitVector bv, final long seed) {
  		long h = seed, k;
  		long from = 0;
  		final long length = bv.length();
  
  		final int wordLength = (int) (length / Long.SIZE);
  		final long state[] = new long[wordLength + 1];
  
  		int i = 0;
  		state[i++] = h;
  
  		for (; length - from >= Long.SIZE; i++) {
  			k = bv.getLong(from, from += Long.SIZE);
  
  			k *= M;
  			k ^= k >>> R;
  			k *= M;
  
  			h ^= k;
  			h *= M;
  			state[i] = h;
  		}
  
  		return state;
  	}
docs: Preprocesses a bit vector so that MurmurHash 64-bit can be computed in
  constant time on all prefixes.
  
  @param bv
  a bit vector.
  @param seed
  a seed for the hash.
  @return an array containing the state of the variables <code>h</code>
  during the hash computation; these vector must be passed to
  {@link #murmur(BitVector, long, long[])} (and analogous methods)
  in this order.
  @see #murmur(BitVector, long)