anchor.diff:  -define(CLOSING_TIMEOUT, 2000).
   -define(AGENT_THRESHOLD, 2). %% TODO this should be user-configurable and use case dependent
   
  +-type state() :: state().
   -type agent() :: mas:agent().
   -type sim_params() :: mas:sim_params().
   -type arenas() :: mas_conc_supervisor:arenas().
  
positive.code:     {noreply, cleaning, ?CLOSING_TIMEOUT}.
  
  
  -spec handle_info(Info :: timeout() | term(), State :: #state{})
                   -> {noreply, NewState :: #state{}} |
                      {noreply, NewState :: #state{}, timeout() | hibernate} |
                      {stop, Reason :: term(), NewState :: #state{}}.
  handle_info(timeout, cleaning) ->
      {stop, normal, cleaning};
  
  
negative.code: %%% Callbacks
  %%%===================================================================
  
  -spec init(Args :: term()) -> {ok, State :: state()} |
                                {ok, State :: state(), timeout() | hibernate} |
                                {stop, Reason :: term()} | ignore.
  init([Supervisor, Interaction, SP, Cf]) ->
      mas_misc_util:seed_random(),
  