docs: public AttributeStatement newAttributeStatement(final Subject subject,
                                                      final Map<String, Object> attributes,
                                                      final String attributeNamespace) {
  
          val attrStatement = newSamlObject(AttributeStatement.class);
          attrStatement.setSubject(subject);
          for (val e : attributes.entrySet()) {
              if (e.getValue() instanceof Collection<?> && ((Collection<?>) e.getValue()).isEmpty()) {
                  LOGGER.info("Skipping attribute [{}] because it does not have any values.", e.getKey());
                  continue;
              }
              val attribute = newSamlObject(Attribute.class);
              attribute.setAttributeName(e.getKey());
  
              if (StringUtils.isNotBlank(attributeNamespace)) {
                  attribute.setAttributeNamespace(attributeNamespace);
              }
  
              addAttributeValuesToSaml1Attribute(e.getKey(), e.getValue(), attribute.getAttributeValues());
              attrStatement.getAttributes().add(attribute);
          }
  
          return attrStatement;
      }