internal virtual void ValidateSortedLineNumbers(ReadOnlyCollection <NumberedLineRange> lineNumbers, int codeNumLines)
        {
            if (lineNumbers != null)
            {
                NumberedLineRange currentNumberedLineRange = lineNumbers[0];
                (int currentNormalizedStartLine, int currentNormalizedEndLine) = currentNumberedLineRange.GetNormalizedStartAndEndLines(codeNumLines);
                int currentStartNumber    = currentNumberedLineRange.StartNumber;
                int lastNormalizedEndLine = currentNormalizedEndLine;
                int lastEndNumber         = currentStartNumber + (currentNormalizedEndLine - currentNormalizedStartLine);

                int numNumberedLineRanges = lineNumbers.Count;
                for (int i = 1; i < numNumberedLineRanges; i++)
                {
                    currentNumberedLineRange = lineNumbers[i];
                    (currentNormalizedStartLine, currentNormalizedEndLine) = currentNumberedLineRange.GetNormalizedStartAndEndLines(codeNumLines);
                    currentStartNumber = currentNumberedLineRange.StartNumber;

                    if (currentNormalizedStartLine <= lastNormalizedEndLine || currentStartNumber <= lastEndNumber)
                    {
                        throw new OptionsException(nameof(IFlexiCodeBlockOptions.LineNumbers),
                                                   string.Format(Strings.OptionsException_FlexiCodeBlocks_OverlappingLineNumbers,
                                                                 lineNumbers[i - 1],
                                                                 currentNumberedLineRange));
                    }

                    lastNormalizedEndLine = currentNormalizedEndLine;
                    lastEndNumber         = currentStartNumber + (currentNormalizedEndLine - currentNormalizedStartLine);
                }
            }
        }