code: JwkDefinitionHolder getDefinitionLoadIfNecessary(String keyId) {
  		JwkDefinitionHolder result = this.getDefinition(keyId);
  		if (result != null) {
  			return result;
  		}
  		synchronized (this.jwkDefinitions) {
  			result = this.getDefinition(keyId);
  			if (result != null) {
  				return result;
  			}
  			this.jwkDefinitions.clear();
  			for (URL jwkSetUrl : jwkSetUrls) {
  				this.jwkDefinitions.putAll(loadJwkDefinitions(jwkSetUrl));
  			}
  			return this.getDefinition(keyId);
  		}
  	}
docs: Returns the JWK definition matching the provided keyId (&quot;kid&quot;).
  If the JWK definition is not available in the internal cache then {@link #loadJwkDefinitions(URL)}
  will be called (to re-load the cache) and then followed-up with a second attempt to locate the JWK definition.
  
  @param keyId the Key ID (&quot;kid&quot;)
  @return the matching {@link JwkDefinition} or null if not found