public IEnumerable <ISegment> GetDeletableSegments(ISegment segment) { if (startAnchor == null) { yield return(segment); yield break; } if (segment.EndOffset <= startAnchor.Offset || segment.Offset >= endAnchor.Offset) { yield break; } var range = new LineRange { start = Math.Max(segment.Offset, startAnchor.Offset), end = Math.Min(segment.EndOffset, endAnchor.Offset) }; yield return(range.SimpleSegment()); }