code: public static long murmur(final BitVector bv, final long seed) {
  		long h = seed, k;
  		long from = 0;
  		final long length = bv.length();
  
  		while (length - from >= Long.SIZE) {
  			k = bv.getLong(from, from += Long.SIZE);
  
  			k *= M;
  			k ^= k >>> R;
  			k *= M;
  
  			h ^= k;
  			h *= M;
  		}
  
  		if (length > from) {
  			k = bv.getLong(from, length);
  			k *= M;
  			k ^= k >>> R;
  			k *= M;
  
  			h ^= k;
  			h *= M;
  		}
  
  		k = length;
  		k *= M;
  		k ^= k >>> R;
  		k *= M;
  
  		h ^= k;
  		h *= M;
  		return h;
  	}
docs: MurmurHash 64-bit
  
  <p>
  This code is based on a mix of the sources that can be found at
  <a href="http://sites.google.com/site/smhasher/">MurmurHash's web
  site</a>, and in particular on the version consuming 64 bits at a time,
  which has been merged with the 2A version to obtain an
  {@linkplain #preprocessMurmur(BitVector, long) incremental
  implementation}.
  
  @param bv
  a bit vector.
  @param seed
  a seed for the hash.
  @return the hash.