anchor.diff:  %% -- encoders -----------------------------------------------------
   
   analyze_defs(Defs) ->
  -    UsedTypes = find_used_types(Defs),
  -    #anres{used_types      = UsedTypes
  -          }.
  +    #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) ->
  
positive.code: is_msg_type({msg,_}) -> true;
  is_msg_type(_)       -> false.
  
  format_field_encoder(MsgName, #field{occurrence=Occurrence}=FieldDef, Defs) ->
      [possibly_format_mfield_encoder(MsgName,
                                      FieldDef#field{occurrence=required},
                                      Defs),
       case {Occurrence, is_packed(FieldDef)} of
           {repeated, false} -> format_repeated_field_encoder2(MsgName, FieldDef);
           {repeated, true}  -> format_packed_field_encoder2(MsgName, FieldDef);
  
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) ->
  