insertAll method
Inserts elements as a contiguous run at visible index.
Implementation
RgaList<T> insertAll(int index, Iterable<T> elements) {
final visible = _visible();
if (index < 0 || index > visible.length) {
throw RangeError.range(index, 0, visible.length, 'index');
}
var origin = index == 0 ? null : visible[index - 1].id;
final nodes = Map<String, RgaNode<T>>.from(_nodes);
var counter = _counter;
for (final element in elements) {
counter++;
final node = RgaNode<T>(replicaId: replicaId, counter: counter, origin: origin, value: element);
nodes[node.id] = node;
origin = node.id; // chain the run so it cannot be interleaved
}
return RgaList._(replicaId, nodes, counter);
}