docs: protected Map<String, List<Object>> collectAttributesForLdapEntry(final LdapEntry ldapEntry, final String username) {
          val attributeMap = Maps.<String, List<Object>>newHashMapWithExpectedSize(this.principalAttributeMap.size());
          LOGGER.debug("The following attributes are requested to be retrieved and mapped: [{}]", attributeMap.keySet());
          this.principalAttributeMap.forEach((key, attributeNames) -> {
              val attr = ldapEntry.getAttribute(key);
              if (attr != null) {
                  LOGGER.debug("Found principal attribute: [{}]", attr);
                  val names = (Collection<String>) attributeNames;
                  if (names.isEmpty()) {
                      LOGGER.debug("Principal attribute [{}] is collected as [{}]", attr, key);
                      attributeMap.put(key, CollectionUtils.wrap(attr.getStringValues()));
                  } else {
                      names.forEach(s -> {
                          LOGGER.debug("Principal attribute [{}] is virtually remapped/renamed to [{}]", attr, s);
                          attributeMap.put(s, CollectionUtils.wrap(attr.getStringValues()));
                      });
                  }
              } else {
                  LOGGER.warn("Requested LDAP attribute [{}] could not be found on the resolved LDAP entry for [{}]", key, ldapEntry.getDn());
              }
          });
          if (this.collectDnAttribute) {
              LOGGER.debug("Recording principal DN attribute as [{}]", this.principalDnAttributeName);
              attributeMap.put(this.principalDnAttributeName, CollectionUtils.wrapList(ldapEntry.getDn()));
          }
          return attributeMap;
      }