docs: def _decompose_slice(key, size):
      """ convert a slice to successive two slices. The first slice always has
      a positive step.
      """
      start, stop, step = key.indices(size)
      if step > 0:
          # If key already has a positive step, use it as is in the backend
          return key, slice(None)
      else:
          # determine stop precisely for step > 1 case
          # e.g. [98:2:-2] -> [98:3:-2]
          stop = start + int((stop - start - 1) / step) * step + 1
          start, stop = stop + 1, start + 1
          return slice(start, stop, -step), slice(None, None, -1)