anchor.diff:                                  {'call-id', <<"987asjd97y7atg">>},
                                   {cseq, <<"986759 INVITE">>},
                                   {route, <<"<sip:alice@atlanta.com>">>},
  -                                {route, <<"<sip:bob@biloxi.com>">>}]},
  +                                {route, <<"<sip:bob@biloxi.com>">>},
  +                                {timestamp, <<"100 0.2">>}]},
   
       % (default reason)
       Response =
  
positive.code:     Headers = [{Name, Value} || {Name, Value} <- ReqHeaders,
                                  (Name =:= 'from' orelse Name =:= 'call-id' orelse
                                   Name =:= cseq orelse Name =:= 'via' orelse
                                   Name =:= 'to')],
      #sip_response{status = Status,
                    reason = Reason,
                    headers = Headers}.
  
negative.code:     % custom reason
      Response2 = Response#sip_response{status = 201, reason = <<"Very Ok!">>},
  
      % 100 response
      Response3 =
          #sip_response{status = 100, reason = <<"Trying">>,
                       headers = [{via, <<"SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff">>},
                                  {via, <<"SIP/2.0/UDP bob.biloxi.com;branch=z9hG4bK776asdhds">>},
                                  {to, <<"Bob <sip:bob@biloxi.com>;tag=XyXULrhOnNkGqswu">>},
                                  {from, <<"Alice <sip:alice@atlanta.com>;tag=88sja8x">>},
                                  {'call-id', <<"987asjd97y7atg">>},
                                  {cseq, <<"986759 INVITE">>},
                                  {timestamp, <<"100 0.2">>}]},
  
      [% Check that all required headers are copied
       ?_assertEqual(Response, create_response(Request, 405)),
       ?_assertEqual(Response2, create_response(Request, 201, <<"Very Ok!">>)),
       ?_assertEqual(Response3, create_response(Request, 100))
       ].
  
  -spec create_ack_cancel_test_() -> list().
  