code: func (iter *Iter) current() (noder.Path, error) {
  	if topFrame, ok := iter.top(); !ok {
  		return nil, io.EOF
  	} else if _, ok := topFrame.First(); !ok {
  		return nil, io.EOF
  	}
  
  	ret := make(noder.Path, 0, len(iter.base)+len(iter.frameStack))
  
  	// concat the base...
  	ret = append(ret, iter.base...)
  	// ... and the current node and all its ancestors
  	for i, f := range iter.frameStack {
  		t, ok := f.First()
  		if !ok {
  			panic(fmt.Sprintf("frame %d is empty", i))
  		}
  		ret = append(ret, t)
  	}
  
  	return ret, nil
  }
docs: // Returns the path to the current node, adding the base if there was
  // one, and a nil error.  If there were no noders left, it returns nil
  // and io.EOF.  If an error occurred, it returns nil and the error.