@Override
    public Map<String, List<Object>> fetchAttributes(final RegisteredService registeredService,
                                                     final RegisteredServicePrincipalAttributesRepository repository,
                                                     final Principal principal) {
        return lock.tryLock(() -> {
            val cache = getRegisteredServiceCacheInstance(registeredService, repository);
            return cache.get(principal.getId(), __ -> {
                LOGGER.debug("No cached attributes could be found for [{}]", principal.getId());
                return new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
            });
        });
    }
This is {@link DefaultPrincipalAttributesRepositoryCache}.

@author Misagh Moayyed
@since 6.1.0
core/cas-server-core-authentication-attributes/src/main/java/org/apereo/cas/authentication/principal/cache/DefaultPrincipalAttributesRepositoryCache.java