private static <T> Predicate<T> distinctByKey(final Function<? super T, Object> keyExtractor) {
        val seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }
This logout manager handles the Single Log Out process.

@author Jerome Leleu
@since 4.0.0
core/cas-server-core-logout-api/src/main/java/org/apereo/cas/logout/DefaultLogoutManager.java