public static CapturedConstraint Match(this IValidatorConstraintFactory self, Func <IJsonValidationContext, JToken, bool> constraintFunc, string explain)
 => self.Capture(new FunctionalConstraint(constraintFunc, explain));
 public static CapturedConstraint Match(this IValidatorConstraintFactory self, Regex expression)
 => self.Capture(new MatchStringConstraint(expression));
 public static CapturedConstraint Match(this IValidatorConstraintFactory self, Func <JToken, bool> constraintFunc, string explain)
 => self.Capture(new FunctionalConstraint((c, t) => constraintFunc(t), explain));
 public static CapturedConstraint Match(this IValidatorConstraintFactory self, string pattern, RegexOptions options = RegexOptions.Compiled)
 => self.Match(new Regex(pattern, options));