anchor.diff:  via_is_equal(A, B, []) when is_record(A, via), is_record(B, via) ->
       true.
   
  +%%--------------------------------------------------------------------
  +%% Function: is_supported(Extension, Header)
  +%%           Extension = string()
  +%%           Header    = keylist record()
  +%% Descrip.: Check if Extension appears in a Supported: header.
  +%% Returns : true | false
  +%%--------------------------------------------------------------------
  +is_supported(Extension, Header) when is_list(Extension), is_record(Header, keylist) ->
  +    Supported = keylist:fetch('supported', Header),
  +    lists:member(Extension, Supported).
  +
  +%%--------------------------------------------------------------------
  +%% Function: is_required(Extension, Header)
  +%%           Extension = string()
  +%%           Header    = keylist record()
  +%% Descrip.: Check if Extension appears in a Required: header.
  +%% Returns : true | false
  +%%--------------------------------------------------------------------
  +is_required(Extension, Header) when is_list(Extension), is_record(Header, keylist) ->
  +    Supported = keylist:fetch('require', Header),
  +    lists:member(Extension, Supported).
   
   %%====================================================================
   %% Behaviour functions
  
positive.code: 
      %% test httparg(String)
      %%--------------------------------------------------------------------
      ["bar","baz=true","foo"] = dict_to_param( httparg("foo&bar&baz=true") ),
  
      ok.
  
negative.code: %% Returns : Branch = string() | none
  %%--------------------------------------------------------------------
  get_via_branch(TopVia) when is_record(TopVia, via) ->
      %% XXX lowercase result since branches are to be compared case insensitively?
      %% http://bugs.sipit.net/show_bug.cgi?id=661
      Branch = get_via_branch_full(TopVia),
      remove_loop_cookie(Branch).
  
  