def _validate_logical(self, rule, field, value):
        """ {'allowed': ('allof', 'anyof', 'noneof', 'oneof')} """
        if not isinstance(value, Sequence):
            self._error(field, errors.BAD_TYPE)
            return

        validator = self._get_child_validator(
            document_crumb=rule, allow_unknown=False,
            schema=self.target_validator.validation_rules)

        for constraints in value:
            _hash = (mapping_hash({'turing': constraints}),
                     mapping_hash(self.target_validator.types_mapping))
            if _hash in self.target_validator._valid_schemas:
                continue

            validator(constraints, normalize=False)
            if validator._errors:
                self._error(validator._errors)
            else:
                self.target_validator._valid_schemas.add(_hash)
{'allowed': ('allof', 'anyof', 'noneof', 'oneof')}