private static Map<String, List<Object>> mapSimpleSingleAttributeDefinition(final AttributeMappingRequest request) {
        val attributesToRelease = new TreeMap<String, List<Object>>(String.CASE_INSENSITIVE_ORDER);
        if (request.getAttributeValue() != null && !request.getAttributeValue().isEmpty()) {
            LOGGER.debug("Found attribute [{}] in the list of allowed attributes, mapped to the name [{}]",
                request.getAttributeName(), request.getMappedAttributeName());
            val values = CollectionUtils.toCollection(request.getAttributeValue(), ArrayList.class);
            attributesToRelease.put(request.getMappedAttributeName(), values);
        } else if (request.getResolvedAttributes().containsKey(request.getMappedAttributeName())) {
            val mappedValue = request.getResolvedAttributes().get(request.getMappedAttributeName());
            LOGGER.debug("Reusing existing already-remapped attribute [{}] with value [{}]", request.getMappedAttributeName(), mappedValue);
            attributesToRelease.put(request.getMappedAttributeName(), mappedValue);
        } else {
            LOGGER.warn("Could not find value for mapped attribute [{}] that is based off of [{}] in the allowed attributes list. "
                        + "Ensure the original attribute [{}] is retrieved and contains at least a single value. Attribute [{}] "
                        + "will and can not be released without the presence of a value.",
                request.getMappedAttributeName(), request.getAttributeName(),
                request.getAttributeName(), request.getMappedAttributeName());
        }
        return attributesToRelease;
    }
This is {@link DefaultPrincipalAttributesMapper}.

@author Misagh Moayyed
@since 6.6.0
core/cas-server-core-authentication-attributes/src/main/java/org/apereo/cas/authentication/DefaultPrincipalAttributesMapper.java