anchor.diff:              {E, Reason}
       end.
   
  +%% Extract filename/forms pairs for included forms.
  +
   files([{attribute, _, file, {Path, _}} | T], Acc) ->
       {Body, Rest} = lists:splitwith(fun({attribute, _, file, _}) -> false;
                                         (_) -> true
  
positive.code:     [?VERSION | ParseD];
  
  gen(forms, ParseD, Mod) ->
      pp(erl_forms(Mod, ParseD));
  
  gen(hrl, ParseD, Mod) ->
      gen_hrl(Mod, ParseD);
  
negative.code: 
  pp(Forms, {error, Reason}) ->
      erlang:error({forms, Reason, Forms}).
  
  %% Replace literal diameter_gen_relay atoms in the extracted forms.
  %% ?MODULE for example.
  
  remod(Mod, L)
    when is_list(L) ->
      [remod(Mod, T) || T <- L];
  
  remod(Mod, {atom, _, diameter_gen_relay} = T) ->
      setelement(3, T, Mod);
  
  remod(Mod, T)
    when is_tuple(T) ->
      list_to_tuple(remod(Mod, tuple_to_list(T)));
  
  remod(_, T) ->
      T.
  
  %% Replace include_lib by the corresponding forms.
  
  include({attribute, _, include_lib, Path}, Files) ->
      Inc = filename:basename(Path),
  