code: func (iter *Iter) drop() {
  	frame, ok := iter.top()
  	if !ok {
  		return
  	}
  
  	frame.Drop()
  	// if the frame is empty, remove it and its parent, recursively
  	if frame.Len() == 0 {
  		top := len(iter.frameStack) - 1
  		iter.frameStack[top] = nil
  		iter.frameStack = iter.frameStack[:top]
  		iter.drop()
  	}
  }
docs: // removes the current node if any, and all the frames that become empty as a
  // consequence of this action.