<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _update_fire_status(self, message=None, status=None):
 """ Uses the provided message to update the fire alarm state. :param message: message to use to update :type message: :py:class:`~alarmdecoder.messages.Message` :param status: fire status, overrides message bits :type status: bool :returns: boolean indicating the new status """

        fire_status = status
        last_status = self._fire_status
        if isinstance(message, Message):
            # Quirk in Ademco panels. The fire bit drops on "SYSTEM LO BAT" messages.
            # FIXME: does not support non english panels.
            if self.mode == ADEMCO and message.text.startswith("SYSTEM"):
                fire_status = last_status
            else:
                fire_status = message.fire_alarm

        if fire_status is None:
            return

        if fire_status != self._fire_status:
            self._fire_status, old_status = fire_status, self._fire_status

            if old_status is not None:
                self.on_fire(status=self._fire_status)

        return self._fire_status