anchor.diff:                                        address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, 0.2}]),
                                         address(<<>>, <<"sip:anonymous@example.com">>, [{param, <<"va lue">>}])])),
        ?_assertEqual(<<"*">>, format('contact', '*')),
  +     ?_assertEqual(<<"<sip:bob@biloxi.com>, <sip:alice@atlanta.com>">>,
  +                   format('contact', [address(<<>>, <<"sip:bob@biloxi.com">>, []),
  +                                      address(<<>>, <<"sip:alice@atlanta.com">>, [])])),
   
        % q-value
        ?_assertEqual(1.0, qvalue(address(<<"Alice">>, sip_uri:parse(<<"sip:alice@atlanta.com">>), []))),
  
positive.code:     Language = language(parse_language(LanguageBin), Params),
      parse_list('accept-language', Language, Rest);
  
  %% 20.4 Alert-Info
  %% ```
  %% Alert-Info   =  "Alert-Info" HCOLON alert-param *(COMMA alert-param)
  %% alert-param  =  LAQUOT absoluteURI RAQUOT *( SEMI generic-param )
  
negative.code:             % Section 20
              % If the URI is not enclosed in angle brackets, any semicolon-delimited
              % parameters are header-parameters, not URI parameters.
              % so, parse until comma (next header value), space character or semicolon
              Fun = fun (C) -> sip_binary:is_space_char(C) orelse C =:= ?SEMI orelse C =:= ?COMMA end,
  
              {URI, Params} = sip_binary:parse_until(Bin, Fun),
              {<<>>, URI, Params};
  