anchor.diff:  	    Next = search(Info),
   	    %% Remove process Next from the `active` set and run it.
   	    NewActive = set_remove(Active, Next),
  -	    debug("Running process ~p.~n", [Next]),
  +	    ?debug("Running process ~p.~n", [Next]),
   	    run(Next),
   	    %% Create new state.
   	    NewState = state_get_next(State, Next),
  
positive.code:     %% Insert first state to replay, i.e. "run first process first".
      %% XXX: Breaks state and lid abstraction.
      ets:insert(state, {["P1"]}),
      inter_loop(Mod, Fun, Args, 1),
      state_stop(),
      unregister(sched).
  
  inter_loop(Mod, Fun, Args, RunCounter) ->
      %% Lookup state to replay.
      case state_pop() of
   	no_state -> ok;
   	ReplayState ->
  	    log("Running interleaving ~p~n", [RunCounter]),
  	    log("----------------------~n"),
   	    %% Start LID service.
   	    lid_start(),
   	    %% Create the first process.
   	    %% The process is created linked to the scheduler, so that the
  	    %% latter can receive the former's exit message when it terminates.
  	    %% In the same way, every process that may be spawned in the course
  	    %% of the program shall be linked to this (`sched`) process.
   	    FirstPid = spawn_link(Mod, Fun, Args),
   	    %% Create the first LID and register it with FirstPid.
   	    lid_new(FirstPid),
   	    %% The initial `active` and `blocked` sets are empty.
   	    Active = set_new(),
   	    Blocked = set_new(),
   	    %% Create initial state.
   	    State = state_init(),
   	    %% Receive the first message from the first process. That is, wait
  	    %% until it yields, blocks or terminates.
   	    NewInfo = dispatcher(#info{active = Active,
   				       blocked = Blocked,
   				       state = State}),
   	    %% Use driver to replay ReplayState.
   	    driver(NewInfo, ReplayState),
   	    %% Stop LID service (LID tables have to be reset on each run).
   	    lid_stop(),
   	    inter_loop(Mod, Fun, Args, RunCounter + 1)
      end.
  
  %%%----------------------------------------------------------------------
  
negative.code:     log("-----------------------~n"),
      log("Run terminated (~p).~n~n", [Reason]),
      %% Debug: print unexplored state table.
      ?debug("Unexplored: ~p~n~n", [ets:match(state, '$1')]),
      case Reason of
          normal -> ?RET_NORMAL;
          _ -> ?RET_HEISENBUG
      end.
  
  %% Wakeup a process.
  %% If process is in `blocked` set, move to `active` set.
  wakeup(Lid, #info{active = Active, blocked = Blocked} = Info) ->
      case set_member(Blocked, Lid) of
  	true ->
              ?debug("Waking up ~p.~n", [Lid]),
  	    NewBlocked = set_remove(Blocked, Lid),
  	    NewActive = set_add(Active, Lid),
  	    Info#info{active = NewActive, blocked = NewBlocked};
  