anchor.diff:    true = ets:delete(?MODULE),
     ok.
   
  -handle_call({try_lock, Keys, Timeout}, {Pid, _Tag}
  +handle_call({try_lock, Keys, Timeout}, {Pid, Tag}
              , #s{ monitors = M0
                  , try_lock = TryLock0} = S) ->
     case lists:keyfind(Pid, 1, M0) of
  
positive.code:       %% A process may only have one monitored lock (for now).
        {reply, false, S};
      false ->
        case try_lock_and_monitor_timeout(Keys, Pid, M0, TryLock0, Timeout) of
          {true, M, TryLock} ->
            {reply, true, S#s{ monitors = M
                             , try_lock = TryLock}};
  
negative.code: 
  handle_info(tick, #s{ try_lock = TryLock0
                      , monitors = M0} = S) ->
    case lists:foldl(fun({Keys, Pid, Tag, Ticks0}, {TryLock1, M1}) ->
                         case try_lock_and_monitor(Keys, Pid, M1) of
                           {true, M2} ->
                             gen_server:reply({Pid, Tag}, true),
                             {TryLock1, M2};
                           {false, M2} ->
                             case Ticks0 - 1 of
                               Ticks when Ticks > 0 ->
                                 {[{Keys, Pid, Tag, Ticks} | TryLock1], M2};
                               _Ticks ->
                                 gen_server:reply({Pid, Tag}, false),
                                 {TryLock1, M2}
                             end
                         end
  