anchor.diff:          lists:flatmap(
             fun (Dst) ->
                     Children = try children(Dst, Bucket) catch _:_ -> [] end,
  -                  [{{Src, Dst}, lists:sort(VBuckets)}
  +                  [{{Src, Dst}, VBuckets}
                      || #new_child_id{vbuckets=VBuckets, src_node=Src} <- Children]
             end, RelevantNodes),
       Replicators = dict:from_list(ReplicatorsList),
  
positive.code:                 [VBucket];
              #new_child_id{vbuckets=Vs} = Child ->
                  kill_child(DstNode, Bucket, Child),
                  [VBucket|Vs]
          end,
      {ok, _} = start_child(SrcNode, Bucket, VBuckets, DstNode).
  
  
negative.code:     ok = supervisor:delete_child({server(Bucket), Node}, Child).
  
  
  %% Kills replicators affecting given vbuckets. NOTE: it actually kills
  %% replicators instead of removing requested vbuckets from vbucket
  %% filter.
  -spec stop_incoming_replications(Node::node(),
                                   Bucket::bucket_name(),
                                   VBuckets::[vbucket_id()]) ->
                                 [#new_child_id{}].
  stop_incoming_replications(Node, Bucket, VBuckets0) ->
      VBuckets = ordsets:from_list(VBuckets0),
      %% Kill any existing children for these VBuckets
      Children = [Id || Id = #new_child_id{vbuckets=Vs} <-
                            children(Node, Bucket),
                        not ordsets:is_disjoint(VBuckets, Vs)],
      lists:foreach(fun (Child) ->
                            kill_child(Node, Bucket, Child)
                    end, Children),
  