code: func (t *Tracker) ReplaceChild(oldChild, newChild *Tracker) {
  	if newChild == nil {
  		t.remove(oldChild)
  		return
  	}
  
  	newConsumed := newChild.BytesConsumed()
  	newChild.parent = t
  
  	t.mu.Lock()
  	for i, child := range t.mu.children {
  		if child != oldChild {
  			continue
  		}
  
  		newConsumed -= oldChild.BytesConsumed()
  		oldChild.parent = nil
  		t.mu.children[i] = newChild
  		break
  	}
  	t.mu.Unlock()
  
  	t.Consume(newConsumed)
  }
docs: // ReplaceChild removes the old child specified in "oldChild" and add a new
  // child specified in "newChild". old child's memory consumption will be
  // removed and new child's memory consumption will be added.