private static int FindLastNewLineOffset(this IDocument document, int start, int end)
        {
            if (start >= end)
            {
                return(end);
            }
            if (document == null)
            {
                return(end);
            }
            var range = new TextRange(start, end);

            if (!range.ContainedIn(document.DocumentRange))
            {
                return(0);
            }
            var text = document.GetText(range);

            if (text == null)
            {
                return(0);
            }
            var lastNewLine = text.LastIndexOfAny(StringUtil.NEW_LINE_CHARACTERS);

            return(lastNewLine == -1 ? end : start + lastNewLine);
        }
        private static int CountNewLines(this IDocument document, TextRange range)
        {
            var result = 0;

            if (document == null)
            {
                return(0);
            }
            if (!range.ContainedIn(document.DocumentRange))
            {
                return(0);
            }
            var text = document.GetText(range);

            if (text == null)
            {
                return(0);
            }
            foreach (var newLine in StringUtil.NEW_LINE_CHARACTERS)
            {
                result += StringUtil.Count(text, newLine);
            }
            return(result);
        }