anchor.diff:              {noreply, State0}
       end;
   
  -handle_cast({suspected, _Peer}, #state{passive=Passive0,
  +handle_cast({suspected, Peer}, #state{myself=Myself,
  +                                      active=Active0,
  +                                      passive=Passive0,
                                         pending=Pending0,
  +                                      suspected=Suspected0,
                                         connections=Connections0}=State) ->
  -    % lager:info("Node ~p suspected of failure.", [Peer]),
  +    lager:info("Node ~p suspected of failure.", [Peer]),
   
       %% Select random peer from passive view, and attempt to connect it.
  -    %%
       %% If it successfully connects, it will replace the failed node in
       %% the active view.
  -    %%
  -    Random = select_random(Passive0),
  +    Random = select_random(Passive0, [Myself]),
   
       %% Add to list of pending connections.
       Pending = add_to_pending(Random, Pending0),
  
positive.code:     do_send_message(Name, Message, Connections).
  
  %% @private
  select_random(View) ->
      select_random(View, undefined).
  
  %% @private
  select_random(View, Omit) ->
      List = members(View) -- lists:flatten([Omit]),
  
  
negative.code:     %% Trigger connection.
      Connections = maybe_connect(Random, Connections0),
  
      %% NOTE: The failed process should automatically cause the node to
      %% be added to the suspected list when the 'EXIT' is received,
      %% therefore, this code is superfluous.
      Suspected = case is_in_active_view(Peer, Active0) of
          true ->
              add_to_suspected(Peer, Suspected0);
          false ->
              Suspected0
      end,
  
      {noreply, State#state{pending=Pending,
                            suspected=Suspected,
                            connections=Connections}};
  
  handle_cast(Msg, State) ->
      lager:warning("Unhandled messages: ~p", [Msg]),
  