/// <summary>
        /// Writes the specified <paramref name="block"/> to the <paramref name="renderer"/>.
        /// </summary>
        /// <param name="renderer">The renderer.</param>
        /// <param name="block">The object to render.</param>
        protected override void Write(HtmlRenderer renderer, CodeBlock block)
        {
            // Make sure "obj" is an instance of "FencedCodeBlock"
            FencedCodeBlock fenced = block as FencedCodeBlock;

            // Make sure "obj" is an instance of "FencedCodeBlockParser"
            FencedCodeBlockParser parser = block.Parser as FencedCodeBlockParser;

            // Use the fallback code block renderer
            if (fenced == null || parser == null)
            {
                Fallback.Write(renderer, block);
                return;
            }

            // Get the language from the fenced block
            string language = fenced.Info.ToLowerInvariant();

            // Get the actual contents of the fenced block
            string code = String.Join(Environment.NewLine, block.Lines.Lines);

            // TODO: is this really a good idea?
            code = code.TrimEnd();

            // Get the syntax language matching "language"
            Options.TryGetAlias(language, out Language lang);

            renderer.Write(Highlighter.Highlight(code, lang));
        }
        protected override void Write(HtmlRenderer renderer, CodeBlock obj)
        {
            FencedCodeBlock       fencedCodeBlock = obj as FencedCodeBlock;
            FencedCodeBlockParser parser          = obj.Parser as FencedCodeBlockParser;

            if (fencedCodeBlock == null || parser == null)
            {
                _underlyingRenderer.Write(renderer, obj);
                return;
            }

            var languageMoniker = fencedCodeBlock.Info.Replace(parser.InfoPrefix, string.Empty);

            if (string.IsNullOrEmpty(languageMoniker))
            {
                _underlyingRenderer.Write(renderer, obj);
                return;
            }

            string firstLine;
            var    code = GetCode(obj, out firstLine);

            Console.WriteLine(formatter.GetCSSString());
            renderer.WriteLine(formatter.GetHtmlString(code, Languages.FindById(languageMoniker)));
        }