def METHOD_NAME(fn: TWrappedFunction) -> TWrappedFunction:
    @functools.wraps(fn)
    async def wrapper(*args, **kwargs):
        with self.start_flow(control_point, explicit_labels) as flow:
            if flow.should_run():
                return await run_fn(fn, *args, **kwargs)
            else:
                if on_reject:
                    return on_reject()
                raise RejectedFlowException("Flow was rejected")
    return wrapper