code: public static int longToIntWithBitMixing(long in) {
  		in = (in ^ (in >>> 30)) * 0xbf58476d1ce4e5b9L;
  		in = (in ^ (in >>> 27)) * 0x94d049bb133111ebL;
  		in = in ^ (in >>> 31);
  		return (int) in;
  	}
docs: Pseudo-randomly maps a long (64-bit) to an integer (32-bit) using some bit-mixing for better distribution.
  
  @param in the long (64-bit)input.
  @return the bit-mixed int (32-bit) output