anchor.diff:          pass_as_record -> [?expr(Msg)]
       end.
   
  -decoder_field_calls(Bindings, MsgName, []=_MsgDef, AnRes) ->
  +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, AnRes);
  +    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, AnRes),
  +    FieldClauses = decoder_field_clauses(Bindings, MsgName, MsgDef),
       ?expr(
          case '<Key>' of
              '<field-clauses>' ->
  
positive.code:     end.
  
  format_packed_field_decoder(MsgName, FieldDef, AnRes, Opts) ->
      #field{name=FName, rnum=RNum, opts=FOpts} = FieldDef,
      FieldDefAsNonpacked = FieldDef#field{opts = FOpts -- [packed]},
      Zeros = compute_decoder_call_fill(FieldDefAsNonpacked, no_fill),
      Params = decoder_params(MsgName, AnRes),
      Param = case get_field_pass(MsgName, AnRes) of
                  pass_as_params ->
  
negative.code:          Selector = (FNum bsl 3) bor Wiretype,
           gpb_codegen:case_clause(
             case x of
                 '<selector>' -> '<call>'('<Rest>', 0, 0, '<Params>')
             end,
             [replace_term('<selector>', Selector),
              replace_term('<call>', mk_fn(d_field_, MsgName, FName)),
              replace_tree('<Rest>', RestExpr),
              splice_trees('<Params>', Params)])
       end
       || #field{fnum=FNum, type=Type, name=FName}=FieldDef <- MsgDef].
  
  decoder_finalize_result(Params, MsgName, MsgDef, AnRes) ->
      case get_field_pass(MsgName, AnRes) of
  