anchor.diff:  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   -spec check_leases_for_all_nodes() -> boolean().
   check_leases_for_all_nodes() ->
  -    lists:all(fun (B) -> B end, [ check_local_leases(DHTNode) || DHTNode <- pid_groups:find_all(dht_node) ]).
  +    io:format("======= node local test ==========~n"),
  +    lists:all(fun (B) -> B end, [ check_local_leases(DHTNode) || DHTNode <- all_dht_nodes() ]).
   
   -spec check_leases_for_the_ring() -> boolean().
   check_leases_for_the_ring() ->
  +    io:format("======= global test ==========~n"),
       lease_checker(admin:number_of_nodes()).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
positive.code:         andalso is_disjoint(I, T).
  
  get_dht_node_state(Pid, What) ->
      comm:send_local(Pid, {get_state, comm:this(), What}),
      receive
          {get_state_response, Data} ->
              Data
      end.
  
  get_all_leases() ->
      [ get_leases(DHTNode) || DHTNode <- pid_groups:find_all(dht_node) ].
  
  get_leases(Pid) ->
      get_dht_node_state(Pid, lease_list).
  
negative.code:         true ->
              ok
      end,
      io:format("complete ring covered by leases: ~w~n", [IsAll]),
      io:format("all aux-fields are empty       : ~w~n", [HaveAllAuxEmpty]),
      io:format("no leases overlap              : ~w~n", [IsDisjoint]),
      io:format("each node has one active lease : ~w~n", [HaveAllActiveLeases]),
      io:format("no passive leases              : ~w~n", [HaveNoPassiveLeases]),
      IsAll andalso
          HaveAllAuxEmpty andalso
          IsDisjoint andalso
  