public Range SplitRange(Range r, int index) { var range = new Range { StartIndex = index, Length = r.EndIndex - index }; r.Length = index - r.StartIndex; var node = list.Find(r); list.AddAfter(node, range); return range; }