anchor.diff:  %% Launch multiple nodes.
   
   provision(Name) ->
  -    lasp_support:start_node(Name, [], ?MODULE).
  +    lasp_support:start_and_join_node(Name, [], ?MODULE).
   
   provision_args(_S) ->
  -    [elements([rita, sue, bob])].
  +    [elements(?NODES)].
   
   provision_pre(#state{nodes=Nodes, status=init}, [Name]) ->
  -    not lists:member(Name, Nodes);
  +    Members = [N || {N, _} <- Nodes],
  +    not lists:member(Name, Members);
   provision_pre(#state{status=running}, [_Name]) ->
       false.
   
  -provision_next(#state{nodes=Nodes0}=S, _Res, [Name]) ->
  -    Nodes = Nodes0 ++ [Name],
  -    Status = case length(Nodes) =:= 3 of
  +provision_next(#state{nodes=Nodes0}=S, Member, [Name]) ->
  +    Nodes = Nodes0 ++ [{Name, Member}],
  +    Status = case length(Nodes) =:= length(?NODES) of
           true ->
               running;
           false ->
  
positive.code: 
  %% Generators.
  
  key() ->
      elements([x, y, z]).
  
  value() ->
      int().
  
  %% Initial state.
  
  initial_state() ->
      %% Launch distribution for the test runner.
      os:cmd(os:find_executable("epmd") ++ " -daemon"),
      {ok, Hostname} = inet:gethostname(),
      case net_kernel:start([list_to_atom("runner@" ++ Hostname), shortnames]) of
          {ok, _} ->
              ok;
          {error, {already_started, _}} ->
              ok
      end,
  
      %% Stop the runner and re-initialize.
      lasp_support:stop_runner(),
      lasp_support:start_runner(),
  
negative.code: teardown() ->
      ok.
  
  sequential_test_() ->
      {timeout, ?TIMEOUT,
       fun() -> ?assert(eqc:quickcheck(?QC_OUT(eqc:testing_time(?TEST_TIME, prop_sequential())))) end}.
  
  -endif.
  -endif.
  