anchor.diff:      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
   %% ===================================================================
  
positive.code: %% GroupName = atom()
  %% Config0 = Config1 = [tuple()]
  %% -------------------------------------------------------------------
  end_per_group(_GroupName, _Config) -> ok.
  
  % ----------------------------------------------------------------------------------------------------------
  
negative.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
          ]},
          {three_nodes_netsplits, [shuffle], [
              three_nodes_netsplit_kill_resolution_when_there_are_conflicts
          ]}
      ].
  %% -------------------------------------------------------------------
  