code: func (c *ARCCache) replace(b2ContainsKey bool) {
  	t1Len := c.t1.Len()
  	if t1Len > 0 && (t1Len > c.p || (t1Len == c.p && b2ContainsKey)) {
  		k, _, ok := c.t1.RemoveOldest()
  		if ok {
  			c.b1.Add(k, nil)
  		}
  	} else {
  		k, _, ok := c.t2.RemoveOldest()
  		if ok {
  			c.b2.Add(k, nil)
  		}
  	}
  }
docs: // replace is used to adaptively evict from either T1 or T2
  // based on the current learned value of P