anchor.diff:  -export([exists/1]).
   -export([is_enabled/1]).
   -export([is_allowed/2]).
  +-export([are_params_valid/2]).
   -export([allows_same_state/1]).
   -export([get_credential_limit/1]).
   -export([get_queue/1]).
  
positive.code:                          } | ParamSet]}
          end,
      {Result, NewParamSet };
  validate_call_parameter(Key, {_, _},  _N, _D, _T, Param, Id, ParamSet) ->
      EMsg = "service ~p: key ~p of parameter contains spaces: ~p",
      lager:error(EMsg, [Id, Key, Param]),
      {false, ParamSet};
  validate_call_parameter(_Key,  _,  _N, _D, _T, Param, Id, ParamSet) ->
      EMsg = "service ~p: bad request parameter values ~p (not strings)",
      lager:error(EMsg, [Id, Param]),
      {false, ParamSet}.
  
negative.code:                description := Desc,
                 type:= Type} = Param,
              SpaceMatch = binary:match(Key, <<" ">>),
              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, 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, Keys, false)
      end;
  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, 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),
  