anchor.diff:       end].
   
   possibly_format_mfield_encoder(MsgName, #field{type={msg,SubMsg}}=FieldDef,
  -                               Defs) ->
  +                               AnRes) ->
       FnName = mk_field_encode_fn_name(MsgName, FieldDef),
  -    case is_msgsize_known_at_compiletime(SubMsg, Defs) of
  +    case is_msgsize_known_at_compiletime(SubMsg, AnRes) of
           no ->
               [f("~p(Msg, Bin) ->~n", [FnName]),
                f("    SubBin = ~p(Msg, <<>>),~n", [mk_fn(e_msg_, SubMsg)]),
  
positive.code: 
  -record(anres, %% result of analysis
          {
            used_types = sets:new()
          }).
  
  
  
negative.code: %% -- encoders -----------------------------------------------------
  
  analyze_defs(Defs) ->
      #anres{used_types      = find_used_types(Defs),
             known_msg_size  = find_msgsizes_known_at_compile_time(Defs)}.
  
  find_used_types(Defs) ->
      fold_msg_fields(fun(_MsgName, #field{type=Type}, Acc) ->
  