@Override
    protected List<PersonAttributes> getPeopleForQuery(final String seedValue, final String queryUserName) {
        if (seedValue != null && seedValue.contains(PersonAttributeDao.WILDCARD)) {
            val seedPattern = compilePattern(seedValue);
            val results = new ArrayList<PersonAttributes>();
            for (val attributesEntry : this.backingMap.entrySet()) {
                val attributesKey = attributesEntry.getKey();
                val keyMatcher = seedPattern.matcher(attributesKey);
                if (keyMatcher.matches()) {
                    val attributes = attributesEntry.getValue();
                    if (attributes != null) {
                        val person = createPerson(null, queryUserName, attributes);
                        results.add(person);
                    }
                }
            }
            if (results.isEmpty()) {
                return null;
            }
            return results;
        }
        val attributes = this.backingMap.get(seedValue);
        if (attributes == null) {
            return null;
        }

        val person = createPerson(seedValue, queryUserName, attributes);
        val list = new ArrayList<PersonAttributes>();
        list.add(person);
        return list;
    }
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