/// <summary>
        ///
        /// </summary>
        /// <param name="value"></param>
        private void InstallEntryHooks(TKey key, TValue value)
        {
            if (TypeIsUpdateSerializable && value != null)
            {
                Action <ModificationEventArgs> callback = (e) =>
                {
                    _modifiedEntries.Add(key);
                    RaiseModifiedEvent(e);
                };

                _entryValueModifiedCallbacks.Add(key, callback);

                INotifyModified notifyModified = value as INotifyModified;
                notifyModified.Modified += callback;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        private void UninstallEntryHooks(TKey key, TValue value)
        {
            if (TypeIsUpdateSerializable && value != null)
            {
                Action <ModificationEventArgs> callback;

                if (!_entryValueModifiedCallbacks.TryGetValue(key, out callback))
                {
                    throw new Exception("Cannot find entry callback.");
                }

                _entryValueModifiedCallbacks.Remove(key);

                INotifyModified notifyModified = value as INotifyModified;
                notifyModified.Modified -= callback;
            }
        }