public override IMarkdownToken TryMatch(IMarkdownParser engine, IMarkdownParsingContext context)
        {
            var match = Blockquote.Match(context.CurrentMarkdown);

            if (match.Length == 0)
            {
                return(null);
            }
            var sourceInfo = context.Consume(match.Length);
            var capStr     = LeadingBlockquote.Replace(match.Value, string.Empty);
            var c          = engine.SwitchContext(MarkdownBlockContext.IsBlockQuote, true);
            var tokens     = engine.Tokenize(sourceInfo.Copy(capStr));

            engine.SwitchContext(c);
            return(new AzureBlockquoteBlockToken(this, engine.Context, tokens, sourceInfo));
        }
        public override IMarkdownToken TryMatch(IMarkdownParser engine, ref string source)
        {
            var match = Blockquote.Match(source);

            if (match.Length == 0)
            {
                return(null);
            }
            source = source.Substring(match.Length);
            var capStr = LeadingBlockquote.Replace(match.Value, string.Empty);
            var c      = engine.SwitchContext(MarkdownBlockContext.IsBlockQuote, true);
            var tokens = engine.Tokenize(capStr);

            engine.SwitchContext(c);
            return(new AzureBlockquoteBlockToken(this, engine.Context, tokens, match.Value));
        }