anchor.diff:  %% @doc Return a uppercase string for the input
   -spec to_upper(string()|binary()|atom()) -> binary().
   to_upper(B) when is_binary(B) ->
  -	to_upper(B,<<>>);
  +    to_upper(B,<<>>);
   to_upper(undefined) ->
  -	<<>>;
  +    <<>>;
   to_upper(A) when is_atom(A) ->
       to_upper(z_convert:to_binary(A));
   to_upper(L) when is_list(L) ->
       to_upper(iolist_to_binary(L), <<>>).
   
   to_upper(<<>>, Acc) -> 
  -	Acc;
  +    Acc;
   to_upper(<<H,T/binary>>, Acc) when H >= $a andalso H =< $z ->
  -	H1 = H - 32,
  -	to_upper(T,<<Acc/binary,H1>>); 
  +    H1 = H - 32,
  +    to_upper(T,<<Acc/binary,H1>>); 
   to_upper(<<H,T/binary>>, Acc) when H < 128 ->
  -	to_upper(T,<<Acc/binary,H>>); 
  +    to_upper(T,<<Acc/binary,H>>); 
   to_upper(<<"å"/utf8,T/binary>>, Acc) -> to_upper(T, <<Acc/binary,195,133>>);
   to_upper(<<"ä"/utf8,T/binary>>, Acc) -> to_upper(T, <<Acc/binary,195,132>>);
   to_upper(<<"á"/utf8,T/binary>>, Acc) -> to_upper(T, <<Acc/binary,195,129>>);
  
positive.code:     trim_left_func(S, fun(C) -> C == Char end).
  
  
  trim_left_func(<<Char, Rest/binary>> = Bin, F) ->
      case F(Char) of
          true -> trim_left_func(Rest, F);
          false -> Bin
  
negative.code: 
  %% @doc Split the binary into lines. Line separators can be \r, \n or \r\n.
  split_lines(B) when is_binary(B) ->
      split_lines(B, <<>>, []).
      
      split_lines(<<>>, Line, Acc) ->
          lists:reverse([Line|Acc]);
      split_lines(<<13,10,Rest/binary>>, Line, Acc) ->
          split_lines(Rest, <<>>, [Line|Acc]);
      split_lines(<<13,Rest/binary>>, Line, Acc) ->
          split_lines(Rest, <<>>, [Line|Acc]);
      split_lines(<<10,Rest/binary>>, Line, Acc) ->
          split_lines(Rest, <<>>, [Line|Acc]);
      split_lines(<<C, Rest/binary>>, Line, Acc) ->
          split_lines(Rest, <<Line/binary, C>>, Acc).
  
  
  %% @doc Escape special characters for ical RFC2445 elements
  escape_ical(L) when is_list(L) ->
      escape_ical(iolist_to_binary(L));
  escape_ical(B) when is_binary(B) ->
      escape_ical(B, <<>>, 0);
  escape_ical(A) when is_atom(A) ->
      escape_ical(atom_to_list(A)).
  
      escape_ical(<<>>, Acc, _N) -> Acc;
      escape_ical(B, Acc, N) when N >= 70 -> escape_ical(B, <<Acc/binary, 13, 10, 32>>, 0);
      escape_ical(<<13, 10, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $n>>, N+2);
      escape_ical(<<10, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $n>>, N+2);
      escape_ical(<<9, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, 32>>, N+1);
      escape_ical(<<$", Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $">>, N+2);
      escape_ical(<<$,, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $,>>, N+2);
      escape_ical(<<$:, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $", $:, $">>, N+3);
      escape_ical(<<$;, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $;>>, N+2);
      escape_ical(<<$\\, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, $\\, $\\>>, N+2);
      escape_ical(<<C, Rest/binary>>, Acc, N) -> escape_ical(Rest, <<Acc/binary, C>>, N+1).
  
  %% @doc Return true if Start is a prefix of Word
  %% @spec starts_with(String, String) -> bool()
  