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); } } }