in lib/src/characters_impl.dart [1083:1106]
int _lastIndexOf(String source, String pattern, int start, int end) {
var patternLength = pattern.length;
if (patternLength == 0) return end;
// Start of pattern must be in range [start .. end - patternLength].
var realEnd = end - patternLength;
if (realEnd < start) return -1;
// If the range from 0 to start is no more than double the range from
// start to end, use lastIndexOf.
if (realEnd * 2 > start) {
var index = 0;
while (realEnd >= start &&
(index = source.lastIndexOf(pattern, realEnd)) >= 0) {
if (index < start) return -1;
if (isGraphemeClusterBoundary(source, start, end, index) &&
isGraphemeClusterBoundary(
source, start, end, index + patternLength)) {
return index;
}
realEnd = index - 1;
}
return -1;
}
return _gcLastIndexOf(source, pattern, start, end);
}