static int lowerCaseCompare(S a, S b) { if (a == null) ret b == null ? 0 : -1; if (b == null) ret 1; int len1 = a.length(); int len2 = b.length(); int lim = Math.min(len1, len2); int k = 0; while (k < lim) { char c1 = Character.toLowerCase(a.charAt(k)); char c2 = Character.toLowerCase(b.charAt(k)); if (c1 != c2) ret c1 - c2; k++; } ret len1 - len2; }