anchor.diff:          false -> throw({error, invalid_percent_encoding,L})
       end;
   transcode_pct([_C|_Rest] = L, Acc, B, InEncoding, OutEncoding) ->
  -    OutBinary = convert_binary(B, InEncoding, OutEncoding),
  +    OutBinary = convert_to_binary(B, InEncoding, OutEncoding),
       PctEncUtf8 = percent_encode_segment(OutBinary),
  -    Out = lists:reverse(convert_list(PctEncUtf8, utf8)),
  +    Out = lists:reverse(convert_to_list(PctEncUtf8, utf8)),
       transcode(L, Out ++ Acc, [], InEncoding, OutEncoding);
   transcode_pct([], Acc, B, InEncoding, OutEncoding) ->
  -    OutBinary = convert_binary(B, InEncoding, OutEncoding),
  +    OutBinary = convert_to_binary(B, InEncoding, OutEncoding),
       PctEncUtf8 = percent_encode_segment(OutBinary),
  -    Out = convert_list(PctEncUtf8, utf8),
  +    Out = convert_to_list(PctEncUtf8, utf8),
       lists:reverse(Acc) ++ Out.
   
   
   %% Convert to binary
  -convert_binary(Binary, InEncoding, OutEncoding) ->
  +convert_to_binary(Binary, InEncoding, OutEncoding) ->
       case unicode:characters_to_binary(Binary, InEncoding, OutEncoding) of
           {error, _List, RestData} ->
               throw({error, invalid_input, RestData});
  
positive.code: remove_dot_segments(Path) when is_binary(Path) ->
      remove_dot_segments(Path, <<>>);
  remove_dot_segments(Path) when is_list(Path) ->
      B = convert_binary(Path, utf8, utf8),
      B1 = remove_dot_segments(B, <<>>),
      convert_list(B1, utf8).
  %%
  remove_dot_segments(<<>>, Output) ->
      Output;
  
negative.code: 
  
  %% Strip last char if it is in list
  %%
  %% This function is optimized for speed: parse/1 is about 10% faster than
  %% with an alternative implementation based on lists and sets.
  strip_last_char(<<>>, _) -> <<>>;
  strip_last_char(Input, [C0]) ->
      case binary:last(Input) of
  