class DefaultOAuthJwtAccessTokenValidator implements OAuthJwtAccessTokenValidator {

    public DefaultOAuthJwtAccessTokenValidator(String trustedIssuer, Set<String> requiredAudiences, Set<String> requiredScopes, Map<String, Set<String>> authorizedClientIds) {

        // args checking
        if (trustedIssuer == null || trustedIssuer.isEmpty()) {
            throw new IllegalArgumentException("trusted issuers must be configured");
        }
        if (requiredAudiences == null || requiredAudiences.isEmpty()) {
            throw new IllegalArgumentException("required audiences must be configured");
        }
        if (requiredScopes == null || requiredScopes.isEmpty()) {
            throw new IllegalArgumentException("required scopes must be configured");
        }
        if (authorizedClientIds == null) {
            throw new IllegalArgumentException("client ID mapping must be configured");
        }

        this.trustedIssuer = trustedIssuer;
        this.requiredAudiences = requiredAudiences;
        this.requiredScopes = requiredScopes;
        this.authorizedClientIds = authorizedClientIds;
    }

    public  DefaultOAuthJwtAccessTokenValidator(String trustedIssuer, Set<String> requiredAudiences, Set<String> requiredScopes, Map<String, Set<String>> authorizedClientIds);

}