anchor.diff:              end;
           {Top, <<>>} -> Top
       end;
  +
  +%% Allow  = "Allow" HCOLON [Method *(COMMA Method)]
  +parse('allow', Bin) ->
  +    {MethodBin, Bin2} = sip_binary:parse_token(Bin),
  +    Method = sip_binary:binary_to_existing_atom(sip_binary:to_upper(MethodBin)),
  +    case Bin2 of
  +        <<?COMMA, Bin3/binary>> ->
  +            % Parse the rest of the Allow
  +            % *(COMMA Method)
  +            [Method | parse('allow', Bin3)];
  +
  +        <<>> -> [Method]
  +    end;
  +
   %% Any other header, just return value as is
   parse(_Name, Value) ->
       Value.
  
positive.code:      ?_assertEqual([address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                      address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, <<"0.2">>}]),
                      address(<<>>, <<"sip:anonymous@example.com">>, [{param, <<"va lue">>}])],
                     parse('contact', <<"Bob <sip:bob@biloxi.com>;q=0.1,\"Alice\" <sip:alice@atlanta.com>;q=0.2, <sip:anonymous@example.com>;param=\"va lue\"">>)),
       ?_assertEqual('*', parse('contact', <<"*">>)),
  
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1">>,
                     format('contact', address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]))),
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1,\"Alice\" <sip:alice@atlanta.com>;q=0.2">>,
                     format('contact', [address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                                        address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, <<"0.2">>}])])),
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1,\"Alice\" <sip:alice@atlanta.com>;q=0.2,<sip:anonymous@example.com>;param=\"va lue\"">>,
                     format('contact', [address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                                        address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, 0.2}]),
                                        address(<<>>, <<"sip:anonymous@example.com">>, [{param, <<"va lue">>}])])),
  
negative.code:                    parse('via', <<"SIP/2.0/UDP 127.0.0.1:15060;param=value;flag,SIP/2.0/TCP pc33.atlanta.com;branch=z9hG4bK776asdhds,SIP/2.0/UDP pc22.atlanta.com;branch=z9hG4bK43nthoeu3">>)),
       ?_assertEqual(<<"SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds">>,
                     format('via', [via(udp, {"pc33.atlanta.com", undefined}, [{branch, <<"z9hG4bK776asdhds">>}])])),
       ?_assertEqual(<<"SIP/2.0/UDP 127.0.0.1:15060;param=value;flag, SIP/2.0/TCP pc33.atlanta.com:5060;branch=z9hG4bK776asdhds">>,
                     format('via', [via(udp, {{127, 0, 0, 1}, 15060}, [{param, <<"value">>}, flag]),
                                           via(tcp, "pc33.atlanta.com", [{branch, <<"z9hG4bK776asdhds">>}])])),
       ?_assertEqual(<<"SIP/2.0/UDP 127.0.0.1:15060;param=value;flag">>,
  