in core/src/main/java/gnu/trove/TObjectHash.java [191:216]
protected int index(T obj) {
Object[] set = _set;
if (set == EMPTY_OBJECT_ARRAY) return -1;
int length = set.length;
int hash = _hashingStrategy.computeHashCode(obj) & 0x7fffffff;
int index = hash % length;
Object cur = set[index];
if (cur != null
&& (cur == REMOVED || !_hashingStrategy.equals((T)cur, obj))) {
// see Knuth, p. 529
int probe = 1 + hash % (length - 2);
do {
index -= probe;
if (index < 0) {
index += length;
}
cur = set[index];
}
while (cur != null
&& (cur == REMOVED || !_hashingStrategy.equals((T)cur, obj)));
}
return cur == null ? -1 : index;
}