anchor.diff:              ok
       end,
   
  -    case OldState of
  -        undefined ->
  +    true = not(TakeOver andalso (ReadyVBuckets =:= [])),
  +
  +    case OldState =:= undefined orelse ReadyVBuckets =:= [] of
  +        true ->
               ok = kill_tapname(UpstreamAux, TapName, Bucket, Src, Username);
           _ ->
               ok
       end,
  -
  -    true = not(TakeOver andalso (ReadyVBuckets =:= [])),
   
       {Upstream, Args} =
           case OldState =:= undefined orelse
  
positive.code:                 %% recreating) it's only vbucket. In practice when
                  %% there's multiple vbuckets we'll always set it to
                  %% false.
                  had_backfill = #had_backfill{} :: #had_backfill{}
                 }).
  
  %% external API
  
negative.code:     NotReady =
          mc_client_binary:get_zero_open_checkpoint_vbuckets(UpstreamAux,
                                                             NewVBuckets),
  
      if
          State#state.no_ready_vbuckets ->
              %% NOTE: we unregistered tap name when we discovered we
              %% can't do anything and decided to not establish tap
              %% connection. Thus new-style vbucket filter change cannot
              %% even be used.
              ?log_warning("Have no currently replicated vbuckets. TAP name is dead thus using old style vbucket filter change"),
              complete_old_vb_filter_change(State1);
          NotReady =:= [] ->
              Checkpoints =
                  mc_binary:mass_get_last_closed_checkpoint(DownstreamAux,
                                                            VBuckets, 60000),
  