{'oneof': [
                {'type': 'callable'},
                {'type': 'list',
                 'schema': {'oneof': [{'type': 'callable'},
                                      {'type': 'string'}]}},
                {'type': 'string'}
                ]}

def _validate_check_with(self, checks, field, value):
        """ {'oneof': [
                {'type': 'callable'},
                {'type': 'list',
                 'schema': {'oneof': [{'type': 'callable'},
                                      {'type': 'string'}]}},
                {'type': 'string'}
                ]} """
        if isinstance(checks, _str_type):
            try:
                value_checker = self.__get_rule_handler('check_with', checks)
            # TODO remove on next major release
            except RuntimeError:
                value_checker = self.__get_rule_handler('validator', checks)
                warn(
                    "The 'validator' rule was renamed to 'check_with'. Please update "
                    "your schema and method names accordingly.",
                    DeprecationWarning,
                )
            value_checker(field, value)
        elif isinstance(checks, Iterable):
            for v in checks:
                self._validate_check_with(v, field, value)
        else:
            checks(field, value, self._error)