anchor.diff:              , Params
               ) ->
     Url1 = katt_util:from_utf8(substitute(katt_util:to_utf8(Url0))),
  -  io:format("url !!! ~p~n~p~n", [Url0, Url1]),
     Url = make_request_url(Params, Url1),
     Hdrs = [{K, katt_util:from_utf8(substitute(katt_util:to_utf8(V)))} || {K, V} <- Hdrs0],
     RawBody = substitute(RawBody0),
  
positive.code: %% Last argument is a key-value list of parameters.
  %% @end
  run(Scenario, Params, Vars) ->
    io:format("Creating KATT table! ~p~n", [ Scenario ]),
    ets:new(?TABLE, [named_table, public, ordered_set]),
    io:format("Inserting vars ~p~n", [ Vars ]),
    ets:insert(?TABLE, Vars),
    io:format("Spawning link~n", []),
    spawn_link(?MODULE, run, [self(), Scenario, Params, Vars]),
    Return = receive {done, Result}    -> Result
             after   ?SCENARIO_TIMEOUT -> {error, timeout}
             end,
    io:format("Deleting table ~p~n", [?TABLE]),
    ets:delete(?TABLE),
    Return.
  
  
negative.code: substitute(null) ->
    null;
  substitute(Bin) ->
    FirstKey = ets:first(?TABLE),
    substitute(Bin, FirstKey).
  
  substitute(Bin, '$end_of_table') -> Bin;
  substitute(Bin0, K0) ->
    [{K0, V}] = ets:lookup(?TABLE, K0),
    K = ?RECALL_BEGIN_TAG ++ K0 ++ ?RECALL_END_TAG,
    Bin = re:replace(Bin0, K, to_list(V), [{return, binary}, global]),
    substitute(Bin, ets:next(?TABLE, K0)).
  
  %%%_* Validation -------------------------------------------------------
  