@Override
    public final Set<String> getPossibleUserAttributeNames(final PersonAttributeDaoFilter filter) {
        Set<String> attrNames = null;

        for (val currentDao : this.personAttributeDaos) {
            if (filter != null && !filter.choosePersonAttributeDao(currentDao)) {
                continue;
            }
            var handledException = false;
            Set<String> currentDaoAttrNames = null;
            try {
                currentDaoAttrNames = currentDao.getPossibleUserAttributeNames(filter);
                LOGGER.debug("Retrieved possible attribute names [{}] from [{}]", currentDaoAttrNames, currentDao);
            } catch (final Exception rte) {
                handledException = handledException || handleRuntimeException(currentDao, rte);
            }

            if (currentDaoAttrNames != null) {
                if (attrNames == null) {
                    attrNames = new LinkedHashSet<>();
                }
                attrNames = this.attributeMerger.mergePossibleUserAttributeNames(attrNames, currentDaoAttrNames);
            }

            if (this.stopOnSuccess && !handledException) {
                LOGGER.debug("Successfully retrieved possible user attributes from a child DAO and stopOnSuccess is true, stopping iteration of child DAOs");
                break;
            }
        }
        LOGGER.debug("Aggregated possible attribute names [{}]", attrNames);
        if (attrNames == null) {
            return null;
        }
        return Set.copyOf(attrNames);
    }
Merges the results of calling {@link PersonAttributeDao#getPossibleUserAttributeNames(PersonAttributeDaoFilter)} on each child dao using
the configured {@link AttributeMerger#mergePossibleUserAttributeNames(Set, Set)}. If all children return null
this method returns null as well. If any child does not return null this method will not return null.

@see PersonAttributeDao#getPossibleUserAttributeNames(PersonAttributeDaoFilter)
core/cas-server-core-authentication-api/src/main/java/org/apereo/cas/authentication/attribute/AbstractAggregatingDefaultQueryPersonAttributeDao.java