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

      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

      options = Thor::Options.parse(parse_options, array_options)
      self.options = Thor::CoreExt::HashWithIndifferentAccess.new(options).merge!(hash_options)
      self.options.freeze
    end