   def merge(%URI{authority: nil}, _rel) do
     raise ArgumentError, "you must merge onto an absolute URI"
   end
+
   def merge(_base, %URI{scheme: rel_scheme} = rel) when rel_scheme != nil do
     %{rel | path: remove_dot_segments_from_path(rel.path)}
   end
+
   def merge(base, %URI{authority: authority} = rel) when authority != nil do
     %{rel | scheme: base.scheme, path: remove_dot_segments_from_path(rel.path)}
   end
+
   def merge(%URI{} = base, %URI{path: rel_path} = rel) when rel_path in ["", nil] do
     %{base | query: rel.query || base.query, fragment: rel.fragment}
   end
+
   def merge(%URI{} = base, %URI{} = rel) do
     new_path = merge_paths(base.path, rel.path)
     %{base | path: new_path, query: rel.query, fragment: rel.fragment}
   end
+
   def merge(base, rel) do
     merge(parse(base), parse(rel))
   end
 
-  defp merge_paths(nil, rel_path),
-    do: merge_paths("/", rel_path)
-  defp merge_paths(_, "/" <> _ = rel_path),
-    do: remove_dot_segments_from_path(rel_path)
+  defp merge_paths(nil, rel_path), do: merge_paths("/", rel_path)
+  defp merge_paths(_, "/" <> _ = rel_path), do: remove_dot_segments_from_path(rel_path)
+
   defp merge_paths(base_path, rel_path) do
     [_ | base_segments] = path_to_segments(base_path)
+
     path_to_segments(rel_path)
     |> Kernel.++(base_segments)
     |> remove_dot_segments([])

  """
  @spec char_unreserved?(char) :: boolean
  def char_unreserved?(char) when char in 0..0x10FFFF do
    char in ?0..?9 or
      char in ?a..?z or
      char in ?A..?Z or
      char in '~_-.'
  end

  @doc """

      [{"foo", "1"}, {"bar", "2"}]

  """
  @spec query_decoder(binary) :: Enumerable.t()
  def query_decoder(query) when is_binary(query) do
    Stream.unfold(query, &decode_next_query_pair/1)
  end
