protected Collection<MultifactorAuthenticationProvider> getSatisfiedAuthenticationProviders(
        final Authentication authentication,
        final Collection<MultifactorAuthenticationProvider> providers) {
        val contexts = CollectionUtils.toCollection(authentication.getAttributes().get(this.authenticationContextAttribute));
        LOGGER.debug("Available authentication context(s) are [{}]", contexts);

        return providers
            .stream()
            .map(provider -> {
                if (provider instanceof final ChainingMultifactorAuthenticationProvider chain) {
                    return chain.getMultifactorAuthenticationProviders();
                }
                return List.of(provider);
            })
            .flatMap(Collection::stream)
            .sorted(Comparator.comparing(MultifactorAuthenticationProvider::getOrder))
            .filter(provider -> contexts.contains(provider.getId()))
            .collect(Collectors.toCollection(LinkedHashSet::new));
    }
{@inheritDoc}
If the authentication event is established as part trusted/device browser
such that MFA was skipped, allow for validation to execute successfully.
If authentication event did bypass MFA, allow for validation to execute successfully.

@param authentication   the authentication
@param requestedContext the requested context
@param service          the service
@return validation result
core/cas-server-core-authentication-mfa-api/src/main/java/org/apereo/cas/authentication/DefaultMultifactorAuthenticationContextValidator.java