@Override
    public Collection<String> render(final Map<String, Object> attributes) {
        val formattedAttributes = new ArrayList<String>(attributes.size());
        LOGGER.trace("Beginning to format/render attributes for the response");
        attributes.forEach((attributeName, v) -> {
            val values = CollectionUtils.toCollection(v);
            values.forEach(value -> {
                val name = CasProtocolAttributesRenderer.sanitizeAttributeName(attributeName);
                val fmt = buildSingleAttributeDefinitionLine(name, value);
                LOGGER.trace("Formatted attribute for the response: [{}]", fmt);
                formattedAttributes.add(fmt);
            });
        });
        return formattedAttributes;
    }
This is {@link DefaultCas30ProtocolAttributesRenderer}.

@author Misagh Moayyed
@since 5.3.0
support/cas-server-support-validation-core/src/main/java/org/apereo/cas/web/view/attributes/DefaultCas30ProtocolAttributesRenderer.java