in xstream/src/java/com/thoughtworks/xstream/core/util/PresortedMap.java [171:193]
public int compare(final K object1, final K object2) {
if (array == null || list.size() != array.length) {
@SuppressWarnings("unchecked")
final Map.Entry<K, V>[] a = new Map.Entry[list.size()];
if (array != null) {
System.arraycopy(array, 0, a, 0, array.length);
}
for (int i = array == null ? 0 : array.length; i < list.size(); ++i) {
a[i] = list.get(i);
}
array = a;
}
int idx1 = Integer.MAX_VALUE, idx2 = Integer.MAX_VALUE;
for (int i = 0; i < array.length && !(idx1 < Integer.MAX_VALUE && idx2 < Integer.MAX_VALUE); ++i) {
if (idx1 == Integer.MAX_VALUE && object1 == array[i].getKey()) {
idx1 = i;
}
if (idx2 == Integer.MAX_VALUE && object2 == array[i].getKey()) {
idx2 = i;
}
}
return idx1 - idx2;
}