public override Transaction UnmarshalTransaction()
        {
            Transaction transaction;

            if (!TransactionCache <string, Transaction> .Find(this.context.Identifier, out transaction))
            {
                transaction = this.wsatProxy.UnmarshalTransaction(this);
                new WsatExtendedInformation(this.context.Identifier, this.context.Expires).TryCache(transaction);
                WsatIncomingTransactionCache.Cache(this.context.Identifier, transaction);
            }
            return(transaction);
        }
        public override Transaction UnmarshalTransaction()
        {
            Transaction tx;

            if (WsatIncomingTransactionCache.Find(this.context.Identifier, out tx))
            {
                return(tx);
            }

            tx = this.wsatProxy.UnmarshalTransaction(this);

            // Cache extended information for subsequent marshal operations
            WsatExtendedInformation info = new WsatExtendedInformation(context.Identifier, context.Expires);

            info.TryCache(tx);

            // Cache the unmarshalled transaction for subsequent unmarshal operations
            WsatIncomingTransactionCache.Cache(this.context.Identifier, tx);

            return(tx);
        }