code: func deployChequebookLoop(opts *bind.TransactOpts, backend chequebook.Backend) (addr common.Address, err error) {
  	var tx *types.Transaction
  	for try := 0; try < chequebookDeployRetries; try++ {
  		if try > 0 {
  			time.Sleep(chequebookDeployDelay)
  		}
  		if _, tx, _, err = contract.DeployChequebook(opts, backend); err != nil {
  			log.Warn(fmt.Sprintf("can't send chequebook deploy tx (try %d): %v", try, err))
  			continue
  		}
  		if addr, err = bind.WaitDeployed(opts.Context, backend, tx); err != nil {
  			log.Warn(fmt.Sprintf("chequebook deploy error (try %d): %v", try, err))
  			continue
  		}
  		return addr, nil
  	}
  	return addr, err
  }
docs: // deployChequebookLoop repeatedly tries to deploy a chequebook.