public function commandSubcommandStates(CommandInterface $cmd)
    {
        $args = [];
        $cmds = $this->visibleCommands($cmd->getCommands());
        foreach ($cmds as $c) {
            $args[] = sprintf("'%s:->%s'", $c->name(), $c->name()); // generate argument states
        }

        return $args;
    }