code: func (w *wallet) Accounts() []accounts.Account {
  	// Attempt self-derivation if it's running
  	reqc := make(chan struct{}, 1)
  	select {
  	case w.deriveReq <- reqc:
  		// Self-derivation request accepted, wait for it
  		<-reqc
  	default:
  		// Self-derivation offline, throttled or busy, skip
  	}
  	// Return whatever account list we ended up with
  	w.stateLock.RLock()
  	defer w.stateLock.RUnlock()
  
  	cpy := make([]accounts.Account, len(w.accounts))
  	copy(cpy, w.accounts)
  	return cpy
  }
docs: // Accounts implements accounts.Wallet, returning the list of accounts pinned to
  // the USB hardware wallet. If self-derivation was enabled, the account list is
  // periodically expanded based on current chain state.