def METHOD_NAME(cls, *args):
    log.debug(
        f"{cls} time since last call: {time.time() - cls._last_time}")
    cls._last_time = time.time()
    # XXX: how to still do this at the class level?
    # don't proceed if I'm not displayed <=> If have no parent
    # if not self.get_root_window():
    #     return
    pos = args[1]
    # Next line to_widget allow to compensate for relative layout
    for widget in cls._widgets:
        w_coords = widget.to_widget(*pos)
        inside = widget.collide_point(*w_coords)
        if inside and widget.hovered:
            log.debug('already hovered')
            return
        elif inside:
            # un-highlight the last highlighted
            last_hovered = cls._last_hovered
            if last_hovered:
                last_hovered.dispatch('on_leave')
                last_hovered.hovered = False
            # stick last highlighted at the front of the stack
            # resulting in LIFO iteration for efficiency
            cls._widgets.remove(widget)
            cls._widgets.appendleft(widget)
            cls._last_hovered = widget
            # highlight new widget
            widget.border_point = pos
            widget.hovered = True
            widget.dispatch('on_enter')
            return