class_docstr: Vectorized slice/HARM sampler.
  
  Can revert until all previous steps have likelihoods allL above Lmin.
  Updates currentt, generation and allL, in-place.
docstr: Update walker from which to pick next.
docstr_tok: ["Update","walker","from","which","to","pick","next","."]
code: def shift(self):
      """Update walker from which to pick next."""
      # this is a ring buffer
      # shift index forward, wrapping around
      # this is better than copying memory around when a element is removed
      self.ringindex = (self.ringindex + 1) % self.popsize
  
imports: import numpy
  from ultranest.utils import submasks
  from ultranest.stepfuncs import evolve, step_back
  from ultranest.stepfuncs import generate_cube_oriented_direction, generate_cube_oriented_direction_scaled
  from ultranest.stepfuncs import generate_random_direction, generate_region_oriented_direction, generate_region_random_direction
  from ultranest.stepfuncs import generate_differential_direction, generate_mixture_random_direction
  import scipy.stats
label_desc: Use image node_id 10 for calling the PopulationSliceSampler obj's underlying member method code with example usage: obj.shift() without return types