   with the updated values under `header`.
   """
   @spec get_and_update_header_front(t, header,
-            (value -> {get, value} | :pop)) ::
-                {get, t} when get: value
+            (multiple_value -> {get, multiple_value} | :pop)) ::
+                {get, t} when get: multiple_value
   def get_and_update_header_front(message, header, fun)
       when is_function(fun, 1) do
     {get, new_headers} = Map.get_and_update(message.headers, header,

  If the `header` does not exist, returns `:error`. If the `header` exists but
  it is an empty list, returns `{:ok, nil}`.
  """
  @spec fetch_header_front(t, header) :: {:ok, value} | :error
  def fetch_header_front(message, header) do
    case fetch_header(message, header) do
      {:ok, values} ->

  If the parameter `value` is `nil`, then the empty list will be appended to
  the `header`.
  """
  @spec put_header_back(t, header, multiple_value) :: t
  def put_header_back(message, header, value) do
    existing = get_header(message, header, [])

