anchor.diff:  ----
   @Component
   public class TenantJWSKeySelector
  -    implements JWTClaimSetAwareJWSKeySelector<SecurityContext> {
  +    implements JWTClaimsSetAwareJWSKeySelector<SecurityContext> {
   
   	private final TenantRepository tenants; <1>
   	private final Map<String, JWSKeySelector<SecurityContext>> selectors = new ConcurrentHashMap<>(); <2>
  
positive.code: [source,kotlin,role="secondary"]
  ----
  @Component
  class TenantJWSKeySelector(tenants: TenantRepository) : JWTClaimSetAwareJWSKeySelector<SecurityContext> {
      private val tenants: TenantRepository <1>
      private val selectors: MutableMap<String, JWSKeySelector<SecurityContext>> = ConcurrentHashMap() <2>
  
  
negative.code: 
  You may have observed that this strategy, while simple, comes with the trade-off that the JWT is parsed once by the `AuthenticationManagerResolver` and then again by the <<oauth2resourceserver-jwt-architecture-jwtdecoder,`JwtDecoder`>> later on in the request.
  
  This extra parsing can be alleviated by configuring the <<oauth2resourceserver-jwt-architecture-jwtdecoder,`JwtDecoder`>> directly with a `JWTClaimsSetAwareJWSKeySelector` from Nimbus:
  
  ====
  .Java
  