/// <summary>
            /// Invoked when a cache entry has been deleted.
            /// </summary>
            /// <param name="evt">
            /// The <see cref="CacheEventArgs"/> carrying the remove
            /// information.
            /// </param>
            public override void EntryDeleted(CacheEventArgs evt)
            {
                AbstractSessionModelManager modelManager = (AbstractSessionModelManager)m_modelManager;

                modelManager.SessionCache.RemoveCacheListener(this, EventFilter);

                SessionKey    key    = (SessionKey)evt.Key;
                SessionHolder holder = (SessionHolder)evt.OldValue;

                if (holder != null)
                {
                    holder.Model           = modelManager.Deserialize(holder.SerializedModel);
                    holder.Model.SessionId = key;
                    modelManager.SessionEndCallback.Invoke(key.SessionId,
                                                           new SessionStateStoreData(holder.Model, null, (int)holder.Timeout.TotalMinutes));
                }
                else
                {
                    modelManager.SessionEndCallback.Invoke(key.SessionId, new SessionStateStoreData(null, null, 0));
                }
            }