code: func (e *enumerator) Prev() (k uint64, v *Container, err error) {
  	if err = e.err; err != nil {
  		return 0, nil, err
  	}
  
  	if e.ver != e.t.ver {
  		f, _ := e.t.Seek(e.k)
  		*e = *f
  		f.Close()
  	}
  	if e.q == nil {
  		e.err, err = io.EOF, io.EOF
  		return 0, nil, err
  	}
  
  	if !e.hit {
  		// move to previous because Seek overshoots if there's no hit
  		if err = e.prev(); err != nil {
  			return 0, nil, err
  		}
  	}
  
  	if e.i >= e.q.c {
  		if err = e.prev(); err != nil {
  			return 0, nil, err
  		}
  	}
  
  	i := e.q.d[e.i]
  	k, v = i.k, i.v
  	e.k, e.hit = k, true
  	// Any error returned would be stashed in e.err, and would come up
  	// on the next call.
  	_ = e.prev()
  	return k, v, err
  }
docs: // Prev returns the currently enumerated item, if it exists and moves to the
  // previous item in the key collation order. If there is no item to return, err
  // == io.EOF is returned.