-    def set_region_to_update(
-        self,
-        column_command: int,
-        row_command: int,
-        set_current_column_command: Optional[int],
-        set_current_row_command: Optional[int],
-        data_as_commands: bool,
-        always_toggle_chip_select: bool,
-        area: Area,
-        SH1107_addressing: bool,
-    ) -> None:
-        # pylint: disable=invalid-name, too-many-arguments, too-many-locals, too-many-branches,
-        # pylint: disable=too-many-statements
-
-        big_endian = True  # default is True # TODO ????
-
-        x1 = area.x1 + self._colstart
-        x2 = area.x2 + self._colstart
-        y1 = area.y1 + self._rowstart
-        y2 = area.y2 + self._rowstart
-
-        # Collapse down the dimension where multiple pixels are in a byte.
-        if self._colorspace.depth < 8:
-            pixels_per_byte = 8 // self._colorspace.depth
-            if self._colorspace.pixels_in_byte_share_row:
-                x1 //= pixels_per_byte * self._colorspace.bytes_per_cell
-                x2 //= pixels_per_byte * self._colorspace.bytes_per_cell
-            else:
-                y1 //= pixels_per_byte * self._colorspace.bytes_per_cell
-                y2 //= pixels_per_byte * self._colorspace.bytes_per_cell
-
-        x2 -= 1
-        y2 -= 1
-
-        chip_select = CHIP_SELECT_UNTOUCHED
-        if always_toggle_chip_select or data_as_commands:
-            chip_select = CHIP_SELECT_TOGGLE_EVERY_BYTE
-
-        # Set column
-        self._begin_transaction()
-        data = bytearray(5)
-        data[0] = column_command
-        if not data_as_commands:
-            self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data, 1)
-            data_type = DISPLAY_DATA
-            data_length = 0
-        else:
-            data_type = DISPLAY_COMMAND
-            data_length = 1
-
-        if self._ram_width < 0x100:
-            data[data_length] = x1
-            data_length += 1
-            data[data_length] = x2
-            data_length += 1
-        else:
-            if big_endian:
-                data[data_length] = x1 >> 8
-                data_length += 1
-                data[data_length] = x1 & 0xFF
-                data_length += 1
-                data[data_length] = x2 >> 8
-                data_length += 1
-                data[data_length] = x2 & 0xFF
-                data_length += 1
-            else:
-                data[data_length] = x1 & 0xFF
-                data_length += 1
-                data[data_length] = x1 >> 8
-                data_length += 1
-                data[data_length] = x2 & 0xFF
-                data_length += 1
-                data[data_length] = x2 >> 8
-                data_length += 1
-
-        # Quirk for "SH1107_addressing"
-        #     Column lower command = 0x00, Column upper command = 0x10
-        if SH1107_addressing:
-            data[0] = ((x1 >> 4) & 0x0F) | 0x10  # 0x10 to 0x17
-            data[1] = x1 & 0x0F  # 0x00 to 0x0F
-            data_length = 2
-
-        self._send(data_type, chip_select, data, data_length)
-        self._end_transaction()
-
-        if set_current_column_command is not None:
-            command = bytearray(1)
-            command[0] = set_current_column_command
-            self._begin_transaction()
-            self._send(DISPLAY_COMMAND, chip_select, command, 1)
-            self._send(DISPLAY_DATA, chip_select, data, data_length // 2)
-            self._end_transaction()
-
-        # Set row
-        self._begin_transaction()
-        data[0] = row_command
-        data_length = 1
-        if not data_as_commands:
-            self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data, 1)
-            data_length = 0
-
-        if self._ram_height < 0x100:
-            data[data_length] = y1
-            data_length += 1
-            data[data_length] = y2
-            data_length += 1
-        else:
-            if big_endian:
-                data[data_length] = y1 >> 8
-                data_length += 1
-                data[data_length] = y1 & 0xFF
-                data_length += 1
-                data[data_length] = y2 >> 8
-                data_length += 1
-                data[data_length] = y2 & 0xFF
-                data_length += 1
-                # TODO Which is right? The core uses above
-            else:
-                data[data_length] = y1 & 0xFF
-                data_length += 1
-                data[data_length] = y1 >> 8
-                data_length += 1
-                data[data_length] = y2 & 0xFF
-                data_length += 1
-                data[data_length] = y2 >> 8
-                data_length += 1
-
-        # Quirk for "SH1107_addressing"
-        #  Page address command = 0xB0
-        if SH1107_addressing:
-            # Set the page to out y value
-            data[0] = 0xB0 | y1
-            data_length = 1
-
-        self._send(data_type, chip_select, data, data_length)
-        self._end_transaction()
-
-        if set_current_row_command is not None:
-            command = bytearray(1)
-            command[0] = set_current_row_command
-            self._begin_transaction()
-            self._send(DISPLAY_COMMAND, chip_select, command, 1)
-            self._send(DISPLAY_DATA, chip_select, data, data_length // 2)
-            self._end_transaction()
-