def _validate_excludes(self, excluded_fields, field, value):
        """ {'type': ('hashable', 'list'),
             'schema': {'type': 'hashable'}} """
        if isinstance(excluded_fields, Hashable):
            excluded_fields = [excluded_fields]

        # Mark the currently evaluated field as not required for now if it actually is.
        # One of the so marked will be needed to pass when required fields are checked.
        if self.schema[field].get('required', self.require_all):
            self._unrequired_by_excludes.add(field)

        for excluded_field in excluded_fields:
            if excluded_field in self.schema and self.schema[field].get(
                'required', self.require_all
            ):

                self._unrequired_by_excludes.add(excluded_field)

        if any(excluded_field in self.document for excluded_field in excluded_fields):
            exclusion_str = ', '.join(
                "'{0}'".format(field) for field in excluded_fields
            )
            self._error(field, errors.EXCLUDES_FIELD, exclusion_str)
{'type': ('hashable', 'list'),
             'schema': {'type': 'hashable'}}