anchor.diff:  
   %% Delegates messages sent by instrumented client code to the appropriate
   %% handlers.
  -dispatcher(Context) ->
  +dispatcher(#context{current = Lid} = Context) ->
  +    Pid = lid:get_pid(Lid),
       receive
   	#sched{msg = Type, pid = Pid, misc = Misc} ->
   	    handler(Type, Pid, Context, Misc);
   	{'EXIT', Pid, Reason} ->
  -	    handler(exit, Pid, Context, Reason);
  -	Other ->
  -	    log:internal("Dispatcher received: ~p~n", [Other])
  +	    handler(exit, Pid, Context, Reason)
  +    after 0 -> dispatcher(Context)
       end.
   
   %% Main scheduler component.
  
positive.code:     end.
  
  %% Stores states for later exploration and returns the process to be run next.
  search(#context{active = Active, state = State}) ->
      case state:is_empty(State) of
  	%% Handle first call to search (empty state, one active process).
  	true ->
  	    [Next] = sets:to_list(Active),
  	    {Next, {current, []}};
  	false ->
  	    %% Get last process that was run by the driver.
  	    {LastLid, _Rest} = state:trim_tail(State),
  	    %% If that process is in the `active` set (i.e. has not blocked),
  	    %% remove it from the actives and make it next-to-run, else do
  	    %% that for another process from the actives.
  	    %% In the former case, all other possible successor states are
  	    %% stored in the next state queue to be explored on the next
  	    %% preemption bound.
  
negative.code:     end.
  
  %% Run process Lid in context Context.
  run(#context{active = Active, current = Lid, state = State} = Context) ->
      ?debug_2("Running process ~s.~n", [lid:to_string(Lid)]),
      %% Remove process from the `active` set.
      NewActive = sets:del_element(Lid, Active),
  