code: @Override
      public Set<IPersonAttributes> getPeopleWithMultivaluedAttributes(final Map<String, List<Object>> query,
                                                                       final IPersonAttributeDaoFilter filter) {
          final Map<String, List<Object>> formattedAttributes = new LinkedHashMap<>();
  
          for (final FormatAttribute formatAttribute : this.formatAttributes) {
              final String format = formatAttribute.getFormat();
              final List<String> sourceAttributes = formatAttribute.getSourceAttributes();
  
              //If the query doesn't contain all source attributes skip the formats
              if (!query.keySet().containsAll(sourceAttributes)) {
                  this.logger.debug("Query does not contain all source attributes, skipping FormatAttribute " + formatAttribute);
                  continue;
              }
  
              //Add attribute values to list
              final List<Object> sourceValues = new ArrayList<>(sourceAttributes.size());
              for (final String sourceAttribute : sourceAttributes) {
                  final List<Object> values = query.get(sourceAttribute);
                  sourceValues.add(values == null || values.size() == 0 ? null : values.get(0));
              }
  
              //Format the attribute
              final String formattedAttribute = MessageFormat.format(format, sourceValues.toArray());
  
              //Add formatted attribute under each name
              for (final String attributeName : formatAttribute.getAttributeNames()) {
                  formattedAttributes.put(attributeName, Collections.singletonList((Object) formattedAttribute));
              }
          }
  
          //If no attributes were formatted just return null
          if (formattedAttributes.size() == 0) {
              return null;
          }
  
          //Create the person attributes object to return
          final IPersonAttributes personAttributes;
          final IUsernameAttributeProvider usernameAttributeProvider = this.getUsernameAttributeProvider();
          final String usernameFromQuery = usernameAttributeProvider.getUsernameFromQuery(query);
          if (usernameFromQuery != null) {
              personAttributes = new NamedPersonImpl(usernameFromQuery, formattedAttributes);
          } else {
              final String usernameAttribute = usernameAttributeProvider.getUsernameAttribute();
              personAttributes = new AttributeNamedPersonImpl(usernameAttribute, formattedAttributes);
          }
  
          return ImmutableSet.of(personAttributes);
      }
docs: /* (non-Javadoc)
  @see org.jasig.services.persondir.IPersonAttributeDao#getPeopleWithMultivaluedAttributes(java.util.Map)