anchor.diff:  send_reply(Id, Target, Msg, [Parent | Rest], Shepherd) ->
       comm:send(Parent, {bulkowner, reply, Id, Target, Msg, Rest}, [{shepherd, Shepherd}]).
   
  --spec send_reply_failed(Id::uid:global_uid(), Target::comm:mypid(), Msg::comm:message(), Parents::[comm:mypid()], Shepherd::comm:erl_local_pid(), FailedPid::comm:mypid()) -> ok.
  +-spec send_reply_failed(Id::uid:global_uid(), Target::comm:mypid(), Msg::comm:message(),
  +                        Parents::[comm:mypid()], Shepherd::comm:erl_local_pid(),
  +                        FailedPid::comm:mypid()) -> ok.
   send_reply_failed(_Id, Target, Msg, [], _Shepherd, Target) ->
       log:log(warn, "[ ~p ] cannot send bulkowner_reply with message ~p (target node not available)",
               [pid_groups:pid_to_name(self()), Msg]);
  
positive.code:                     comm:send_local(pid_groups:get_my(dht_node), Msg)
              end
      end,
      State;
  
  on({bulkowner, reply, Id, Target, Msg, Parents}, State) ->
  
negative.code:                     _    -> AccI
                  end
          end,
      % we are responsible for the intersection of the BulkOwner range and our
      % ring maintenance range (plus DB range from ongoing slides).
      MyDBRange = intervals:union(dht_node_state:get(State, my_range),
                                  dht_node_state:get(State, db_range)),
      MyRange0 = lists:foldl(F, Range, MsgFwd),
      MyRange = intervals:intersection(MyRange0, MyDBRange),
      case intervals:is_empty(MyRange) of
          true -> ok;
          _ ->
  