code: func (cb *Chequebook) deposit(amount *big.Int) (string, error) {
  	// since the amount is variable here, we do not use sessions
  	depositTransactor := bind.NewKeyedTransactor(cb.prvKey)
  	depositTransactor.Value = amount
  	chbookRaw := &contract.ChequebookRaw{Contract: cb.contract}
  	tx, err := chbookRaw.Transfer(depositTransactor)
  	if err != nil {
  		cb.log.Warn("Failed to fund chequebook", "amount", amount, "balance", cb.balance, "target", cb.buffer, "err", err)
  		return "", err
  	}
  	// assume that transaction is actually successful, we add the amount to balance right away
  	cb.balance.Add(cb.balance, amount)
  	cb.log.Trace("Deposited funds to chequebook", "amount", amount, "balance", cb.balance, "target", cb.buffer)
  	return tx.Hash().Hex(), nil
  }
docs: // deposit deposits amount to the chequebook account.
  // The caller must hold lock.