code: func (b *LRUCache) SetNow(key string, value interface{}, expire time.Time, now time.Time) {
  	b.lock.Lock()
  	defer b.lock.Unlock()
  
  	var used bool
  
  	e := b.table[key]
  	if e != nil {
  		used = true
  	} else {
  		e, used = b.freeSomeEntry(now)
  		if e == nil {
  			return
  		}
  	}
  	if used {
  		b.removeEntry(e)
  	}
  
  	e.key = key
  	e.value = value
  	e.expire = expire
  	b.insertEntry(e)
  }
docs: // SetNow adds an item to the cache overwriting existing one if it
  // exists. Allows specifing current time required to expire an item
  // when no more slots are used. O(log(n)) if expiry is set, O(1) when
  // clear.