sortAndValidateTextEdits function
Sorts edits bottom-to-top for in-place application and rejects
overlaps (omp's sortAndValidateTextEdits).
Equal start positions tiebreak by original array index descending so that, applied bottom-up, inserts at the same position land in array order (per the LSP spec the array order defines the result order). Byte-identical non-empty range edits are idempotent, so duplicate server output is collapsed before overlap validation. Throws StateError on overlap.
Implementation
List<LspTextEdit> sortAndValidateTextEdits(List<LspTextEdit> edits) {
final indexed = <(LspTextEdit, int)>[
for (var i = 0; i < edits.length; i++) (edits[i], i),
];
indexed.sort(_compareBottomToTop);
final unique = _collapseDuplicates(indexed);
_rejectOverlaps(unique);
return unique;
}