anchor.diff:  
   %%@doc Prints a list of tuples showing which value is stored in which dht node
   %%     Format : [{Value, [list_of_dht_nodes_value_is_stored_in]}]
  -print_prbr_data(DB, Round) ->
  +print_prbr_data(DB, Round, MayCrash) ->
       PrbrData = get_prbr_data(fun(NodePid, E) ->
                                   {prbr:entry_val(E), NodePid}
                                end, DB),
  
positive.code:     ct:pal("# unique replicas: min:~w; max:~w~n", [Min, Max]),
      ct:pal("PRBR state ~w:~nFormat [{Value, [list_of_dht_nodes_value_is_stored_in]}]~n"
             "~100p", [DB, GroupedValues]),
      case length(Bad) of
          0 -> true;
          _ -> S = io_lib:format("entries with not enough replicas (round:~w, db=~w)", [Round, DB]),
               S2 = lists:flatten(S),
               ct:fail(S2) %% 14B04 ...
      end,
      ok.
  
  print_leases_data(Round) ->
      _ = [print_prbr_data({lease_db, I}, Round) || I <-
                               lists:seq(1, config:read(replication_factor))].
  
  print_element_data(Id, DB) ->
  
negative.code:             lease_checker2:wait_for_clean_leases(500, [{ring_size, ring_size()-1}]),
  
              ct:pal("PRBR state after leases expired"),
              print_prbr_data(kv_db, Round, true),
              _ = print_leases_data(Round),
  
              %% check data integrity
  