anchor.diff:  %% Config0 = Config1 = [tuple()]
   %% Reason = term()
   %% -------------------------------------------------------------------
  +init_per_group(three_nodes_netsplits, Config) ->
  +    %% init
  +    SlaveNode2ShortName = syn_slave_2,
  +    %% start slave 2
  +    {ok, SlaveNode2} = syn_test_suite_helper:start_slave(SlaveNode2ShortName),
  +    %% config
  +    [
  +        {slave_node_2_short_name, SlaveNode2ShortName},
  +        {slave_node_2, SlaveNode2}
  +        | Config
  +    ];
   init_per_group(_GroupName, Config) -> Config.
   
   %% -------------------------------------------------------------------
  
positive.code:             two_nodes_netsplit_when_there_are_no_conflicts,
              two_nodes_netsplit_kill_resolution_when_there_are_conflicts,
              two_nodes_netsplit_message_resolution_when_there_are_conflicts
          ]}
      ].
  %% -------------------------------------------------------------------
  
negative.code:     syn_test_suite_helper:kill_process(LocalPid),
      syn_test_suite_helper:kill_process(SlavePid).
  
  three_nodes_netsplit_kill_resolution_when_there_are_conflicts(Config) ->
      %% get slaves
      SlaveNode = proplists:get_value(slave_node, Config),
      SlaveNode2 = proplists:get_value(slave_node_2, Config),
      CurrentNode = node(),
  
      %% start syn
      ok = syn:start(),
      ok = rpc:call(SlaveNode, syn, start, []),
      ok = rpc:call(SlaveNode2, syn, start, []),
      timer:sleep(100),
  
      %% start processes
      LocalPid = syn_test_suite_helper:start_process(),
      SlavePid = syn_test_suite_helper:start_process(SlaveNode),
      Slave2Pid = syn_test_suite_helper:start_process(SlaveNode2),
  
      %% register
      ok = syn:register(conflicting_key, SlavePid),
      ok = syn:register(slave_2_process, Slave2Pid),
      timer:sleep(100),
  
      %% check tables
      2 = mnesia:table_info(syn_processes_table, size),
      2 = rpc:call(SlaveNode, mnesia, table_info, [syn_processes_table, size]),
      2 = rpc:call(SlaveNode2, mnesia, table_info, [syn_processes_table, size]),
  
      %% check process
      SlavePid = syn:find_by_key(conflicting_key),
  
      %% simulate net split
      syn_test_suite_helper:disconnect_node(SlaveNode),
      timer:sleep(1000),
  
      %% check tables
      1 = mnesia:table_info(syn_processes_table, size),
      1 = rpc:call(SlaveNode2, mnesia, table_info, [syn_processes_table, size]),
  
      ActiveReplicaseDuringNetsplit = mnesia:table_info(syn_processes_table, active_replicas),
      true = lists:member(CurrentNode, ActiveReplicaseDuringNetsplit),
      true = lists:member(SlaveNode2, ActiveReplicaseDuringNetsplit),
  
      %% now register the local pid with the same conflicting key
      ok = syn:register(conflicting_key, LocalPid),
  
      %% check process
      LocalPid = syn:find_by_key(conflicting_key),
  
      %% reconnect
      syn_test_suite_helper:connect_node(SlaveNode),
      timer:sleep(1000),
  
      %% check tables
      2 = mnesia:table_info(syn_processes_table, size),
      2 = rpc:call(SlaveNode, mnesia, table_info, [syn_processes_table, size]),
      2 = rpc:call(SlaveNode2, mnesia, table_info, [syn_processes_table, size]),
  
      %% check processes
      FoundPid = syn:find_by_key(conflicting_key),
      true = lists:member(FoundPid, [LocalPid, SlavePid]),
  
      Slave2Pid = syn:find_by_key(slave_2_process),
      Slave2Pid = rpc:call(SlaveNode, syn, find_by_key, [slave_2_process]),
      Slave2Pid = rpc:call(SlaveNode2, syn, find_by_key, [slave_2_process]),
  
      %% kill processes
      syn_test_suite_helper:kill_process(LocalPid),
      syn_test_suite_helper:kill_process(SlavePid),
      syn_test_suite_helper:kill_process(Slave2Pid).
  
  %% ===================================================================
  %% Internal
  %% ===================================================================
  