public override IKeyedTransaction CreateKeyedTransaction(IDehydratedTransaction dehydratedTransaction)
        {
            ITransaction transaction = this.CreateTransaction(dehydratedTransaction);

            if (transaction is IKeyedTransaction keyedTransaction)
            {
                return(keyedTransaction);
            }

            throw new ApplicationException("Created transaction is not keyed.");
        }
        public override ITransaction CreateTransaction(IDehydratedTransaction dehydratedTransaction)
        {
            IDataRehydrator rehydrator = DataSerializationFactory.CreateRehydrator(dehydratedTransaction.Header);

            var version = new ComponentVersion <TransactionType>();

            version.Rehydrate(rehydrator);

            rehydrator.Rewind2Start();

            return(this.CreateTransation(version));
        }