####################
# No args is an error

####################
# No short flag or an invalid short flag is an error

####################
# A required and optional arg makes no sense

####################
# A repeated and optional arg makes no sense

####################
# An unexpected arg not associated with a flag is an error

####################
# Bool, short only
h

####################
# Bool, short and long
h/help

####################
# Bool, short and long but the short var cannot be used
h-help

####################
# Required val, short and long but the short var cannot be used
h-help=

####################
# Optional val, short and long valid
h/help=?

####################
# Optional val, short and long but the short var cannot be used
h-help=?

####################
# Repeated val, short and long valid
h/help=+

####################
# Repeated val, short and long but short not valid
h-help=+

####################
# Repeated val, short only
h=+
h=+