anchor.diff:  
       _ = [ erlang:exit(Pid, kill) || Pid <- Pids ],
   
  -    %% would need asynchronous cleanup, but the ring is stopped
  -    %% anyway, so we skip the cleanup here.
  -    _ = [ gen_component:bp_del_async(X, tm_crash) || X <- TMs ],
  -
  -    _ = [ gen_component:bp_cont(X) || X <- TMs ],
       ok.
   
   tp_crash(_) ->
  
positive.code: 
      %%[ erlang:exit(Pid, kill) || Pid <- Pids ],
  
      gen_component:bp_del(Proposer, tp_crash),
      gen_component:bp_cont(Proposer).
  
  all_tp_crash(_) ->
      ct:pal("Starting all_tp_crash, simulated by holding the dht_node_proposers~n"),
  
negative.code:     %% ct:pal("Barriers set~n"),
  
      %% TM only will perform the tx_tm_rtm_commit, that lead to the BP
      %% bp_step blocks. Do it asynchronously (we don't know which TM
      %% got the request).
      Pids = [ spawn(fun () -> gen_component:bp_step(X) end) || X <- TMs ],
  
      %% report all tx_tms as failed after the commit has started...
  