public static void Replace(this ISegment segment, int startIndex, int endPosition, string replacementText) { var textVisitor = new CustomTextCollectionVisitor(segment, startIndex, endPosition); foreach (var item in segment) { item.AcceptVisitor(textVisitor); } textVisitor.ReplaceText(replacementText); }