anchor.diff:  %%      would the caller crash.
   -spec try_lock([e0:key()], non_neg_integer()) -> boolean().
   try_lock(Keys, Timeout) when is_list(Keys), is_integer(Timeout), Timeout >= 0 ->
  -  gen_server:call(?MODULE, {try_lock, Keys, Timeout}, infinity).
  +  gen_server:call(?MODULE, {try_lock, normalize_keys(Keys), Timeout}, infinity).
   
   %% @doc releases a lock.
   -spec release_lock([e0:key()]) -> ok.
   release_lock(Keys) when is_list(Keys) ->
  -  gen_server:cast(?MODULE, {release_lock, Keys}),
  -  release_lock_int(Keys).
  +  gen_server:cast(?MODULE, {release_lock, normalize_keys(Keys), self()}),
  +  release_lock_int(normalize_keys(Keys)).
   
   %%%_* Gen server ==============================================================
   -record(s, {try_lock, monitors}).
  
positive.code: 
  %%%_* Internal ================================================================
  
  tick_period() ->
    %% In milliseconds.
    100.
  
negative.code: %%      guaranteed to be released.
  -spec try_lock([e0:key()]) -> boolean().
  try_lock(Keys) when is_list(Keys) ->
    do_try_lock(normalize_keys(Keys), self()).
  
  %% @doc Tries to grab a lock via the gen_server.
  %%      Tries to grab the lock at least Timeout milliseconds.
  