code: func NewJWKClientWithCache(options JWKClientOptions, extractor RequestTokenExtractor, keyCacher KeyCacher) *JWKClient {
  	if extractor == nil {
  		extractor = RequestTokenExtractorFunc(FromHeader)
  	}
  	if keyCacher == nil {
  		keyCacher = newMemoryPersistentKeyCacher()
  	}
  	if options.Client == nil {
  		options.Client = http.DefaultClient
  	}
  
  	return &JWKClient{
  		keyCacher: keyCacher,
  		options:   options,
  		extractor: extractor,
  	}
  }
docs: // NewJWKClientWithCache creates a new JWKClient instance from the
  // provided options and a custom keycacher interface.
  // Passing nil to keyCacher will create a persistent key cacher