public static IEnumerable <LineElement> CreateParagraphElements(
            this Word.Paragraph paragraph,
            IImageAccessor imageAccessor,
            IStyleFactory styleFactory)
        {
            var runs = paragraph
                       .SelectRuns()
                       .ToStack();

            var elements = new List <LineElement>();

            while (runs.Count > 0)
            {
                var run = runs.Pop();
                if (run.IsFieldStart())
                {
                    var fieldRuns = new List <Word.Run> {
                        run
                    };
                    do
                    {
                        run = runs.Pop();
                        fieldRuns.Add(run);
                    } while (!run.IsFieldEnd());

                    var field = fieldRuns.CreateField(styleFactory);
                    elements.Add(field);
                }
                else
                {
                    var runElements = run.CreateParagraphElements(imageAccessor, styleFactory);
                    elements.AddRange(runElements);
                }
            }

            return(elements.Union(new[] { ParagraphCharElement.Create(styleFactory.TextStyle) }));
        }