anchor.diff:              precondition_debug("precondition sync_join_cluster: no nodes left to join.", []),
               false %% Might need to be changed when there's no read/write operations.
       end;
  -precondition(#state{joined_nodes=JoinedNodes}, {call, _Mod, sync_leave_cluster, [Node, JoinedNodes]}) -> 
  +precondition(#state{joined_nodes=JoinedNodes}, {call, _Mod, sync_leave_cluster, [Node]}) -> 
       %% Only allow dropping of the last node in the join list, for ease of debugging.
       precondition_debug("precondition sync_leave_cluster: invoked for node ~p joined_nodes ~p", [Node, JoinedNodes]),
   
  
positive.code:     frequency(ClusterCommands ++ FaultModelCommands ++ SystemCommands).
  
  %% Picks whether a command should be valid under the current state.
  precondition(#state{nodes=Nodes, joined_nodes=JoinedNodes}, {call, _Mod, sync_join_cluster, [Node, JoinedNodes]}) -> 
      %% Only allow dropping of the first unjoined node in the nodes list, for ease of debugging.
      precondition_debug("precondition sync_join_cluster: invoked for node ~p joined_nodes ~p", [Node, JoinedNodes]),
  
  
negative.code: 
  %% Assuming the postcondition for a call was true, update the model
  %% accordingly for the test to proceed.
  next_state(#state{counter=Counter, joined_nodes=JoinedNodes}=State, _Res, {call, ?MODULE, sync_join_cluster, [Node, _JoinNode]}) -> 
      State#state{joined_nodes=JoinedNodes ++ [Node], counter=Counter+1};
  next_state(#state{counter=Counter, joined_nodes=JoinedNodes}=State, _Res, {call, ?MODULE, sync_leave_cluster, [Node]}) -> 
      State#state{joined_nodes=JoinedNodes -- [Node], counter=Counter+1};
  next_state(#state{counter=Counter, fault_model_state=FaultModelState0, node_state=NodeState0, joined_nodes=JoinedNodes}=State, Res, {call, _Mod, Fun, _Args}=Call) -> 
      case lists:member(Fun, node_functions()) of
          true ->
  