def METHOD_NAME(
    self,
    original_method: Callable[..., Any],
) -> Callable[..., Any]:
    """Create a method that conditionally overrides another method.
    The returned method passes through to the original only if this server
    is in one of the allowed silo modes.
    :param original_method: the method being conditionally overridden
    :return: the conditional method object
    """
    def override(*args: Any, **kwargs: Any) -> Any:
        # It's important to do this check inside the override, so that tests
        # using `override_settings` or a similar context can change the value of
        # settings.SILO_MODE effectively. Otherwise, availability would be
        # immutably determined when the decorator is first evaluated.
        is_available = self.is_available()
        if is_available:
            return original_method(*args, **kwargs)
        else:
            handler = self.handle_when_unavailable(
                original_method,
                SiloMode.get_current_mode(),
                itertools.chain([SiloMode.MONOLITH], self.modes),
            )
            return handler(*args, **kwargs)
    functools.update_wrapper(override, original_method)
    return override