code: func (c *MemoryTokenCache) GetToken(key *CacheKey) (*Token, error) {
  	k := key.ToMapKey()
  	c.lock.RLock()
  	tok, ok := c.cache[k]
  	c.lock.RUnlock()
  	if ok {
  		return &tok, nil
  	}
  	return nil, nil
  }
docs: // GetToken reads the token from cache.