<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def async_change_device( self, device_id: int, group_number: int, unit_number: int, enable_status: ESFlags, switches: SwitchFlags) -> None: """ Change settings for a device on the base unit. :param device_id: unique identifier for the device to be changed :param group_number: group number the device is to be assigned to :param unit_number: unit number the device is to be assigned to :param enable_status: flags indicating settings to enable :param switches: indicates switches that will be activated when device is triggered """


        # Lookup device using zone to obtain an accurate index and current
        # values, which will be needed to perform the change command
        device = self._devices[device_id]

        # If it is a Special device, automatically use the other function
        # instead (without changing any of the special fields)
        if isinstance(device, SpecialDevice):
            await self.async_change_special_device(
                device_id, group_number, unit_number, enable_status, switches,
                device.special_status, device.high_limit, device.low_limit,
                device.control_high_limit, device.control_low_limit)
            return

        response = await self._protocol.async_execute(
            GetDeviceCommand(device.category, device.group_number, device.unit_number))
        if isinstance(response, DeviceInfoResponse):
            response = await self._protocol.async_execute(
                ChangeDeviceCommand(
                    device.category, response.index, group_number, unit_number,
                    enable_status, switches))
            if isinstance(response, DeviceSettingsResponse):
                device._handle_response(response) # pylint: disable=protected-access
        if isinstance(response, DeviceNotFoundResponse):
            raise ValueError("Device to be changed was not found")