code: func (n *wrsNode) choose(val int64) (wrsItem, int64) {
  	for i, w := range n.weights {
  		if val < w {
  			if n.level == 0 {
  				return n.items[i].(wrsItem), n.weights[i]
  			}
  			return n.items[i].(*wrsNode).choose(val)
  		}
  		val -= w
  	}
  	panic(nil)
  }
docs: // choose recursively selects an item from the tree and returns it along with its weight