 
   @doc """
   Shortcut to check if the message is a response.
+
+  ## Examples:
+
+      iex> resp = Sippet.Message.build_response 200
+      iex> resp |> Sippet.Message.response?
+      true
+
   """
   @spec response?(t) :: boolean
   def response?(%__MODULE__{start_line: %StatusLine{}} = _), do: true


  @doc """
  Deletes the first value of `header` in `message`.
  """
  @spec delete_header_front(t, header) :: t
  def delete_header_front(message, header) do

  This function is useful in case you want to compute the value to put under
  `header` only if `header` is not already present (e.g., the value is
  expensive to calculate or generally difficult to setup and teardown again).

  ## Examples:

      iex> request = Sippet.Message.build_request :invite, "sip:foo@bar.com"
      iex> request = Sippet.Message.put_new_lazy_header(request, :max_forwards,
      ...>   fn -> 70 end)
      iex> request |> Sippet.Message.put_new_lazy_header(:max_forwards,
      ...>   fn -> 1 end)
      %Sippet.Message{body: nil, headers: %{max_forwards: 70},
       start_line: %Sippet.Message.RequestLine{method: :invite,
        request_uri: %Sippet.URI{authority: "foo@bar.com", headers: nil,
         host: "bar.com", parameters: nil, port: 5060, scheme: "sip",
         userinfo: "foo"}, version: {2, 0}}, target: nil}

  """
  @spec put_new_lazy_header(t, header, (() -> value)) :: t
  def put_new_lazy_header(message, header, fun) when is_function(fun, 0) do
