anchor.diff:           , Result
            ]).
   
  +substitute(null) ->
  +  null;
   substitute(Bin) ->
  -  FirstKey = ets:first(?MODULE),
  +  io:format("asdfasdfasdf !!! ~p~n", [ Bin ]),
  +  io:format("Ets info~p~n", [ets:info(?TABLE)]),
  +  % ets:foldl(fun() ->
  +  %           end, ),
  +  FirstKey = ets:first(?TABLE),
  +  io:format("asdfasdfasdf ~p~n", [ FirstKey ]),
     substitute(Bin, FirstKey).
   
   substitute(Bin, '$end_of_table') -> Bin;
   substitute(Bin0, K0) ->
  -  V = ets:lookup(?MODULE, K0),
  +  [{K0, V}] = ets:lookup(?TABLE, K0),
  +  io:format("LOOKUP0: ~p~n~p~n", [Bin0, K0]),
     K = ?RECALL_BEGIN_TAG ++ K0 ++ ?RECALL_END_TAG,
  +  io:format("LOOKUP1: ~p~n~p~n~p~n", [V, to_list(V), K]),
     Bin = re:replace(Bin0, K, to_list(V), [{return, binary}, global]),
  -  substitute(Bin, ets:next(?MODULE, K0)).
  +  io:format("LOOKUP2: ~p~n", [Bin]),
  +  substitute(Bin, ets:next(?TABLE, K0)).
   
   %%%_* Validation -------------------------------------------------------
   validate(E = #katt_response{}, A = #katt_response{}) ->
  
positive.code: %% Last argument is a key-value list of parameters.
  %% @end
  run(Scenario, Params, Vars) ->
    spawn_link(?MODULE, run, [self(), Scenario, Params, Vars]),
    receive {done, Result}    -> Result
    after   ?SCENARIO_TIMEOUT -> {error, timeout}
    end.
  
  %%%_* Internal export --------------------------------------------------
  %% @private
  
negative.code: is_json_body(_Hdrs, <<>>) -> false;
  is_json_body(Hdrs, _Body) ->
    ContentType = proplists:get_value("Content-Type", Hdrs, ""),
    case string:str(unicode:characters_to_list(ContentType), "json") of
      0 -> false;
      _ -> true
    end.
  