anchor.diff:  -include("nksip.hrl").
   -include("nksip_call.hrl").
   
  --export([method/1, header_uris/2, header_dates/2, header_integers/2]).
  --export([header_tokens/2]).
  --export([scheme/1, uri2ruri/1, aors/1, uris/1, ruris/1, vias/1, tokens/1, transport/1]).
  --export([integers/1, dates/1]).
  +-export([method/1, scheme/1, uri2ruri/1, aors/1, uris/1, ruris/1, vias/1]).
  +-export([tokens/1, integers/1, dates/1, transport/1]).
   -export([packet/3, raw_sipmsg/1]).
   
   -export_type([msg_class/0]).
  
positive.code:         cseq = CSeqInt,
          cseq_method = CSeqMethod,
          forwards = Forwards,
          routes = header_uris(<<"Route">>, Headers),
          contacts = header_uris(<<"Contact">>, Headers),
          headers = Headers1,
          content_type = ContentType,
          body = Body1,
  
negative.code:     #sipmsg{} | {error, term()}.
  
  get_sipmsg(Headers, Body, Proto) ->
      case uris(proplists:get_all_values(<<"From">>, Headers)) of
          [#uri{} = From] -> ok;
          _ -> From = throw({400, <<"Invalid From">>})
      end,
      case uris(proplists:get_all_values(<<"To">>, Headers)) of
          [#uri{} = To] -> ok;
          _ -> To = throw({400, <<"Invalid To">>})
      end,
  