code: def char_in_shrink_order(self, i: int) -> str:
      # We would like it so that, where possible, shrinking replaces
      # characters with simple ascii characters, so we rejig this
      # bit so that the smallest values are 0, 1, 2, ..., Z.
      #
      # Imagine that numbers are laid out as abc0yyyZ...
      # this rearranges them so that they are laid out as
      # 0yyyZcba..., which gives a better shrinking order.
      if i <= self._idx_of_Z:
          # We want to rewrite the integers [0, n] inclusive
          # to [zero_point, Z_point].
          n = self._idx_of_Z - self._idx_of_zero
          if i <= n:
              i += self._idx_of_zero
          else:
              # We want to rewrite the integers [n + 1, Z_point] to
              # [zero_point, 0] (reversing the order so that codepoints below
              # zero_point shrink upwards).
              i = self._idx_of_zero - (i - n)
              assert i < self._idx_of_zero
          assert 0 <= i <= self._idx_of_Z
  
      return chr(self[i])
  
file_path: catboost/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py
imports: from typing import Union
label_desc: Use image node_id 16 for calling the IntervalSet obj's underlying member method code with example usage: obj.char_in_shrink_order(i) and returns: chr