private ImmutableList <T> InsertImpl(int index, IEnumerable <T> items) { if (this.root == null) { return(new ImmutableList <T>(LeafSegment.MakeLeaf(items))); } else { var segs = this.root.Insert(index, items); if (segs.Length == 1) { return(new ImmutableList <T>(segs[0])); } else { return(new ImmutableList <T>(new TreeSegment(segs))); } } }