private PersonAttributes createPerson(final String seedValue, final String queryUserName,
                                          final Map<String, List<Object>> attributes) {
        val userNameAttribute = getConfiguredUserNameAttribute();
        if (isUserNameAttributeConfigured() && attributes.containsKey(userNameAttribute)) {
            return SimplePersonAttributes.fromAttribute(userNameAttribute, attributes);
        }
        if (queryUserName != null) {
            return new SimplePersonAttributes(queryUserName, attributes);
        }
        if (seedValue != null && userNameAttribute.equals(this.queryAttributeName)) {
            return new SimplePersonAttributes(seedValue, attributes);
        }
        return SimplePersonAttributes.fromAttribute(userNameAttribute, attributes);
    }
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