anchor.diff:      insert(PeerT, P#peer{op_state = {OS, To}}),
       send_event(SvcName, {watchdog, Ref, TPid, {From, To}, {T, Opts}}),
       ok;
  -%% Death of a peer process results in the removal of it's peer and any
  -%% associated conn record when 'DOWN' is received (after this) but the
  -%% states will be {?STATE_UP, ?WD_DOWN} for a short time. (No real
  -%% problem since ?WD_* is only used in service_info.) We set ?WD_OKAY
  -%% as a consequence of connection_up since we know a watchdog is
  -%% coming. We can't set anything at connection_down since we don't
  -%% know if the subsequent watchdog message will be ?WD_DOWN or
  -%% ?WD_SUSPECT. We don't (yet) set ?STATE_* as a consequence of a
  -%% watchdog message since this requires changing some of the matching
  -%% on ?STATE_*.
  -%%
  -%% Death of a conn process results in connection_down followed by
  -%% watchdog ?WD_DOWN. The latter doesn't result in the conn record
  -%% being deleted since 'DOWN' from death of its peer doesn't (yet)
  -%% deal with the record having been removed.
  +%% Death of a watchdog process (#peer.pid) results in the removal of
  +%% it's peer and any associated conn record when 'DOWN' is received
  +%% (after this) but the states will be {?STATE_UP, ?WD_DOWN} for a
  +%% short time. (No real problem since ?WD_* is only used in
  +%% service_info.) We set ?WD_OKAY as a consequence of connection_up
  +%% since we know a watchdog is coming. We can't set anything at
  +%% connection_down since we don't know if the subsequent watchdog
  +%% message will be ?WD_DOWN or ?WD_SUSPECT. We don't (yet) set
  +%% ?STATE_* as a consequence of a watchdog message since this requires
  +%% changing some of the matching on ?STATE_*.
  +%%
  +%% Death of a peer process process (#conn.pid, #peer.conn) results in
  +%% connection_down followed by watchdog ?WD_DOWN. The latter doesn't
  +%% result in the conn record being deleted since 'DOWN' from death of
  +%% its watchdog doesn't (yet) deal with the record having been
  +%% removed.
   
   %% Monitor process has died. Just die with a reason that tells
   %% diameter_config about the happening. If a cleaner shutdown is
  
positive.code:     Pid.
  
  %% Note that the service record passed into the watchdog is the merged
  %% record so that each watchdog (and peer_fsm) may get a different
  %% record. This record is what is passed back into application
  %% callbacks.
  
  s(Type, Ref, T) ->
      case diameter_watchdog:start({Type, Ref}, T) of
  
negative.code:     connection_up(Pid, T, S),
      ok;
  
  %% Watchdog has a new connection that will be opened after DW[RA]
  %% exchange. This message was added long after connection_up, to
  %% communicate the information as soon as it's available. Leave
  %% connection_up as is it for now, duplicated information and all.
  transition({reopen, Pid, T}, S) ->
      reopen(Pid, T, S),
      ok;
  
  %% Watchdog has left state OKAY.
  transition({connection_down, Pid}, S) ->
      connection_down(Pid, S),
      ok;
  
  %% Watchdog has returned to state OKAY.
  transition({connection_up, Pid}, S) ->
      connection_up(Pid, S),
      ok;
  