def METHOD_NAME(self, path: str, key: str, value: Any) -> None:
    if self.adapter and path == self.adapter.get_object_path():
        logging.debug(f"prop {key} {value}")
        if key == "DiscoverableTimeout":
            if value == 0:  # always visible
                if self.timeout is not None:
                    GLib.source_remove(self.timeout)
                self.time_left = -1
                self.timeout = None
            else:
                if self.time_left > -1:
                    if self.timeout is not None:
                        GLib.source_remove(self.timeout)
                self.time_left = value
                self.timeout = GLib.timeout_add(1000, self.on_update)
                return
        elif (key == "Discoverable" and not value) or (key == "Powered" and not value):
            logging.info("Stop")
            if self.timeout is not None:
                GLib.source_remove(self.timeout)
            self.time_left = -1
            self.timeout = None
        self.update_menuitems()