anchor.diff:  
   -define(SERVER, ?MODULE).
   
  --record(lease, { path   :: binary()   % subpath which is locked
  -               , key_id   :: binary()   % user identifier
  -               , public :: binary()   % public string used for token generation
  -               , secret :: binary()   % secret used for token generation
  -               , time   :: integer()  % timestamp (time when lease acquired)
  +-record(lease, { path   :: {binary(), binary()}  % repository with subpath which is locked
  +               , key_id :: binary()  % user identifier
  +               , public :: binary()  % public string used for token generation
  +               , secret :: binary()  % secret used for token generation
  +               , time   :: integer() % timestamp (time when lease acquired)
                  }).
   -type lease() :: #lease{}.
   
  
positive.code: p_new_lease(KeyId, Path, Public, Secret, _State) ->
      {ok, MaxLeaseTime} = application:get_env(cvmfs_gateway, max_lease_time),
  
      %% Match statement that selects all rows with a given repo,
      %% returning a list of {Path, Time} pairs
      MS = ets:fun2ms(fun(#lease{path = P} = Lease) when P =:= Path ->
                              Lease
                      end),
  
      AreOverlapping = fun(#lease{path = P}) ->
                               cvmfs_path_util:are_overlapping(P, Path)
                       end,
  
      T = fun() ->
  
negative.code:                 %% We filter out entries which don't overlap with Path
                  case lists:filter(AreOverlapping, mnesia:select(lease, MS)) of
                      %% An everlapping path was found
                      [#lease{path = ConflictingPath, time = Time} | _] ->
                          RemainingTime = MaxLeaseTime - (CurrentTime - Time),
                          case RemainingTime > 0 of
                              %% The old lease is still valid, return busy message
  