    # File lib/chef/knife.rb, line 259
        def initialize(argv=[])
          super() # having to call super in initialize is the most annoying anti-pattern :(
          @ui = Chef::Knife::UI.new(STDOUT, STDERR, STDIN, config)

          command_name_words = self.class.snake_case_name.split('_')

          # Mixlib::CLI ignores the embedded name_args
          @name_args = parse_options(argv)
          @name_args.delete(command_name_words.join('-'))
          @name_args.reject! { |name_arg| command_name_words.delete(name_arg) }

          # knife node run_list add requires that we have extra logic to handle
          # the case that command name words could be joined by an underscore :/
          command_name_words = command_name_words.join('_')
          @name_args.reject! { |name_arg| command_name_words == name_arg }

          if config[:help]
            msg opt_parser
            exit 1
          end
        end