anchor.diff:       ?_assertEqual(true, is_response(Response)),
        ?_assertEqual(true, is_provisional_response(ProvResponse)),
        ?_assertEqual(false, is_provisional_response(Response)),
  +     ?_assertEqual(true, is_redirect_response(RedResponse)),
  +     ?_assertEqual(false, is_redirect_response(Response)),
        ?_assertEqual(<<"INVITE sip:urn:service:test SIP/2.0\r\nContent-Length: 5\r\nx-custom: Nothing\r\n\r\nHello">>, to_binary(Request)),
        ?_assertEqual(<<"SIP/2.0 200 Ok\r\nContent-Length: 5\r\n\r\nHello">>, to_binary(Response))
       ].
  
positive.code: -spec is_provisional_response(#sip_message{}) -> boolean().
  is_provisional_response(#sip_message{kind = #sip_response{status = Status}}) ->
      Status >= 100 andalso Status =< 199.
  
  %% @doc Retrieve method of SIP message
  %%
  
negative.code: %% Exports
  %%-----------------------------------------------------------------
  -export([is_request/1, is_response/1, to_binary/1]).
  -export([is_provisional_response/1, is_redirect_response/1, method/1]).
  -export([parse_stream/2, parse_datagram/1, parse_all_headers/1, sort_headers/1]).
  -export([create_ack/2, create_response/3]).
  -export([validate_request/1]).
  -export([update_top_header/3, replace_top_header/3]).
  -export([top_header/2, top_via_branch/1, foldl_headers/4]).
  
  %%-----------------------------------------------------------------
  %% Macros
  