Just nitpicks. Like allowing `@NamedArgument` without parentheses. Or using `@NamedArgument("b", "banana", "ban")` instead of `@NamedArgument(["b", "banana", "ban"])`
I did array because I think it makes sense to have `@NamedArgument(names, help_text)` as a shortcut for `@(NamedArgument(names).HelpText(help_text))` for CLI.