*<Null safety>*
int compareAsciiLowerCaseNatural (String a, String b)
int compareAsciiLowerCaseNatural(String a, String b) { var defaultResult = 0; // Returned if no difference found. for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; var aLowerCase = aChar; var bLowerCase = bChar; if (_upperCaseA <= aChar && aChar <= _upperCaseZ) { aLowerCase += _asciiCaseBit; } if (_upperCaseA <= bChar && bChar <= _upperCaseZ) { bLowerCase += _asciiCaseBit; } if (aLowerCase != bLowerCase) { return _compareNaturally(a, b, i, aLowerCase, bLowerCase); } if (defaultResult == 0) defaultResult = aChar - bChar; } if (b.length > a.length) return -1; return defaultResult.sign; }