code: public static long JenkinWang64shift(long key) {
          key = (~key) + (key << 21); // key = (key << 21) - key - 1;
          key = key ^ (key >>> 24);
          key = (key + (key << 3)) + (key << 8); // key * 265
          key = key ^ (key >>> 14);
          key = (key + (key << 2)) + (key << 4); // key * 21
          key = key ^ (key >>> 28);
          key = key + (key << 31);
          return key;
      }
docs: Based on an original suggestion on Robert Jenkin's part in 1997 and Thomas Wang 2007 updates. <p/> <h3>Links</h3>
  <a href="http://www.concentric.net/~ttwang/tech/inthash.htm">http://www.concentric.net/~ttwang/tech/inthash.htm</a><br/>
  <a href="http://en.wikipedia.org/wiki/Jenkins_hash_function's">http://en.wikipedia.org/wiki/Jenkins_hash_function's</a><br/>
  
  @param key key to be hashed
  @return hashed value