splitIntoContiguousRanges = {
const s = [];
return (min, max, emit) => {
s.length = 0;
s.push({ min, max });
let range = { min, max: min - 1 };
while (s.length) {
const { min, max } = s.pop();
if (codeRangeContainedInBoundingBox(min, max)) {
if (range.max + 1 == min) {
range.max = max;
} else {
emit(range);
range = { min, max };
}
} else {
const { litMax, bigMin } = litMaxBigMin(min, max);
s.push({ min: bigMin, max });
s.push({ min, max: litMax });
}
}
if (range.max >= range.min) emit(range);
if (range.max < max) emit({ min: range.max + 1, max });
};
}