src/main/java/org/jivesoftware/smack/util/collections/AbstractHashedMap.java
protected int hash(Object key) {
        // same as JDK 1.4
        int h = key.hashCode();
        h += ~(h << 9);
        h ^= (h >>> 14);
        h += (h << 4);
        h ^= (h >>> 10);
        return h;
    }
protected int hash(Object key) {
        // same as JDK 1.4
        int h = key.hashCode();
        h += ~(h << 9);
        h ^= (h >>> 14);
        h += (h << 4);
        h ^= (h >>> 10);
        return h;
    }
Gets the hash code for the key specified. This implementation uses the
additional hashing routine from JDK1.4. Subclasses can override this to
return alternate hash codes.

@param key
the key to get a hash code for
@return the hash code