code: func (it *ENSRegistryNewTTLIterator) Next() bool {
  	// If the iterator failed, stop iterating
  	if it.fail != nil {
  		return false
  	}
  	// If the iterator completed, deliver directly whatever's available
  	if it.done {
  		select {
  		case log := <-it.logs:
  			it.Event = new(ENSRegistryNewTTL)
  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  				it.fail = err
  				return false
  			}
  			it.Event.Raw = log
  			return true
  
  		default:
  			return false
  		}
  	}
  	// Iterator still in progress, wait for either a data or an error event
  	select {
  	case log := <-it.logs:
  		it.Event = new(ENSRegistryNewTTL)
  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  			it.fail = err
  			return false
  		}
  		it.Event.Raw = log
  		return true
  
  	case err := <-it.sub.Err():
  		it.done = true
  		it.fail = err
  		return it.Next()
  	}
  }
docs: // Next advances the iterator to the subsequent event, returning whether there
  // are any more events found. In case of a retrieval or parsing error, false is
  // returned and Error() can be queried for the exact failure.