anchor.diff:  
   %% Recursively accumulate inherited dictionaries.
   dep([D|Rest], Acc) ->
  -    dep(opts(D), Rest, Acc);
  +    dep(dep(D), Rest, Acc);
   dep([], Acc) ->
       Acc.
   
  -dep([{inherits, Map} | T], Rest, Acc) ->
  -    [Dict, _] = filename:split(Map),
  +dep([{Dict, _} | T], Rest, Acc) ->
       dep(T, [Dict | Rest], [Dict | Acc]);
   dep([], Rest, Acc) ->
       dep(Rest, Acc).
   
  -make(Path) ->
  +make(Path, Dict0)
  +  when is_atom(Dict0) ->
  +    make(Path, atom_to_list(Dict0));
  +
  +make(Path, Dict0) ->
       Dict = filename:rootname(filename:basename(Path)),
  -    {Name, Pre} = make_name(Dict),
  +    {Mod, Pre} = make_name(Dict),
  +    {"diameter_gen_base" ++ Suf = Mod0, _} = make_name(Dict0),
  +    Name = Mod ++ Suf,
       try
  -        ok = make(Path, [{name, Name},
  -                         {prefix, Pre},
  -                         inherits(rfc3588_base)
  -                         | opts(Dict)]),
  -        ok = compile(Name)
  +        ok = to_erl(Path, [{name, Name},
  +                           {prefix, Pre},
  +                           {inherits, "rfc3588_base/" ++ Mod0}
  +                           | [{inherits, D ++ "/" ++ M ++ Suf}
  +                              || {D,M} <- dep(Dict)]]),
  +        ok = to_beam(Name)
       catch
           throw: {_,_} = E ->
               E
       end.
   
  -make(File, Opts) ->
  +to_erl(File, Opts) ->
       case diameter_make:codec(File, Opts) of
           ok ->
               ok;
  
positive.code:             throw({compile, No})
      end.
  
  opts(Dict) ->
      case lists:keyfind(list_to_atom(Dict), 1, ?INHERITS) of
          {_, Is} ->
              lists:map(fun inherits/1, Is);
  
negative.code:             []
      end.
  
  inherits(Dict)
    when is_atom(Dict) ->
      inherits(atom_to_list(Dict));
  
  inherits(Dict) ->
      {Name, _} = make_name(Dict),
      {Dict, Name}.
  
  make_name(Dict) ->
      {R, [$_|N]} = lists:splitwith(fun(C) -> C /= $_ end, Dict),
      {string:join(["diameter_gen", N, R], "_"), "diameter_" ++ N}.
  
  %% ===========================================================================
  