# File lib/webmock/util/query_mapper.rb, line 242
      def to_query(parent, value, options = {})
        options[:notation] ||= :subscript
        case value
        when ::Hash
          value = value.map do |key, val|
            [
              ::Addressable::URI.encode_component(key.to_s.dup, ::Addressable::URI::CharacterClasses::UNRESERVED),
              val
            ]
          end
          value.sort!
          buffer = ''
          value.each do |key, val|
            new_parent = options[:notation] != :flat_array ? "#{parent}[#{key}]" : parent
            buffer << "#{to_query(new_parent, val, options)}&"
          end
          buffer.chop
        when ::Array
          buffer = ''
          value.each_with_index do |val, i|
            new_parent = options[:notation] != :flat_array ? "#{parent}[#{i}]" : parent
            buffer << "#{to_query(new_parent, val, options)}&"
          end
          buffer.chop
        when NilClass
          parent
        else
          encoded_value = Addressable::URI.encode_component(
            value.to_s.dup, Addressable::URI::CharacterClasses::UNRESERVED
          )
          "#{parent}=#{encoded_value}"
        end
      end