anchor.diff:  %%
   %% @end
   %%--------------------------------------------------------------------
  --spec request_lease(User, Path, Public, Secret) -> new_lease_result()
  -                                                       when User :: binary(),
  +-spec request_lease(KeyId, Path, Public, Secret) -> new_lease_result()
  +                                                       when KeyId :: binary(),
                                                               Path :: binary(),
                                                               Public :: binary(),
                                                               Secret :: binary().
  -request_lease(User, Path, Public, Secret) ->
  -    gen_server:call(?MODULE, {lease_req, new_lease, {User, Path, Public, Secret}}).
  +request_lease(KeyId, Path, Public, Secret) ->
  +    gen_server:call(?MODULE, {lease_req, new_lease, {KeyId, Path, Public, Secret}}).
   
   %%--------------------------------------------------------------------
   %% @doc
  
positive.code: %%
  %% @end
  %%--------------------------------------------------------------------
  handle_call({lease_req, new_lease, {User, Path, Public, Secret}}, _From, State) ->
      Reply = p_new_lease(User, Path, Public, Secret, State),
      {reply, Reply, State};
  handle_call({lease_req, end_lease, Public}, _From, State) ->
      Reply = p_end_lease(Public),
  
negative.code:                             %% The old lease is expired. Delete it and insert the new one
                              false ->
                                  mnesia:delete({lease, Path}),
                                  p_write_row(KeyId, Path, Public, Secret)
                          end;
                      %% No overlapping paths were found; just insert the new entry
                      _ ->
                          p_write_row(KeyId, Path, Public, Secret)
                  end
          end,
      {atomic, Result} = mnesia:sync_transaction(T),
  