code: func newTokenCache(cfg tokenCacheConfig) *tokenCache {
  	return &tokenCache{
  		cfg: cfg,
  		lc: layered.Cache{
  			ProcessLRUCache: cfg.ProcessLRUCache,
  			GlobalNamespace: globalCacheNamespace,
  			Marshal:         json.Marshal, // marshals *cachedToken
  			Unmarshal: func(blob []byte) (interface{}, error) {
  				out := &cachedToken{}
  				err := json.Unmarshal(blob, out)
  				return out, err
  			},
  		},
  	}
  }
docs: // newTokenCache configures tokenCache based on given parameters.