in lib/src/characters_impl.dart [158:186]
Iterable<Characters> split(Characters pattern, [int maxParts = 0]) sync* {
if (maxParts == 1 || string.isEmpty) {
yield this;
return;
}
var patternString = pattern.string;
var start = 0;
if (patternString.isNotEmpty) {
do {
var match = _indexOf(string, patternString, start, string.length);
if (match < 0) break;
yield StringCharacters(string.substring(start, match));
start = match + patternString.length;
maxParts--;
} while (maxParts != 1);
} else {
// Empty pattern. Split on internal boundaries only.
var breaks = Breaks(string, 0, string.length, stateSoTNoBreak);
do {
var match = breaks.nextBreak();
if (match < 0) return;
yield StringCharacters(string.substring(start, match));
start = match;
maxParts--;
} while (maxParts != 1);
if (start == string.length) return;
}
yield StringCharacters(string.substring(start));
}