def on_condition_that(condition, fuzzer):
    """
    A composite fuzzer that applies the supplied fuzzer if the specified condition holds.
    :param  condition:  Can either be a boolean value or a 0-ary function that returns a boolean value.
    :param fuzzer: the fuzz operator to apply if the condition holds.
    :returns: a fuzz operator that applies the underlying fuzz operator if the specified condition is satisfied.
    """

    def _on_condition_that(steps, context):
        if hasattr(condition, '__call__'):
            if condition():
                return fuzzer(steps, context)
            else:
                return steps
        elif condition:
            return fuzzer(steps, context)
        else:
            return steps

    return _on_condition_that