}
throw new IllegalArgumentException("can only compare MemberPeers and OrderSets");
}
public int compare(final FacetedMethod o1, final FacetedMethod o2) {
final MemberOrderFacet m1 = getMemberOrder(o1);
final MemberOrderFacet m2 = getMemberOrder(o2);
if (m1 == null && m2 == null) {
return fallbackComparator.compare(o1, o2);
}
if (m1 == null && m2 != null) {
return +1; // annotated before non-annotated
}
if (m1 != null && m2 == null) {
return -1; // annotated before non-annotated
}
if (ensureInSameGroup && !m1.name().equals(m2.name())) {
throw new IllegalArgumentException("Not in same group");
}
final StringTokenizer tokens1 = new StringTokenizer(m1.sequence(), ".", false);
final String[] components1 = new String[tokens1.countTokens()];
for (int i = 0; tokens1.hasMoreTokens(); i++) {
components1[i] = tokens1.nextToken();
}
final StringTokenizer tokens2 = new StringTokenizer(m2.sequence(), ".", false);
final String[] components2 = new String[tokens2.countTokens()];
for (int i = 0; tokens2.hasMoreTokens(); i++) {
components2[i] = tokens2.nextToken();
}