code: func (c *IterateChain) Send(out chan<- Value) error {
  	c.start()
  	defer c.end()
  	done := c.ctx.Done()
  	for c.next() {
  		select {
  		case <-done:
  			return c.ctx.Err()
  		case out <- c.it.Result():
  		}
  		for c.nextPath() {
  			select {
  			case <-done:
  				return c.ctx.Err()
  			case out <- c.it.Result():
  			}
  		}
  	}
  	return c.it.Err()
  }
docs: // Send will send each result of the iterator to the provided channel.
  //
  // Channel will NOT be closed when function returns.