private boolean requiredAttributeFound(final String attributeName, final Map<String, Object> principalAttributes, final Map<String, Set<String>> requiredAttributes) { val values = requiredAttributes.get(attributeName); val availableValues = CollectionUtils.toCollection(principalAttributes.get(attributeName)); val pattern = RegexUtils.concatenate(values, this.caseInsensitive); LOGGER.debug("Checking [{}] against [{}] with pattern [{}] for attribute [{}]", values, availableValues, pattern, attributeName); if (pattern != RegexUtils.MATCH_NOTHING_PATTERN) { return availableValues.stream().map(Object::toString).anyMatch(pattern.asPredicate()); } return availableValues.stream().anyMatch(values::contains); } }