anchor.diff:  	 %% modify
   	 add/2,
   	 add/3,
  -	 %% lookup 
  +	 %% lookup
   	 find/2,
   	 %% remove
   	 remove/2,
  
positive.code: 
  %%--------------------------------------------------------------------
  %% Function: to_norm(Params)
  %%           Params = list() of string(), each string is a "name=val" 
  %%                    pair or a single "name" value and may contain
  %%                    %HH hex escape codes - they are treated as case
  %%                    insensitive
  %% Descrip.: convert a uri-parameter list to a normalized (a non case 
  %%           sensitive form) form
  %% Returns : url_param record() | 
  %%           throw({error, duplicate_key}) if a "name" 
  %%           component in Params is duplicated 
  %%--------------------------------------------------------------------
  to_norm(Params) when is_list(Params) -> 
      F = fun(E) ->
  		case string:tokens(E, "=") of
  		    [Name, Val] -> 
  			{ sipurl:unescape_str(httpd_util:to_lower(Name)), 
  			  sipurl:unescape_str(httpd_util:to_lower(Val))
  			 };
  		    [Name] ->
  
negative.code: 
      %% test handling of hex encoding (with both upper and lower case hex values)
      io:format("test: to_norm/1 - 6~n"),
      NDB4 = key_val_db:new([{"foo=","bar"}, {"=bar", none}, {"a", "43"}]),
      #url_param{pairs = NDB4 } = to_norm(["foo%3d=bar", "%3Dbar", "a=43"]),
  
      %% test to_string_list
  