# File lib/http/cookie.rb, line 130
  def initialize(*args)
    @origin = @domain = @path =
      @expires = @max_age = nil
    @for_domain = @secure = @httponly = false
    @session = true
    @created_at = @accessed_at = Time.now
    case argc = args.size
    when 1
      if attr_hash = Hash.try_convert(args.last)
        args.pop
      else
        self.name, self.value = args # value is set to nil
        return
      end
    when 2..3
      if attr_hash = Hash.try_convert(args.last)
        args.pop
        self.name, value = args
      else
        argc == 2 or
          raise ArgumentError, "wrong number of arguments (#{argc} for 1-3)"
        self.name, self.value = args
        return
      end
    else
      raise ArgumentError, "wrong number of arguments (#{argc} for 1-3)"
    end
    for_domain = false
    domain = max_age = origin = nil
    attr_hash.each_pair { |okey, val|
      case key ||= okey
      when :name
        self.name = val
      when :value
        value = val
      when :domain
        domain = val
      when :path
        self.path = val
      when :origin
        origin = val
      when :for_domain, :for_domain?
        for_domain = val
      when :max_age
        # Let max_age take precedence over expires
        max_age = val
      when :expires, :expires_at
        self.expires = val unless max_age
      when :httponly, :httponly?
        @httponly = val
      when :secure, :secure?
        @secure = val
      when Symbol
        setter = "#{key}=""#{key}="
        if respond_to?(setter)
          __send__(setter, val)
        else
          warn "unknown attribute name: #{okey.inspect}" if $VERBOSE
          next
        end
      when String
        warn "use downcased symbol for keyword: #{okey.inspect}" if $VERBOSE
        key = key.downcase.to_sym
        redo
      else
        warn "invalid keyword ignored: #{okey.inspect}" if $VERBOSE
        next
      end
    }
    if @name.nil?
      raise ArgumentError, "name must be specified"
    end
    @for_domain = for_domain
    self.domain = domain if domain
    self.origin = origin if origin
    self.max_age = max_age if max_age
    self.value = value.nil? && (@expires || @max_age) ? '' : value
  end