@Override
    public ConditionOutcome getMatchOutcome(final ConditionContext context,
                                            final AnnotatedTypeMetadata metadata) {
        val attributes = metadata.getAnnotationAttributes(ConditionalOnFeatureEnabled.class.getName());
        if (attributes == null) {
            val conditions = (AnnotationAttributes[]) metadata.getAnnotationAttributes(
                ConditionalOnFeaturesEnabled.class.getName()).get("value");
            val builder = new StringBuilder();
            val match = Arrays.stream(conditions).allMatch(annotation -> {
                val feature = (CasFeatureModule.FeatureCatalog[]) annotation.get("feature");
                val module = annotation.getString("module");
                val enabledByDefault = annotation.getBoolean("enabledByDefault");
                val conditionOutcome = getConditionOutcome(context, feature, module, enabledByDefault);
                builder.append(conditionOutcome.getMessage()).append(' ');
                return conditionOutcome.isMatch();
            });
            return match ? ConditionOutcome.match(builder.toString()) : ConditionOutcome.noMatch(builder.toString());
        }
        return evaluateFeatureCondition(context, attributes);
    }
This is {@link CasFeatureEnabledCondition}.

@author Misagh Moayyed
@since 6.5.0
core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/spring/boot/CasFeatureEnabledCondition.java