anchor.diff:  analyze_defs(Defs) ->
       #anres{used_types      = find_used_types(Defs),
              known_msg_size  = find_msgsizes_known_at_compile_time(Defs),
  -           msg_occurrences = find_msg_occurrences(Defs)}.
  +           msg_occurrences = find_msg_occurrences(Defs),
  +           fixlen_types    = find_fixlen_types(Defs),
  +           packed_fields   = find_packed_fields(Defs)}.
   
   find_used_types(Defs) ->
       fold_msg_fields(fun(_MsgName, #field{type=Type}, Acc) ->
  
positive.code:     case FieldDef of
          #field{occurrence=required, type={msg, _}} -> msgmerge;
          #field{occurrence=optional, type={msg, _}} -> msgmerge;
          #field{occurrence = required}              -> overwrite;
          #field{occurrence = optional}              -> overwrite;
          #field{occurrence = repeated}              -> seqadd
      end.
  
  
  
negative.code:             dict:store(MsgName, [Occurrence], D)
      end.
  
  find_fixlen_types(Defs) ->
      fold_msg_fields(
        fun(_, #field{type=Type, occurrence=Occ}=FieldDef, Acc) ->
                IsPacked = is_packed(FieldDef),
                FixlenTypeInfo = #ft{type       = Type,
                                     occurrence = Occ,
                                     is_packed  = IsPacked},
                case Type of
                    fixed32  -> sets:add_element(FixlenTypeInfo, Acc);
                    sfixed32 -> sets:add_element(FixlenTypeInfo, Acc);
                    float    -> sets:add_element(FixlenTypeInfo, Acc);
                    fixed64  -> sets:add_element(FixlenTypeInfo, Acc);
                    sfixed64 -> sets:add_element(FixlenTypeInfo, Acc);
                    double   -> sets:add_element(FixlenTypeInfo, Acc);
                    _        -> Acc
                end
        end,
        sets:new(),
        Defs).
  
  find_packed_fields(Defs) ->
      fold_msg_fields(fun(MsgName, #field{name=FName}=FieldDef, Acc) ->
                              case is_packed(FieldDef) of
                                  true  -> sets:add_element({MsgName,FName}, Acc);
                                  false -> Acc
                              end
                      end,
                      sets:new(),
                      Defs).
  
  fold_msg_fields(Fun, InitAcc, Defs) ->
      lists:foldl(fun({{msg, MsgName}, Fields}, Acc) ->
  