internal static IArgumentArity TranslateArity(ArityEnum arity)
        {
            switch (arity)
            {
            case ArityEnum.Zero: return(ArgumentArity.Zero);             // => new ArgumentArity(0, 0);

            case ArityEnum.ZeroOrOne: return(ArgumentArity.ZeroOrOne);   // => new ArgumentArity(0, 1);

            case ArityEnum.ExactlyOne: return(ArgumentArity.ExactlyOne); // => new ArgumentArity(1, 1);

            case ArityEnum.ZeroOrMore: return(ArgumentArity.ZeroOrMore); // => new ArgumentArity(0, 2147483647);

            case ArityEnum.OneOrMore: return(ArgumentArity.OneOrMore);   // => new ArgumentArity(1, 2147483647);

            default:
                throw new ArgumentOutOfRangeException(nameof(arity));
            }
        }
 public ArgumentAttribute(string name, ArityEnum arity = ArityEnum.Unknown)
 {
     Name  = name ?? throw new ArgumentNullException(nameof(name));
     Arity = arity;
 }