public void setBackingMap(final Map<String, Map<String, List<Object>>> backingMap) {
        this.backingMap = new LinkedHashMap<>(backingMap);
        possibleUserAttributeNames = backingMap.values().stream().map(Map::keySet)
            .flatMap(Collection::stream).collect(Collectors.toCollection(LinkedHashSet::new));
    }
The backing Map to use for queries, the outer map is keyed on the query attribute. The inner
Map is the set of user attributes to be returned for the query attribute.

@param backingMap backing map
core/cas-server-core-authentication-api/src/main/java/org/apereo/cas/authentication/attribute/ComplexPersonAttributeDao.java