def METHOD_NAME(self):
    cmd = self._read()
    if DEBUG:
        print(f"cmd: {cmd:02x}")
    if cmd < CMD_2_SEEK_OFFSET:
        # We skip over the nb of words indicated by the cmd
        if DEBUG:
            print(f"READ 0 - WRITE {cmd+1}")
        self.bytes_written += (cmd + 1) * 2
        if self.bytes_written > self.stop_when_size:
            raise ValueError(
                "BPC Tilemap Decompressor: Reached EOF while writing decompressed data."
            )
    elif CMD_2_SEEK_OFFSET <= cmd < CMD_2_COPY_LOW:
        # cmd - CMD_2_SEEK_OFFSET is the nb of words to write with the next byte as low byte
        cmd_value = self._read()
        if DEBUG:
            print(f"READ 1 - WRITE {cmd - (CMD_2_SEEK_OFFSET-1)}")
        for i in range(CMD_2_SEEK_OFFSET - 1, cmd):
            self._write(
                read_u16(self.decompressed_data, self.bytes_written) | cmd_value
            )
    else:  # elif cmd > CMD_2_COPY_LOW:
        # cmd - CMD_2_COPY_LOW is the nb of words to write with the sequence of bytes as low byte
        if DEBUG:
            print(
                f"READ {cmd - (CMD_2_COPY_LOW-1)} - WRITE {cmd - (CMD_2_COPY_LOW-1)}"
            )
        for i in range(CMD_2_COPY_LOW - 1, cmd):
            value_at_pos = read_u16(self.decompressed_data, self.bytes_written)
            value_at_pos |= self._read()
            self._write(value_at_pos)