internal static void ValidatingTraverse(ValidationContext validationContext, Action <ValidationContext> validateAction)
        {
            var children = ValidatingTraverse(validationContext.Stack.Current.Element, validationContext.McContext, validationContext.FileFormat);

            foreach (var child in children)
            {
                if (validationContext.CheckIfCancelled())
                {
                    return;
                }

                using (validationContext.Stack.Push(element: child))
                {
                    validateAction(validationContext);
                }
            }
        }