def METHOD_NAME(self, dt: date, rule: ObservedRule) -> date:
    delta = rule.get(dt.weekday(), 0)
    if delta != 0:
        if abs(delta) == 7:
            delta //= 7
            dt += td(days=delta)
            while dt.year == self._year and (
                dt in self or self._is_weekend(dt)  # type: ignore[operator]
            ):
                dt += td(days=delta)
        else:
            dt += td(days=delta)
    return dt