def METHOD_NAME(values):
    nonlocal found
    if found:
        return True
    if isinstance(values, (str, int, bool, float)) or values is None:
        matches = match.regex_match(regex, str(values))
        if (condition == 'must' and matches is not None) or (condition == "must not" and matches is None):
            found = True
            return found
    elif isinstance(values, list):
        return any(map(METHOD_NAME, values))
    elif isinstance(values, dict):
        if not hasattr(_step_obj.context, 'address'):
            _step_obj.context.address = None
        _step_obj.context.address = values.get('address', _step_obj.context.address)
        if 'values' in values:
            return METHOD_NAME(values['values'])
        else:
            return any(map(METHOD_NAME, values.values()))
    return False