anchor.diff:  build_rpc_opts(#rpc_method{params_as = list}) ->
       [{methods_as, atom},{params_as, list}];
   build_rpc_opts(_) ->
  -    [{methods_as, atom}].
  +    [{methods_as, atom},{params_name_as, atom}].
   
   build_rpc_typespec(Mod, M = #rpc_method{name = Name, description = Desc}) ->
       Fields = case cb_apply(Mod, param_info, [Name]) of
  
positive.code: build_fields_spec(P = #rpc_param{type = {enum, Enums}}) ->
      build_field(P, #enumeration{enum = Enums});
  build_fields_spec(_P = #rpc_param{name = Name, optional = Optional, description = Desc, type = list, default = Default}) ->
      #array{name = Name,
             description = Desc,
             type = {<<"any">>,[]},
             mandatory = not Optional,
  
negative.code:     TooMany andalso throw({invalid, "superfluous parameters"}),
      lists:reverse(Proplist).
  
  strip_keys([{K, V} | Proplists], [#field{name = K} | Defs], Acc) ->
      strip_keys(Proplists, Defs, [V | Acc]);
  strip_keys([{K, V} | Proplists], [#array{name = K} | Defs], Acc) ->
      strip_keys(Proplists, Defs, [V | Acc]);
  strip_keys(Args, [#field{opts = Opts} | Defs], Acc) ->
      strip_keys(tail(Args), Defs, [proplists:get_value(default, Opts) | Acc]);
  strip_keys(Args, [#array{opts = Opts} | Defs], Acc) ->
      strip_keys(tail(Args), Defs, [proplists:get_value(default, Opts) | Acc]);
  strip_keys([], [], Acc) ->
      lists:reverse(Acc).
  
  tail([_ | V]) -> V;
  tail([]) -> [].
  
  zip([], [], Result) ->
      Result;
  