docs: protected void configureSamlClient(final Collection<BaseClient> properties) {
          val index = new AtomicInteger();
          pac4jProperties.getSaml()
              .stream()
              .filter(saml -> StringUtils.isNotBlank(saml.getKeystorePath())
                  && StringUtils.isNotBlank(saml.getIdentityProviderMetadataPath())
                  && StringUtils.isNotBlank(saml.getServiceProviderEntityId())
                  && StringUtils.isNotBlank(saml.getServiceProviderMetadataPath()))
              .forEach(saml -> {
                  val cfg = new SAML2Configuration(saml.getKeystorePath(),
                      saml.getKeystorePassword(),
                      saml.getPrivateKeyPassword(), saml.getIdentityProviderMetadataPath());
                  cfg.setMaximumAuthenticationLifetime(saml.getMaximumAuthenticationLifetime());
                  cfg.setServiceProviderEntityId(saml.getServiceProviderEntityId());
                  cfg.setServiceProviderMetadataPath(saml.getServiceProviderMetadataPath());
                  cfg.setAuthnRequestBindingType(saml.getDestinationBinding());
                  cfg.setForceAuth(saml.isForceAuth());
                  cfg.setPassive(saml.isPassive());
                  cfg.setSignMetadata(saml.isSignServiceProviderMetadata());
  
                  if (StringUtils.isNotBlank(saml.getPrincipalIdAttribute())) {
                      cfg.setAttributeAsId(saml.getPrincipalIdAttribute());
                  }
                  cfg.setWantsAssertionsSigned(saml.isWantsAssertionsSigned());
                  cfg.setLogoutHandler(casServerSpecificLogoutHandler);
                  cfg.setUseNameQualifier(saml.isUseNameQualifier());
                  cfg.setAttributeConsumingServiceIndex(saml.getAttributeConsumingServiceIndex());
                  if (saml.getAssertionConsumerServiceIndex() >= 0) {
                      cfg.setAssertionConsumerServiceIndex(saml.getAssertionConsumerServiceIndex());
                  }
                  if (StringUtils.isNotBlank(saml.getAuthnContextClassRef())) {
                      cfg.setComparisonType(saml.getAuthnContextComparisonType().toUpperCase());
                      cfg.setAuthnContextClassRef(saml.getAuthnContextClassRef());
                  }
                  if (StringUtils.isNotBlank(saml.getKeystoreAlias())) {
                      cfg.setKeystoreAlias(saml.getKeystoreAlias());
                  }
                  if (StringUtils.isNotBlank(saml.getNameIdPolicyFormat())) {
                      cfg.setNameIdPolicyFormat(saml.getNameIdPolicyFormat());
                  }
  
                  if (!saml.getRequestedAttributes().isEmpty()) {
                      saml.getRequestedAttributes().stream()
                          .map(attribute -> new SAML2ServiceProvicerRequestedAttribute(attribute.getName(), attribute.getFriendlyName(),
                              attribute.getNameFormat(), attribute.isRequired()))
                          .forEach(attribute -> cfg.getRequestedServiceProviderAttributes().add(attribute));
                  }
  
                  val mappedAttributes = saml.getMappedAttributes();
                  if (!mappedAttributes.isEmpty()) {
                      val results = mappedAttributes
                          .stream()
                          .collect(Collectors.toMap(Pac4jSamlClientProperties.ServiceProviderMappedAttribute::getName,
                              Pac4jSamlClientProperties.ServiceProviderMappedAttribute::getMappedTo));
                      cfg.setMappedAttributes(results);
                  }
  
                  val client = new SAML2Client(cfg);
  
                  val count = index.intValue();
                  if (StringUtils.isBlank(saml.getClientName())) {
                      client.setName(client.getClass().getSimpleName() + count);
                  }
                  configureClient(client, saml);
  
                  index.incrementAndGet();
                  LOGGER.debug("Created delegated client [{}]", client);
                  properties.add(client);
              });
      }