code: func (c *TwoQueueCache) Add(key, value interface{}) {
  	c.lock.Lock()
  	defer c.lock.Unlock()
  
  	// Check if the value is frequently used already,
  	// and just update the value
  	if c.frequent.Contains(key) {
  		c.frequent.Add(key, value)
  		return
  	}
  
  	// Check if the value is recently used, and promote
  	// the value into the frequent list
  	if c.recent.Contains(key) {
  		c.recent.Remove(key)
  		c.frequent.Add(key, value)
  		return
  	}
  
  	// If the value was recently evicted, add it to the
  	// frequently used list
  	if c.recentEvict.Contains(key) {
  		c.ensureSpace(true)
  		c.recentEvict.Remove(key)
  		c.frequent.Add(key, value)
  		return
  	}
  
  	// Add to the recently seen list
  	c.ensureSpace(false)
  	c.recent.Add(key, value)
  	return
  }
docs: // Add adds a value to the cache.