code: public static int hash(int code, int level) {
  		final int rotation = level * 11;
  
  		code = Integer.rotateLeft(code, rotation);
  
  		return MathUtils.jenkinsHash(code);
  	}
docs: The level parameter is needed so that we can have different hash functions when we recursively apply
  the partitioning, so that the working set eventually fits into memory.