public static TResult[] RunAll <TElement, TResult>(this IReadOnlyList <TElement> elements, Func <TElement, TResult> func)
        {
            if (elements == null)
            {
                throw new ArgumentNullException(nameof(elements));
            }
            if (func == null)
            {
                throw new ArgumentNullException(nameof(func));
            }
            var results = new TResult[elements.Count];
            List <DocumentException> exceptions = null;

            for (int i = 0; i < elements.Count; i++)
            {
                try
                {
                    results[i] = func(elements[i]);
                }
                catch (DocumentException ex)
                {
                    if (exceptions == null)
                    {
                        exceptions = new List <DocumentException>();
                    }
                    exceptions.Add(ex);
                }
            }
            if (exceptions?.Count > 0)
            {
                throw DocumentException.CreateAggregate(exceptions);
            }
            return(results);
        }
        public static void RunAll <TElement>(this IReadOnlyList <TElement> elements, Action <TElement> action)
        {
            if (elements == null)
            {
                throw new ArgumentNullException(nameof(elements));
            }
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }
            List <DocumentException> exceptions = null;

            for (int i = 0; i < elements.Count; i++)
            {
                try
                {
                    action(elements[i]);
                }
                catch (DocumentException ex)
                {
                    if (exceptions == null)
                    {
                        exceptions = new List <DocumentException>();
                    }
                    exceptions.Add(ex);
                }
            }
            if (exceptions?.Count > 0)
            {
                throw DocumentException.CreateAggregate(exceptions);
            }
        }