anchor.diff:      is_password(Str);
   is_password("+" ++ Str) ->
       is_password(Str);
  -is_password("$" ++ Str) ->
  +is_password("\$" ++ Str) ->
       is_password(Str);
   is_password("," ++ Str) ->
       is_password(Str);
   is_password([$%, C2, C3 | Str]) ->
  -	     is_escaped([$%, C2, C3]) andalso is_password(Str);
  -			 is_password([Char | Str]) ->
  -				is_unreserved(Char) andalso is_password(Str);
  -			 is_password(_) ->
  -				false.
  +    is_escaped([$%, C2, C3]) andalso is_password(Str);
  +is_password([Char | Str]) ->
  +    is_unreserved(Char) andalso is_password(Str);
  +is_password(_) ->
  +    false.
   
   %%--------------------------------------------------------------------
   %% Function: is_user(Str)
  
positive.code: 
      case is_bnf_compliant_url(User, Password, Host, Port, Parameters) of
  	true ->
  	    new([{proto, "sip"}, {user, User}, {pass, Password}, {host, Host},
  		 {port, Port}, {param, Parameterlist}]);
  	false ->
  	    {unparseable, URLStr}
      end.
  
  %% The parse functions are somewhat lax compared to the BNF specification so this
  
negative.code: 	    end
      end.
  
  %% checks name or value string in uri-parameter for illegal chars
  %% returns 'false' if any are found
  is_paramchar_str([]) -> true;
  is_paramchar_str([$% | Str]) ->
      [C1, C2 | R] = Str,
      is_escaped([$%, C1, C2]) andalso is_paramchar_str(R);
  is_paramchar_str([Char | Str]) ->
      (is_param_unreserved(Char) or is_unreserved(Char)) andalso is_paramchar_str(Str).
  