public static Inline GetNextInlineInParagraph(this TextPointer current, LogicalDirection direction)
        {
            Func <Inline, bool> predicate = x =>
            {
                TextPointer elementBoundary   = x.GetBoundary(direction);
                var         relativeDirection = elementBoundary.RelativeTo(current);
                return(relativeDirection == direction || current.IsAt(elementBoundary));
            };

            var inlines = current.Paragraph?.Inlines;

            if (inlines == null)
            {
                return(null);
            }

            var nextInline = direction == LogicalDirection.Forward
                ? inlines.FirstOrDefault(predicate)
                : inlines.LastOrDefault(predicate);

            return(nextInline);
        }