anchor.diff:  
   params_return({ok, Method, Params, _}, []) ->
       {ok, Method, Params};
  +params_return({ok, Method, Params, TypeSpec}, [{params_name_as, atom}|T]) ->
  +    params_return({ok, Method, [{binary_to_atom(K, utf8), V} || {K, V} <- Params], TypeSpec}, T);
   params_return({ok, Method, Params, TypeSpec}, [{methods_as, atom}|T]) ->
  -    params_return({ok, binary_to_atom(Method, utf8), [{binary_to_atom(K, utf8), V} || {K, V} <- Params], TypeSpec}, T);
  +    params_return({ok, binary_to_atom(Method, utf8), Params, TypeSpec}, T);
   params_return({ok, Method, Params, {_, _, Spec} = TypeSpec}, [{params_as, list}|T]) ->
       #rpc{input = Input} = lists:keyfind(m2b(Method), #rpc.name, Spec),
       #object{fields = Fields} = Input,
  
positive.code:     TooMany andalso throw({invalid, "superfluous parameters"}),
      lists:reverse(Proplist).
  
  strip_keys([{_K, V} | Proplists], [_ | Defs], Acc) ->
      strip_keys(Proplists, Defs, [V | Acc]);
  strip_keys([], [#field{opts = Opts} | Defs], Acc) ->
      strip_keys([], Defs, [proplists:get_value(default, Opts) | Acc]);
  strip_keys([], [#array{opts = Opts} | Defs], Acc) ->
      strip_keys([], Defs, [proplists:get_value(default, Opts) | Acc]);
  strip_keys([], [], Acc) ->
      lists:reverse(Acc).
  
  zip([], [], Result) ->
      Result;
  
negative.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 = atom_to_binary(Name, utf8),
             description = Desc,
             type = {<<"any">>,[]},
             mandatory = not Optional,
  