code: func (idx *AddrIndex) TxRegionsForAddress(dbTx database.Tx, addr btcutil.Address, numToSkip, numRequested uint32, reverse bool) ([]database.BlockRegion, uint32, error) {
  	addrKey, err := addrToKey(addr)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	var regions []database.BlockRegion
  	var skipped uint32
  	err = idx.db.View(func(dbTx database.Tx) error {
  		// Create closure to lookup the block hash given the ID using
  		// the database transaction.
  		fetchBlockHash := func(id []byte) (*chainhash.Hash, error) {
  			// Deserialize and populate the result.
  			return dbFetchBlockHashBySerializedID(dbTx, id)
  		}
  
  		var err error
  		addrIdxBucket := dbTx.Metadata().Bucket(addrIndexKey)
  		regions, skipped, err = dbFetchAddrIndexEntries(addrIdxBucket,
  			addrKey, numToSkip, numRequested, reverse,
  			fetchBlockHash)
  		return err
  	})
  
  	return regions, skipped, err
  }
docs: // TxRegionsForAddress returns a slice of block regions which identify each
  // transaction that involves the passed address according to the specified
  // number to skip, number requested, and whether or not the results should be
  // reversed.  It also returns the number actually skipped since it could be less
  // in the case where there are not enough entries.
  //
  // NOTE: These results only include transactions confirmed in blocks.  See the
  // UnconfirmedTxnsForAddress method for obtaining unconfirmed transactions
  // that involve a given address.
  //
  // This function is safe for concurrent access.