anchor.diff:  to_proplist(Value)                       ->
     Value.
   
  -substitute(Str, [])         -> Str;
  -substitute(Str, [{K, V}|T]) ->
  -  substitute(re:replace(Str, ?SUB_BEGIN_TAG ++ to_list(K) ++ ?SUB_END_TAG,
  -                        to_list(V), [{return, binary}, global]), T).
  +substitute(Bin, [])         -> Bin;
  +substitute(Bin, [{K, V}|T]) -> substitute(substitute(Bin, K, V), T).
  +
  +substitute(Bin, K, V) ->
  +  re:replace(Bin, ?SUB_BEGIN_TAG ++ tulib_lists:to_list(K) ++ ?SUB_END_TAG,
  +             tulib_lists:to_list(V), [{return, binary}, global]).
   
   %% Replace "extract" tags with actual values
   replace_variables(Str) when is_list(Str) -> replace_variables(Str, []);
  
positive.code: 
  %% Transform simple list to proplist with keys named Name1, Name2 etc.
  enumerate(L, Name) ->
    Keys = [to_list(Name) ++ integer_to_list(N) || N <- lists:seq(1, length(L))],
    lists:zip(Keys, L).
  
  %% Transform response record to proplist for validation.
  
negative.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% @doc Klarna API Testing Tool.
  %%%
  %%% Use for shooting requests against any kind of http interface
  %%% (e.g. json, xml) and verifying the response.
  