# File lib/cri/command.rb, line 243
    def run(opts_and_args, parent_opts={})
      # Parse up to command name
      stuff = partition(opts_and_args)
      opts_before_subcmd, subcmd_name, opts_and_args_after_subcmd = *stuff

      if subcommands.empty? || (subcmd_name.nil? && !self.block.nil?)
        run_this(opts_and_args, parent_opts)
      else
        # Handle options
        self.handle_options(opts_before_subcmd)

        # Get command
        if subcmd_name.nil?
          $stderr.puts "#{name}: no command given"
          exit 1
        end
        subcommand = self.command_named(subcmd_name)

        # Run
        subcommand.run(opts_and_args_after_subcmd, opts_before_subcmd)
      end
    end