# File lib/aws/core/option_grammar.rb, line 544
        def customize(config = [])
          m = Class.new(self)
          supported_options = m.supported_options.inject({}) do |memo, opt|
            memo[opt.name] = opt
            memo
          end
          config.each do |option_config|
            if config.kind_of?(Hash)
              (name, value_desc) = option_config
            else
              (name, value_desc) = parse_option(option_config)
            end
            option = supported_options[name] || DefaultOption.new(name)
            option = option.extend_with_config(*value_desc)
            supported_options[option.name] = option
          end

          supported_ary = supported_options.values
          MetaUtils.extend_method(m, :supported_options) { supported_ary }
          supported_ruby_names = supported_ary.inject({}) do |memo, opt|
            memo[opt.ruby_name] = opt
            memo
          end
          MetaUtils.extend_method(m, :option) { |n| supported_ruby_names[n] }
          supported_ary.each do |opt|
            MetaUtils.extend_method(m, "validate_#{opt.ruby_name}") do |value|
              opt.validate(value)
            end
          end

          m
        end