anchor.diff:  
   all() ->
       [format,
  -     replace].
  +     replace,
  +     generate].
   
   %% Error handling testcases will make an erroneous dictionary out of
   %% the base dictionary and check that the expected error results.
  
positive.code: %% ===========================================================================
  %% testcases
  
  %% Ensure that parse o format is the identity map.
  format(Config) ->
      Bin = proplists:get_value(base, Config),
      [] = ?util:run([{?MODULE, [format, M, Bin]}
  
negative.code: re({RE, Repl}, Bin) ->
      re:replace(Bin, RE, Repl, [multiline]).
  
  %% generate/1
  %%
  %% Ensure success when generating code and compiling.
  
  generate() ->
      [{timetrap, {seconds, length(?REPLACE)}}].
  
  generate(Config) ->
      Bin = proplists:get_value(base, Config),
      Rs  = lists:zip(?REPLACE, lists:seq(1, length(?REPLACE))),
      [] = ?util:run([{?MODULE, [generate, M, Bin, N, T]}
                      || {E,N} <- Rs,
                         {ok, M} <- [norm(E)],
                         T <- [erl, hrl, spec]]).
  
  generate(Mods, Bin, N, Mode) ->
      B = modify(Bin, Mods ++ [{"@name .*", "@name dict" ++ ?L(N)}]),
      {ok, Dict} = diameter_dict_util:parse(B, []),
      File = "dict" ++ integer_to_list(N),
      {_, ok} = {Dict, diameter_codegen:from_dict("dict",
                                                  Dict,
                                                  [{name, File},
                                                   {prefix, "base"},
                                                   debug],
                                                  Mode)},
      Mode == erl
          andalso ({ok, _} = compile:file(File ++ ".erl", [return_errors])).
  
  %% ===========================================================================
  
  modify(Bin, Mods) ->
  