pub trait ParserInfo {
// Required methods
fn docs(&self) -> &DocInfo;
fn symbols(&mut self) -> Vec<&mut dyn Input>;
fn subcommand_docs(&self) -> Vec<DocInfo>;
fn parse_subcommand(
&mut self,
sub_idx: usize,
tokens: &[String],
) -> Result<(), CliError>;
fn complete_subcommand(
&mut self,
sub_idx: usize,
tokens: &[String],
) -> Result<Vec<CompOut>, CliError>;
fn call_handler(&mut self) -> CliResult<()>;
fn push_parent(&mut self, parents: &[String]);
}