@Target(value=PARAMETER)
@Retention(value=RUNTIME)
public @interface Flag
Flags are similar to normal parameters, however they do not need to come in a specific order, and are explicitly named with a special prefix when the command is invoked.
For example, /test (parameters) --name "hello there", in which name would
be a flag parameter.
Flags can have a long form and a short form. The long form is prefixed by --,
while the short one is prefixed by -.
Flags are compatible with Default and Optional, as in, they can be
marked as optional or can have a default value when not specified.