in lib/src/algorithms.dart [154:177]
void insertionSort<E>(List<E> elements,
{int Function(E, E)? compare, int start = 0, int? end}) {
// If the same method could have both positional and named optional
// parameters, this should be (list, [start, end], {compare}).
compare ??= defaultCompare;
end ??= elements.length;
for (var pos = start + 1; pos < end; pos++) {
var min = start;
var max = pos;
var element = elements[pos];
while (min < max) {
var mid = min + ((max - min) >> 1);
var comparison = compare(element, elements[mid]);
if (comparison < 0) {
max = mid;
} else {
min = mid + 1;
}
}
elements.setRange(min + 1, pos + 1, elements, min);
elements[min] = element;
}
}