code: func (it *insertIterator) next() (*types.Block, error) {
  	// If we reached the end of the chain, abort
  	if it.index+1 >= len(it.chain) {
  		it.index = len(it.chain)
  		return nil, nil
  	}
  	// Advance the iterator and wait for verification result if not yet done
  	it.index++
  	if len(it.errors) <= it.index {
  		it.errors = append(it.errors, <-it.results)
  	}
  	if it.errors[it.index] != nil {
  		return it.chain[it.index], it.errors[it.index]
  	}
  	// Block header valid, run body validation and return
  	return it.chain[it.index], it.validator.ValidateBody(it.chain[it.index])
  }
docs: // next returns the next block in the iterator, along with any potential validation
  // error for that block. When the end is reached, it will return (nil, nil).