anchor.diff:  f(F, A) ->
       io_lib:format(F, A).
   
  +%% Rewrites for instance ['.','m1','.',m2] into 'm1.m2'
  +%% Example: {{msg,['.','m1','.',m2]}, [#field{type=['.','m1','.',m3]}]}
  +%% becomes: {{msg,'m1.m2'},           [#field{type='m1.m3'}]}
  +%%
  +%% Prerequisites:
   %% `Defs' is expected to be absolutified and flattened
   reformat_names(Defs) ->
       lists:map(fun({{msg,Name}, Fields}) ->
  
positive.code:               end,
                RPCs).
  
  %% `Defs' is expected to be flattened and may or may not be reformatted
  %% `Defs' is expected to be verified, to have no dangling references
  resolve_refs(Defs) ->
  
negative.code:       end,
        RPCs).
  
  %% For nested message definitions such as
  %% ```
  %%    message m1 {
  %%      required uint32 f1 = 1;
  %%      message m2 { ... }
  %%      enum e2 { ... }
  %%    };",
  %% '''
  %% the parser will produce a nested structure, such as:
  %% ```
  %%   [{{msg,M1},[#field{},
  %%               {{msg,M2}, [...]},
  %%               {{enum,E2}, [...]}]}]
  %% '''
  %% Flattenning means to lift the nested m2 and e2 definition to the top-level,
  %% so the above turns into:
  %% ```
  %%   [{{msg,M1},[#field{}]},
  %%    {{msg,M2}, [...]},
  %%    {{enum,E2}, [...]}]
  %% '''
  %%
  %% Prerequisites:
  %% `Defs' is expected to be absolutified
  flatten_defs(Defs) ->
      lists:reverse(
  