///|
/// Insert an element at the given position in the tree.
/// Position is clamped to [0, span()]. Elements with non-positive span are
/// ignored without mutating the tree.
pub fn[T : @btree.BTreeElem] OrderTree::insert_at(
self : OrderTree[T],
pos : Int,
elem : T,
) -> Unit {
let elem_span = @rle.Spanning::span(elem)
guard elem_span > 0 else { return }
let span = self.tree.span()
let clamped_pos = if pos < 0 { 0 } else if pos > span { span } else { pos }
if self.tree.is_empty() {
self.tree.init_root(elem, elem_span)
} else {
self.tree.mutate_for_insert(clamped_pos, fn(ctx) {
compute_insert_splice(ctx, elem)
})
}
self.tree.normalize_boundary_at(clamped_pos)
self.tree.normalize_boundary_at(clamped_pos + elem_span)
}