private static int hash(int x,int level,int offset,int size){
  x+=level * OFFSETS + offset;
  x=((x >>> 16) ^ x) * 0x45d9f3b;
  x=((x >>> 16) ^ x) * 0x45d9f3b;
  x=(x >>> 16) ^ x;
  return Math.abs(x % size);
}

private static int hash ( int x , int level , int offset , int size ) { x += level * OFFSETS + offset ; x = ( ( x > > > 16 ) ^ x ) * 0x45d9f3b ; x = ( ( x > > > 16 ) ^ x ) * 0x45d9f3b ; x = ( x > > > 16 ) ^ x ; return Math . abs ( x % size ) ; }
calculate the hash of a key . the result depends on the key , the recursion level , and the offset .
