anchor.diff:          _        -> format_dpacked_vi(MsgName, Field, Opts)
       end.
   
  -format_dpacked_nonvi(MsgName, #field{name=FName}, BitLen, BitTypes) ->
  +format_dpacked_nonvi(MsgName, #field{name=FName}, BitLen, BitTypes)     ->
       [gpb_codegen:format_fn(
          mk_fn(d_packed_field_, MsgName, FName),
  -       fun(<<Value:'<N>'/'<T>', Rest/binary>>, AccSeq) ->
  -               call_self(Rest, [Value | AccSeq]);
  -          (<<>>, AccSeq) ->
  +       fun(<<Value:'<N>'/'<T>', Rest/binary>>, Z1, Z2, AccSeq) ->
  +               call_self(Rest, Z1, Z2, [Value | AccSeq]);
  +          (<<>>, _, _, AccSeq) ->
                  AccSeq
          end,
          [replace_term('<N>', BitLen),
  
positive.code:      %% skip_64_<MsgName>/2,4
       [[gpb_codegen:format_fn(
           mk_fn(skip_, NumBits, MsgName),
           fun(<<_:'<NumBits>', Rest/binary>>, '<Fill>', '<Params>') ->
                   '<call-read-field>'(Rest, '<Zeros>', '<Params>')
           end,
           [replace_term('<call-read-field>', ReadFieldFnName),
            replace_term('<NumBits>', NumBits),
            splice_trees('<Fill>', Fill),
            splice_trees('<Zeros>', Zeros),
            splice_trees('<Params>', Params)]),
         "\n\n"]
        || NumBits <- [32, 64]]].
  
negative.code:         pass_as_record -> [?expr(Msg)]
      end.
  
  decoder_field_calls(Bindings, MsgName, []=_MsgDef, _AnRes) ->
      Key = fetch_binding('<Key>', Bindings),
      WiretypeExpr = ?expr('<Key>' band 7, [replace_tree('<Key>', Key)]),
      Bindings1 = add_binding({'<wiretype-expr>', WiretypeExpr}, Bindings),
      decoder_skip_calls(Bindings1, MsgName);
  decoder_field_calls(Bindings, MsgName, MsgDef, AnRes) ->
      SkipCalls = decoder_field_calls(Bindings, MsgName, [], AnRes),
      FieldClauses = decoder_field_clauses(Bindings, MsgName, MsgDef),
      ?expr(
         case '<Key>' of
             '<field-clauses>' ->
  