public static int combineListHash(int... hashes) {
		int hash = 0;
		for (int h : hashes) {
			hash += h;
			hash += (hash << 10);
			hash ^= (hash >> 6);
		}
		hash += (hash << 3);
		hash ^= (hash >> 11);
		hash += (hash << 15);

		return hash;
	}
public static int combineListHash ( int ... hashes ) { int hash = 0 ; for ( int h : hashes ) { hash += h ; hash += ( hash << 10 ) ; hash ^= ( hash > > 6 ) ; } hash += ( hash << 3 ) ; hash ^= ( hash > > 11 ) ; hash += ( hash << 15 ) ; return hash ; }
Combine many hash codes into one in a way that depends on their order.

The current implementation is based on the Jenkins One-at-a-Time hash,
see http://www.burtleburtle.net/bob/hash/doobs.html and also
http://en.wikipedia.org/wiki/Jenkins_hash_function.

@param hashes
@return the combined hash code