anchor.diff:      SampleMessage = #sip_message{kind = SampleRequest,
                                    headers = [{'content-length', <<"5">>}],
                                    body = <<"Hello">>},
  +    SampleResponse = #sip_response{reason = <<"Moved Permanently">>, status = 301},
  +    SampleResponseMessage = #sip_message{kind = SampleResponse,
  +                                         headers = [{'content-length', <<"5">>}],
  +                                         body = <<"Hello">>},
       [
        % Parse the whole body
        ?_assertEqual({ok, SampleMessage},
                      parse_datagram(<<"INVITE sip:urn:service:test SIP/2.0\r\nContent-Length: 5\r\n\r\nHello">>)),
        ?_assertEqual({ok, SampleMessage#sip_message{headers = [{<<"x-custom">>, <<"Nothing">>}, {'content-length', <<"5">>}]}},
                      parse_datagram(<<"INVITE sip:urn:service:test SIP/2.0\r\nX-Custom: Nothing\r\nContent-Length: 5\r\n\r\nHello!!!">>)),
  +     ?_assertEqual({ok, SampleResponseMessage},
  +                   parse_datagram(<<"SIP/2.0 301 Moved Permanently\r\nContent-Length: 5\r\n\r\nHello">>)),
   
        % Message too small
        ?_assertEqual({error, content_too_small,
  
positive.code:         {branch, Branch} -> {ok, Branch};
          false -> {error, not_found}
      end.
  
  %% @doc
  %% Retrieve top value of given header. Accepts either full 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
  