docs: def _get_buffer(self, index):
          """Shared bounds checking and buffer creation."""
          if not 0 <= index < self.count:
              raise IndexError()
          size = struct.calcsize(self.format)
          # We create the buffer every time instead of keeping the buffer (which is 32 bytes at least)
          # around forever.
          buf = bytearray(size + 1)
          buf[0] = self.first_register + size * index
          return buf