def METHOD_NAME(self, amount: int) -> None:
    """
    Rotates, then collapses 2 ** amount to 1 buckets.
    """
    bias = self.__index_base - self.__index_start
    if bias != 0:
        self.__index_base = self.__index_start
        # [0, 1, 2, 3, 4] Original backing array
        self._counts = self._counts[::-1]
        # [4, 3, 2, 1, 0]
        self._counts = (
            self._counts[:bias][::-1] + self._counts[bias:][::-1]
        )
        # [3, 4, 0, 1, 2] This is a rotation of the backing array.
    size = 1 + self.__index_end - self.__index_start
    each = 1 << amount
    inpos = 0
    outpos = 0
    pos = self.__index_start
    while pos <= self.__index_end:
        mod = pos % each
        if mod < 0:
            mod += each
        index = mod
        while index < each and inpos < size:
            if outpos != inpos:
                self._counts[outpos] += self._counts[inpos]
                self._counts[inpos] = 0
            inpos += 1
            pos += 1
            index += 1
        outpos += 1
    self.__index_start >>= amount
    self.__index_end >>= amount
    self.__index_base = self.__index_start