new (Gem::ConfigFile)

    # File lib/rubygems/config_file.rb, line 98
      def initialize(arg_list)
        @config_file_name = nil
        need_config_file_name = false

        arg_list = arg_list.map do |arg|
          if need_config_file_name then
            @config_file_name = arg
            need_config_file_name = false
            nil
          elsif arg =~ /^--config-file=(.*)/ then
            @config_file_name = $1
            nil
          elsif arg =~ /^--config-file$/ then
            need_config_file_name = true
            nil
          else
            arg
          end
        end.compact

        @backtrace = DEFAULT_BACKTRACE
        @benchmark = DEFAULT_BENCHMARK
        @bulk_threshold = DEFAULT_BULK_THRESHOLD
        @verbose = DEFAULT_VERBOSITY
        @update_sources = DEFAULT_UPDATE_SOURCES

        operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
        platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
        system_config = load_file SYSTEM_WIDE_CONFIG_FILE
        user_config = load_file config_file_name.dup.untaint

        @hash = operating_system_config.merge platform_config
        @hash = @hash.merge system_config
        @hash = @hash.merge user_config

        # HACK these override command-line args, which is bad
        @backtrace = @hash[:backtrace] if @hash.key? :backtrace
        @benchmark = @hash[:benchmark] if @hash.key? :benchmark
        @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
        Gem.sources = @hash[:sources] if @hash.key? :sources
        @verbose = @hash[:verbose] if @hash.key? :verbose
        @update_sources = @hash[:update_sources] if @hash.key? :update_sources
        @path = @hash[:gempath] if @hash.key? :gempath
        @home = @hash[:gemhome] if @hash.key? :gemhome

        handle_arguments arg_list
      end