code: protected int getHash(Object o) {
  		int hash = o == null ? 0 : o.hashCode();
  		hash += (hash << 15) ^ 0xffffcd7d;
  		hash ^= (hash >>> 10);
  		hash += (hash << 3);
  		hash ^= (hash >>> 6);
  		hash += (hash << 2) + (hash << 14);
  		hash ^= (hash >>> 16);
  		return hash;
  	}
docs: Get the hash for a given object, apply an additional hash function to reduce
  collisions. This implementation uses the same Wang/Jenkins algorithm as
  {@link ConcurrentHashMap}. Subclasses can override to provide alternative hashing.
  @param o the object to hash (may be null)
  @return the resulting hash code