code: func (c *MemoryTokenCache) PutToken(key *CacheKey, tok *Token) error {
  	k := key.ToMapKey()
  	c.lock.Lock()
  	if c.cache == nil {
  		c.cache = make(map[string]Token, 1)
  	}
  	c.cache[k] = *tok
  	c.lock.Unlock()
  	return nil
  }
docs: // PutToken writes the token to cache.