anchor.diff:  
   -record(anres, %% result of analysis
           {
  -          used_types = sets:new()
  +          used_types     :: set(),
  +          known_msg_size :: dict() %% MsgName() --> Size | undefined
           }).
   
   
  
positive.code:      end].
  
  possibly_format_mfield_encoder(MsgName, #field{type={msg,SubMsg}}=FieldDef,
                                 Defs) ->
      FnName = mk_field_encode_fn_name(MsgName, FieldDef),
      case is_msgsize_known_at_compiletime(SubMsg, Defs) of
          no ->
              [f("~p(Msg, Bin) ->~n", [FnName]),
               f("    SubBin = ~p(Msg, <<>>),~n", [mk_fn(e_msg_, SubMsg)]),
  
negative.code: possibly_format_mfield_encoder(_MsgName, _FieldDef, _Defs) ->
      [].
  
  is_msgsize_known_at_compiletime(MsgName, #anres{known_msg_size=MsgSizes}) ->
      case dict:fetch(MsgName, MsgSizes) of
          MsgSize when is_integer(MsgSize) ->
              {yes, MsgSize};
          undefined ->
              no
      end.
  
  format_repeated_field_encoder2(MsgName, #field{fnum=FNum, type=Type}=FDef) ->
  