code: func (c *IterateChain) Count() (int64, error) {
  	c.start()
  	defer c.end()
  	if err := c.it.Err(); err != nil {
  		return 0, err
  	}
  	if size, exact := c.it.Size(); exact {
  		return size, nil
  	}
  	done := c.ctx.Done()
  	var cnt int64
  iteration:
  	for c.next() {
  		select {
  		case <-done:
  			break iteration
  		default:
  		}
  		cnt++
  		for c.nextPath() {
  			select {
  			case <-done:
  				break iteration
  			default:
  			}
  			cnt++
  		}
  	}
  	return cnt, c.it.Err()
  }
docs: // All will return all results of an iterator.