public override ListItem VisitBulletSimple([NotNull] BulletSimpleContext context)
            {
                var indentation = context.indentation();
                int length      = indentation == null ? 0 : indentation.GetText().Length;

                IndentationTracker.Track(length);
                var start            = context.bullet().GetText();
                var list             = new List <IElement>();
                var paragraphVisitor = new ParagraphVisitor().Inherit(this);
                var first            = context.paragraphNoBreak();

                if (first != null)
                {
                    list.Add(paragraphVisitor.VisitParagraphNoBreak(first));
                }

                var paragraph = context.paragraph();

                if (paragraph != null)
                {
                    foreach (var item in paragraph)
                    {
                        list.Add(paragraphVisitor.VisitParagraph(item));
                    }
                }

                return(new ListItem(start, null, list)
                {
                    Indentation = length
                });
            }
            public override ListItem VisitListItemEnumerated(ListItemEnumeratedContext context)
            {
                var enumerator       = context.enumerated.GetText();
                var list             = new List <IElement>();
                var paragraphVisitor = new ParagraphVisitor().Inherit(this);
                var start            = context.paragraphNoBreak();

                if (start != null)
                {
                    list.Add(paragraphVisitor.VisitParagraphNoBreak(start));
                }
                var paragraph = context.paragraph();

                if (paragraph != null)
                {
                    foreach (var item in paragraph)
                    {
                        list.Add(paragraphVisitor.VisitParagraph(item));
                    }
                }

                return(new ListItem(null, enumerator, list)
                {
                    LineNumber = context.LineBreak().Symbol.Line
                });
            }
            public override IElement VisitSectionElement([NotNull] SectionElementContext context)
            {
                var commentContext = context.comment();

                if (commentContext != null)
                {
                    var commentVisitor = new CommentVisitor().Inherit(this);
                    var comment        = commentVisitor.VisitComment(commentContext);
                    return(comment);
                }

                var blockContext = context.lineBlock();

                if (blockContext != null)
                {
                    var blockVisitor = new LineBlockVisitor().Inherit(this);
                    var lineBlock    = blockVisitor.VisitLineBlock(blockContext);
                    return(lineBlock);
                }

                var listItemContext = context.listItemBullet();

                if (listItemContext != null)
                {
                    var listItemVisitor = new ListItemVisitor().Inherit(this);
                    var listItem        = listItemVisitor.VisitListItemBullet(listItemContext);
                    return(listItem);
                }

                var listItemContext2 = context.listItemEnumerated();

                if (listItemContext2 != null)
                {
                    var listItemVisitor = new ListItemVisitor().Inherit(this);
                    var listItem        = listItemVisitor.VisitListItemEnumerated(listItemContext2);
                    return(listItem);
                }

                var paragraphVisitor = new ParagraphVisitor().Inherit(this);
                var paragraph        = paragraphVisitor.VisitParagraph(context.paragraph());

                return(paragraph);
            }