anchor.diff:      V3 = macaroon_verifier:satisfy_general(V2, CheckPaths),
   
       macaroon_verifier:verify(V3, M, Secret).
  +
  +priv_delete_token(State, SessionToken) ->
  +    {ok, Macaroon} = macaroon:deserialize(SessionToken),
  +    TokenId = macaroon:identifier(Macaroon),
  +    maps:remove(TokenId, State).
  
positive.code: priv_end_session(_SessionToken) ->
      ok.
  
  -spec priv_submit_payload(User, SessionToken, Payload, State) ->
                                   {{ok, payload_added}} |
                                   {ok, payload_added, session_ended} |
                                   {error, Reason}
                                       when User :: binary(),
                                            SessionToken :: binary(),
                                            Payload :: binary(),
                                            State :: map(),
                                            Reason :: binary().
  priv_submit_payload(User, SessionToken, Payload, State) ->
      case priv_check_payload(User, SessionToken, Payload, State) of
          ok ->
              %% Acquire lease on the subpath and submit payload to GW
  
              %% If Final == true, request session end
              {ok, payload_added};
          {error, Reason} ->
              %% Payload is invalid, return with reason
              {error, Reason}
      end.
  
  -spec priv_generate_token(User, Path) -> {Token, Public, Secret}
  
negative.code:                                          State :: map().
  priv_check_payload(_User, _SessionToken, _Payload, State)
    when map_size(State) == 0 ->
      {error, invalid_token};
  priv_check_payload(User, SessionToken, _Payload, State) ->
      % Here we should perform all sanity checks on the request
  
  