code: func (c *Cache) Add(key string, value interface{}) {
  	if !c.nolock {
  		c.mu.Lock()
  		defer c.mu.Unlock()
  	}
  
  	// Already in cache?
  	if ee, ok := c.cache[key]; ok {
  		c.ll.MoveToFront(ee)
  		ee.Value.(*entry).value = value
  		return
  	}
  
  	// Add to cache if not present
  	ele := c.ll.PushFront(&entry{key, value})
  	c.cache[key] = ele
  
  	if c.maxEntries > 0 && c.ll.Len() > c.maxEntries {
  		c.removeOldest()
  	}
  }
docs: // Add adds the provided key and value to the cache, evicting
  // an old item if necessary.