anchor.diff:  state_set_crashed_after(State, Val) -> setelement(4, State, Val).
   -spec state_get_table(state()) -> pdb:tableid().
   state_get_table(State)              -> element(5, State).
  --spec state_get_monitors(state())   -> [{comm:mypid(), reference()}].
  -state_get_monitors(State)           -> element(6, State).
  --spec state_set_monitors(state(), [{comm:mypid(), reference()}]) -> state().
  -state_set_monitors(State, Val)      -> setelement(6, State, Val).
  +-spec state_get_monitor_tab(state())-> pdb:tableid().
  +state_get_monitor_tab(State)        -> element(6, State).
  +%% -spec state_set_monitor_tab(state(), pdb:tableid()) -> state().
  +%% state_set_monitor_tab(State, Val)   -> setelement(6, State, Val).
   
   -spec state_add_entry(state(), {pid(), comm:mypid(), fd:cookie()}) -> state().
   state_add_entry(State, {Subscriber, WatchedPid, Cookie}) ->
  
positive.code: -spec init(pid() | comm:mypid()) -> state().
  init(RemotePid) ->
      ?TRACE("fd_hbs init: RemotePid ~p~n", [RemotePid]),
      TableName = pdb:new(?MODULE, [set]), %% debugging: ++ [protected]),
      RemoteFDPid = comm:get(fd, RemotePid),
      comm:send(RemoteFDPid,
                {subscribe_heartbeats, comm:this(), RemotePid},
  
negative.code:               _RemotePids = [],
                _LastPong = Now,
                _CrashedAfter = util:time_plus_ms(Now, delayfactor() * failureDetectorInterval()),
                LocalSubscriberTab, MonitorTab).
  
  -spec on(comm:message(), state()) -> state() | kill.
  on({add_subscriber, Subscriber, WatchedPid, Cookie} = _Msg, State) ->
  