code: func (t *SecondaryTree) Delete(k RouteInfo) (ok bool) {
  	pi := -1
  	var p *x2
  	q := t.r
  	if q == nil {
  		return false
  	}
  
  	for {
  		var i int
  		i, ok = t.find(q, k)
  		if ok {
  			switch x := q.(type) {
  			case *x2:
  				if x.c < kx2 && q != t.r {
  					x, i = t.underflowX(p, x, pi, i)
  				}
  				pi = i + 1
  				p = x
  				q = x.x[pi].ch
  				ok = false
  				continue
  			case *d2:
  				t.extract(x, i)
  				if x.c >= kd2 {
  					return true
  				}
  
  				if q != t.r {
  					t.underflow(p, x, pi)
  				} else if t.c == 0 {
  					t.Clear()
  				}
  				return true
  			}
  		}
  
  		switch x := q.(type) {
  		case *x2:
  			if x.c < kx2 && q != t.r {
  				x, i = t.underflowX(p, x, pi, i)
  			}
  			pi = i
  			p = x
  			q = x.x[i].ch
  		case *d2:
  			return false
  		}
  	}
  }
docs: // Delete removes the k's KV pair, if it exists, in which case Delete returns
  // true.