private static IEnumerable <SourceBlock> MergeConsecutiveBlocksOfSameType(IEnumerable <SourceBlock> blocks)
        {
            SourceBlock previousBlock = null;

            foreach (var block in blocks)
            {
                if (previousBlock?.Code == block.Code)
                {
                    previousBlock = new SourceBlock(previousBlock.Lines.Concat(block.Lines));
                    continue;
                }
                else if (previousBlock != null)
                {
                    yield return(previousBlock);
                }

                previousBlock = block;
            }

            if (previousBlock != null)
            {
                yield return(previousBlock);
            }
        }
 public SourceDocument(string markdownContent)
 {
     Blocks = SourceBlock.GetBlocks(SourceLine.GetSourceLines(markdownContent)) as IReadOnlyList <SourceBlock>;
 }