def METHOD_NAME(
    config: UserConfig,
    state: DerivedFV3State,
    timestep: float,
    communicator: pace.util.CubedSphereCommunicator,
) -> Optional[TendencyPrescriber]:
    if config.tendency_prescriber is None:
        return None
    else:
        prescriber_config = config.tendency_prescriber
        tendency_variables = list(prescriber_config.variables.values())
        if communicator.tile.rank == 0:
            if communicator.rank == 0:
                logger.debug(
                    f"Opening tendency override from: {prescriber_config.mapper_config}"
                )
            mapper = prescriber_config.mapper_config.load_mapper()
        else:
            mapper = {}
        if isinstance(prescriber_config.limit_quantiles, dict):
            if prescriber_config.reference_initial_time is None:
                raise ValueError(
                    "TendencyPrescriber reference_initial_time must be specified if "
                    "limit_quantiles are specified."
                )
            limiter: Optional[DatasetQuantileLimiter] = _get_fitted_limiter(
                mapper,
                prescriber_config.reference_initial_time,
                prescriber_config.limit_quantiles,
                limit_only=tendency_variables,
            )
        else:
            limiter = None
        time_lookup_function = _get_time_lookup_function(
            mapper,
            tendency_variables,
            prescriber_config.reference_initial_time,
            prescriber_config.reference_frequency_seconds,
            limiter=limiter,
        )
        return TendencyPrescriber(
            state,
            communicator,
            timestep,
            prescriber_config.variables,
            time_lookup_function,
            diagnostic_variables=set(config.diagnostic_variables),
        )