code: public static long generate(long hash, 
                                long value)
    {
      final long m = 0xc6a4a7935bd1e995L;
      final int r = 47;
      
      int length = 8;
      
      hash ^= length * m;
  
      long k = Long.reverseBytes(value);
        
      k *= m;
      k ^= k >>> r;
      k *= m;
      hash ^= k;
      hash *= m;
      
      hash ^= hash >>> r;
      hash *= m;
      hash ^= hash >>> r;
      
      return hash;
    }
docs: Calculates hash from a buffer