anchor.diff:  -define(CLUSTER_NODES, true).
   -define(MANAGER, partisan_pluggable_peer_service_manager).
   
  --define(PERFORM_LEAVES_AND_JOINS, false).           %% Do we allow cluster transitions during test execution:
  +-define(PERFORM_LEAVES_AND_JOINS, true).            %% Do we allow cluster transitions during test execution:
                                                       %% EXTREMELY slow, given a single join can take ~30 seconds.
   
  --define(PERFORM_FAULT_INJECTION, true).             %% Do we perform fault-injection?                                            
  +-define(PERFORM_FAULT_INJECTION, false).            %% Do we perform fault-injection?                                            
   
   %% Debug.
   -define(DEBUG, true).
   -define(INITIAL_STATE_DEBUG, false).
  --define(PRECONDITION_DEBUG, false).
  +-define(PRECONDITION_DEBUG, true).
   -define(POSTCONDITION_DEBUG, false).
   
   %% Partisan connection and forwarding settings.
   -define(EGRESS_DELAY, 0).                           %% How many milliseconds to delay outgoing messages?
   -define(INGRESS_DELAY, 0).                          %% How many millisconds to delay incoming messages?
   -define(VNODE_PARTITIONING, false).                 %% Should communication be partitioned by vnode identifier?
  +
  +%%%===================================================================
  +%%% Helper Macros
  +%%%===================================================================
  +
  +-define(ETS, prop_partisan).
  +
  +-define(NAME, fun(Name) -> [{_, NodeName}] = ets:lookup(?ETS, Name), NodeName end).
   
   -export([command/1, 
            initial_state/0, 
  
positive.code: 
      case length(ToBeRemovedNodes) > 3 of
          true ->
              ToBeRemovedNode = lists:last(ToBeRemovedNodes),
              precondition_debug("precondition leave_cluster: attempting to leave ~p", [ToBeRemovedNode]),
              case ToBeRemovedNode of
                  Node ->
                      precondition_debug("precondition leave_cluster: YES attempting to leave ~p is ~p", [ToBeRemovedNode, Node]),
                      true;
                  OtherNode ->
                      precondition_debug("precondition leave_cluster: NO attempting to leave ~p not ~p", [ToBeRemovedNode, OtherNode]),
                      false
              end;
          false ->
              precondition_debug("precondition leave_cluster: no nodes left to remove.", []),
              false %% Might need to be changed when there's no read/write operations.
      end;
  precondition(#state{fault_model_state=FaultModelState, node_state=NodeState, joined_nodes=JoinedNodes}, {call, Mod, Fun, [Node|_]=Args}=Call) -> 
      precondition_debug("precondition fired for node function: ~p", [Fun]),
  
negative.code: %%%===================================================================
  
  join_cluster(Name, [JoinedName|_]=JoinedNames) ->
      command_preamble(Name, [join_cluster, JoinedNames]),
  
      Result = case is_joined(Name, JoinedNames) of
          true ->
  