anchor.diff:          end,
       Steps =
           [ CheckParamPresence
  -        , ReadParamValues
           , ParseSigMethod
           , ParseCallbackURI
           , ConsArgs
  
positive.code: 
  -type common_sig_params() ::
      #common_sig_params{}.
  
  -record(given_parameters,
      { realm            :: hope_option:t(binary())
      , consumer_key     :: hope_option:t(binary())
      , signature        :: hope_option:t(binary())
      , signature_method :: hope_option:t(binary())
      , timestamp        :: hope_option:t(integer())
      , nonce            :: hope_option:t(binary())
      , callback         :: hope_option:t(binary())
      , version          :: hope_option:t(binary())
      }).
  
  
  %%=============================================================================
  
negative.code:                 , ?PARAM_NONCE
                  , ?PARAM_CALLBACK
                  ],
              ParamsOptional = [?PARAM_VERSION],
              ParamsSupported = ParamsRequired ++ ParamsOptional,
              ParamsGiven = [K || {K, _V} <- ParamPairsGiven],
              ParamsGivenUnique = lists:usort(ParamsGiven),
              ParamsDups = lists:usort(ParamsGiven -- ParamsGivenUnique),
              ParamsMissing =
                  [P || P <- ParamsRequired, not lists:member(P, ParamsGivenUnique)],
              ParamsUnsupported = ParamsGivenUnique -- ParamsSupported,
              case {ParamsDups, ParamsMissing, ParamsUnsupported}
              of  {[], [], []} ->
                      {ok, ok}
              ;   {_, _, _} ->
                      ErrorDups =
                          case ParamsDups
                          of  []    -> []
  