internal static IArgumentLayer Option(this IArgumentLayer target, char shortName, string longName, Action <IArgumentBuilder> builder) => target.AddOption(e => e.SetShortName(shortName).SetLongName(longName).Argument(builder));
internal static IArgumentLayer Argument(this IArgumentLayer target, string name) => target.AddArgument(e => e.SetName(name));
internal static IArgumentLayer Option(this IArgumentLayer target, char shortName, string longName) => target.AddOption(e => e.SetShortName(shortName).SetLongName(longName));
internal static IArgumentLayer Command(this IArgumentLayer target, string name, string description) => target.AddCommand(e => e.Name(name).Description(description));
internal static IArgumentLayer Command(this IArgumentLayer target, string name) => target.AddCommand(e => e.Name(name));
internal static IArgumentLayer Argument(this IArgumentLayer target, string name, string description, bool optional) => optional?target.AddArgument(e => e.SetName(name).Description(description).Optional()) : target.Argument(name, description);
internal static IArgumentLayer Argument(this IArgumentLayer target, string name, string description) => target.AddArgument(e => e.SetName(name).Description(description));