# File lib/thor/base.rb, line 40
    def initialize(args=[], options={}, config={})
      args = Thor::Arguments.parse(self.class.arguments, args)
      args.each { |key, value| send("#{key}=", value) }

      parse_options = self.class.class_options

      if options.is_a?(Array)
        task_options  = config.delete(:task_options) # hook for start
        parse_options = parse_options.merge(task_options) if task_options
        array_options, hash_options = options, {}
      else
        array_options, hash_options = [], options
      end

      opts = Thor::Options.new(parse_options, hash_options)
      self.options = opts.parse(array_options)
      opts.check_unknown! if self.class.check_unknown_options?
    end