bool ValidBundle_SingleItem(string transactionTrytes)
        {
            var tran         = new TransactionItem(transactionTrytes);
            var bundleHash   = tran.Bundle;
            var bundleTrytes = tran.GetBundleTrytes();
            var curl         = new Kerl();

            String trxTrytes = transactionTrytes.Substring(2187, 162);

            Assert.AreEqual(bundleTrytes, trxTrytes);

            // Absorb bundle hash + value + timestamp + lastIndex + currentIndex trytes.
            curl.Absorb(Utils.Converter.ToTrits(trxTrytes));

            int[] bundleFromTrxs = new int[243];
            curl.Squeeze(bundleFromTrxs);
            String bundleFromTxString = Utils.Converter.ToTrytes(bundleFromTrxs);

            // Check if bundle hash is the same as returned by tx object
            if (!bundleFromTxString.Equals(bundleHash))
            {
                throw new ArgumentException($"INVALID_BUNDLE_HASH_ERROR: Expected: {bundleFromTxString} but your bundle is {bundleHash}");
            }

            // Last tx in the bundle should have currentIndex === lastIndex
            //bundle.setLength(bundle.getTransactions().size());
            return(tran.CurrentIndex == tran.LastIndex);
        }