///|
pub(all) struct SubCommand {
  args : Map[String, Arg]
  /// If there is sub-commands position, positional arguments in currently level is forbiden.
  subcmds : Map[String, SubCommand]
  help : String
}

///|
/// Create a subcommand specification
pub fn SubCommand::new(
  args? : Map[String, Arg] = {},
  subcmds? : Map[String, SubCommand] = {},
  help? : String = "",
) -> SubCommand {
  { args, subcmds, help }
}