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: %% active  : A set containing all processes ready to be scheduled.
  %% blocked : A set containing all processes that cannot be scheduled next
  %%          (e.g. waiting for a message on a `receive`).
  %% error   : A term describing the error that occured.
  %% state   : The current state of the program.
  %% details : A boolean being false when running a normal run and
  %%           true when running a replay and need to send detailed
  %%           info to the replay_logger.
  -record(context, {active  :: set(),
                    blocked :: set(),
                    error = normal :: 'normal' | 
  				    error:assertion() |
  				    error:exception(),
                    state   :: state:state(),
                    details :: boolean()}).
  
  %% Internal message format
  %%
  
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),
  