anchor.diff:                 description := Desc,
                  type:= Type} = Param,
               SpaceMatch = binary:match(Key, <<" ">>),
  -            {Result, NewParamSet}=validate_call_parameter(Key, SpaceMatch, Name,
  +            KeyExists = lists:member(Key, Keys),
  +            {Result, NewParamSet}=validate_call_parameter(Key, SpaceMatch,
  +                                                          KeyExists, Name,
                                                             Desc, Type, Param, Id,
                                                             ParamSet),
  -            validate_call_parameter_set(T, Info, NewParamSet,
  +            validate_call_parameter_set(T, Info, NewParamSet, Keys,
                                           Current and Result);
           _ ->
               EMsg = "service ~p: request parameter ~p is missing keys ~p",
               lager:error(EMsg, [Id, Param, MissingKeys]),
  -            validate_call_parameter_set(T, Info, ParamSet, false)
  +            validate_call_parameter_set(T, Info, ParamSet, Keys, false)
       end;
  -validate_call_parameter_set([H | T], #{id := Id} = Info, ParamSet, _Current) ->
  +validate_call_parameter_set([H | T], #{id := Id} = Info, ParamSet,
  +                            Keys, _Current) ->
       EMsg = "service ~p: bad request parameter ~p (from plugin)",
       lager:error(EMsg, [Id, H]),
  -    validate_call_parameter_set(T, Info, ParamSet, false).
  -
  -
  -validate_call_parameter(Key, nomatch, Name, Desc, Type, Param, Id, ParamSet)
  -  when is_binary(Key), is_binary(Name), is_binary(Desc) ->
  +    validate_call_parameter_set(T, Info, ParamSet, Keys, false).
  +
  +
  +validate_call_parameter(Key, nomatch, false, Name, Desc, Type, Param, Id,
  +                        ParamSet) when is_binary(Key), is_binary(Name),
  +                                       is_binary(Desc) ->
       EMsg = "service ~p: parameter ~p: bad type ~p (from plugin)",
       WMsg = "service ~p: parameter ~p:bad mandatory value ~p, using false",
       Mdtory = maps:get(mandatory, Param, false),
  
positive.code: -export([exists/1]).
  -export([is_enabled/1]).
  -export([is_allowed/2]).
  -export([allows_same_state/1]).
  -export([get_credential_limit/1]).
  -export([get_queue/1]).
  
negative.code: 
  
  validate_call_parameter_set(Set, Info) ->
      validate_call_parameter_set(Set, Info, [], [], true).
  validate_call_parameter_set([], #{params := Params} = Info, ParamSet,
                              _Keys, Result)->
      NewParams = [ParamSet | Params ],
      NewInfo = maps:put(params, NewParams, Info),
      {Result, NewInfo};
  validate_call_parameter_set([Param | T], #{id := Id} = Info, ParamSet, Keys,
                              Current) when is_map(Param) ->
      RequiredKeys = [description, name, key, type],
      MissingKeys = RequiredKeys -- maps:keys(Param),
      case MissingKeys of
  