private static TransactionBuilder <Transaction> CreateV3Transaction(Test test, TransactionPermissionContract.TxPermissions txType)
        {
            var transactionBuilder = CreateV2Transaction(test, txType);

            transactionBuilder.WithData(test.Data);
            transactionBuilder.WithGasPrice(test.GasPrice);
            return(transactionBuilder);
        }
        private static TransactionBuilder <Transaction> CreateV1Transaction(Test test, TransactionPermissionContract.TxPermissions txType)
        {
            var transactionBuilder = Build.A.Transaction.WithData(null).WithSenderAddress(test.Sender);

            switch (txType)
            {
            case TransactionPermissionContract.TxPermissions.Call:
                transactionBuilder.WithData(Bytes.Zero32);
                transactionBuilder.To(test.To);
                break;

            case TransactionPermissionContract.TxPermissions.Create:
                transactionBuilder.WithInit(Bytes.Zero32);
                break;
            }

            return(transactionBuilder);
        }
        private static TransactionBuilder <Transaction> CreateV2Transaction(Test test, TransactionPermissionContract.TxPermissions txType)
        {
            var transactionBuilder = CreateV1Transaction(test, txType);

            transactionBuilder.To(test.To);

            switch (txType)
            {
            case TransactionPermissionContract.TxPermissions.Basic:
            {
                if (test.To == _contractAddress)
                {
                    transactionBuilder.To(Address.Zero);
                }

                break;
            }

            case TransactionPermissionContract.TxPermissions.Call:
                if (test.Number == 6 && test.To == GetPrivateKey(7).Address)
                {
                    transactionBuilder.To(_contractAddress);
                    test.Cache = true;
                }

                break;
            }

            transactionBuilder.WithValue(test.Value);
            return(transactionBuilder);
        }