anchor.diff:      Op = {ix_read,IxKey, Pos},
       Lock = read,
       case can_lock(Tid, Lock, Oid, {no, bad_luck}) of
  -	yes ->
  -	    Reply = grant_lock(Tid, Op, Lock, Oid),
  +	{yes, Default} ->
  +	    Reply = grant_lock(Tid, Op, Lock, Oid, Default),
   	    reply(From, Reply);
  -	{no, Lucky} ->
  +	{{no, Lucky},_} ->
   	    C = #cyclic{op = Op, lock = Lock, oid = Oid, lucky = Lucky},
   	    ?dbg("Rejected ~p ~p ~p ~p ~n", [Tid, Oid, Lock, Lucky]),
   	    reply(From, {not_granted, C});
  -    	{queue, Lucky} ->
  +	{{queue, Lucky},_} ->
   	    ?dbg("Queued ~p ~p ~p ~p ~n", [Tid, Oid, Lock, Lucky]),
   	    %% Append to queue: Nice place for trace output
   	    ?ets_insert(mnesia_lock_queue,
  
positive.code: 		    end
  	    end
      end.
  
  rearrange_queue([{_Tid, {Tab, Key}, _} | Locks]) ->
      if
  
negative.code: 
  try_waiter(Oid, Op, SimpleOp, Lock, ReplyTo, Tid) ->
      case can_lock(Tid, Lock, Oid, {queue, bad_luck}) of
  	{yes, Default} ->
  	    %% Delete from queue: Nice place for trace output
  	    ?ets_match_delete(mnesia_lock_queue,
  			      #queue{oid=Oid, tid = Tid, op = Op,
  				     pid = ReplyTo, lucky = '_'}),
  	    Reply = grant_lock(Tid, SimpleOp, Lock, Oid, Default),
  	    reply(ReplyTo,Reply),
  	    locked;
  	{{queue, _Why}, _} ->
  	    ?dbg("Keep ~p ~p ~p ~p~n", [Tid, Oid, Lock, _Why]),
  	    queued; % Keep waiter in queue
  	{{no, Lucky}, _} ->
  	    C = #cyclic{op = SimpleOp, lock = Lock, oid = Oid, lucky = Lucky},
  	    verbose("** WARNING ** Restarted transaction, possible deadlock in lock queue ~w: cyclic = ~w~n",
  		    [Tid, C]),
  