# File lib/webmock/util/query_mapper.rb, line 123
      def fill_accumulator_for_subscript(accumulator, key, value)
        current_node = accumulator
        subkeys = key.split(/(?=\[\w)/)
        subkeys[0..-2].each do |subkey|
          node = subkey =~ /\[\]\z/ ? [] : {}
          subkey = subkey.gsub(/[\[\]]/, '')
          if current_node.is_a? Array
            container = current_node.find { |n| n.is_a?(Hash) && n.has_key?(subkey) }
            if container
              current_node = container[subkey]
            else
              current_node << {subkey => node}
              current_node = node
            end
          else
            current_node[subkey] = node unless current_node[subkey]
            current_node = current_node[subkey]
          end
        end
        last_key = subkeys.last
        array_value = !!(last_key =~ /\[\]$/)
        last_key = last_key.gsub(/[\[\]]/, '')
        if current_node.is_a? Array
          last_container = current_node.select { |n| n.is_a?(Hash) }.last
          if last_container && !last_container.has_key?(last_key)
            if array_value
              last_container[last_key] << value
            else
              last_container[last_key] = value
            end
          else
            if array_value
              current_node << {last_key => [value]}
            else
              current_node << {last_key => value}
            end
          end
        else
          if array_value
            current_node[last_key] = [] unless current_node[last_key]
            current_node[last_key] << value
          else
            current_node[last_key] = value
          end
        end
      end