public static async Task <List <Bundle> > FindByAreaCodeAsync(this IIotaRepository repository, IotaAreaCode areaCode)
        {
            var result = await repository.FindTransactionsByTagsAsync(new List <Tag> {
                new Tag(areaCode.Value)
            });

            if (!result.Hashes.Any())
            {
                return(new List <Bundle>());
            }

            var transactionTrytes = await repository.GetTrytesAsync(result.Hashes);

            var transactions = transactionTrytes.Select(t => Transaction.FromTrytes(t)).ToList();

            var bundles = new List <Bundle>();

            foreach (var transaction in transactions)
            {
                if (bundles.Any(b => b.Hash.Value == transaction.BundleHash.Value))
                {
                    bundles.First(b => b.Hash.Value == transaction.BundleHash.Value).Transactions.Add(transaction);
                }
                else
                {
                    var bundle = new Bundle();
                    bundle.Transactions.Add(transaction);

                    bundles.Add(bundle);
                }
            }

            bundles.ForEach(b => b.Transactions = b.Transactions.OrderBy(t => t.CurrentIndex).ToList());

            return(bundles);
        }