code: @Override
      public final Set<IPersonAttributes> getPeopleWithMultivaluedAttributes(final Map<String, List<Object>> query,
                                                                             final IPersonAttributeDaoFilter filter) {
          Validate.notNull(query, "query may not be null.");
  
          //Generate the query to pass to the subclass
          final QB queryBuilder = this.generateQuery(query);
          if (queryBuilder == null && (this.queryAttributeMapping != null || this.useAllQueryAttributes == true)) {
              this.logger.debug("No queryBuilder was generated for query " + query + ", null will be returned");
  
              return null;
          }
  
          //Get the username from the query, if specified
          final IUsernameAttributeProvider usernameAttributeProvider = this.getUsernameAttributeProvider();
          final String username = usernameAttributeProvider.getUsernameFromQuery(query);
  
          //Execute the query in the subclass
          final List<IPersonAttributes> unmappedPeople = this.getPeopleForQuery(queryBuilder, username);
          if (unmappedPeople == null) {
              return null;
          }
  
          //Map the attributes of the found people according to resultAttributeMapping if it is set
          final Set<IPersonAttributes> mappedPeople = new LinkedHashSet<>();
          for (final IPersonAttributes unmappedPerson : unmappedPeople) {
              final IPersonAttributes mappedPerson = this.mapPersonAttributes(unmappedPerson);
              mappedPeople.add(mappedPerson);
          }
  
          return Collections.unmodifiableSet(mappedPeople);
      }
docs: /* (non-Javadoc)
  @see org.jasig.services.persondir.IPersonAttributeDao#getPeopleWithMultivaluedAttributes(java.util.Map)