code: func (t *PrimaryTree) Seek(k string) (e *PrimaryEnumerator, ok bool) {
  	q := t.r
  	if q == nil {
  		e = btEPool1.get(nil, false, 0, k, nil, t, atomic.LoadUint64(&t.ver))
  		return
  	}
  
  	for {
  		var i int
  		if i, ok = t.find(q, k); ok {
  			switch x := q.(type) {
  			case *x1:
  				q = x.x[i+1].ch
  				continue
  			case *d1:
  				return btEPool1.get(nil, ok, i, k, x, t, atomic.LoadUint64(&t.ver)), true
  			}
  		}
  
  		switch x := q.(type) {
  		case *x1:
  			q = x.x[i].ch
  		case *d1:
  			return btEPool1.get(nil, ok, i, k, x, t, atomic.LoadUint64(&t.ver)), false
  		}
  	}
  }
docs: // Seek returns an PrimaryEnumerator positioned on an item such that k >= item's key.
  // ok reports if k == item.key The PrimaryEnumerator's position is possibly after the
  // last item in the tree.