/// <summary>
        /// Returns the Deserialized Configuration
        /// </summary>
        /// <param name="config">The configuration node.</param>
        /// <returns>NHibernate Configuration</returns>
        public override Configuration GetConfiguration(IConfiguration config)
        {
            if (_Logger.IsDebugEnabled)
            {
                _Logger.Debug("Building the Configuration");
            }

            string         filename           = GetFilenameFrom(config);
            IList <string> dependentFilenames = GetDependentFilenamesFrom(config);

            Configuration cfg;

            if (configurationPersister.IsNewConfigurationRequired(filename, dependentFilenames))
            {
                if (_Logger.IsDebugEnabled)
                {
                    _Logger.Debug("Configuration is either old or some of the dependencies have changed");
                }
                cfg = base.GetConfiguration(config);
                configurationPersister.WriteConfiguration(filename, cfg);
            }
            else
            {
                cfg = configurationPersister.ReadConfiguration(filename);
            }
            return(cfg);
        }
        public override Configuration Deserialize()
        {
            var dependencies = new[]
            {
                Assembly.GetExecutingAssembly().Location
            };

            if (!_persister.IsNewConfigurationRequired(SerializedConfigFile, dependencies.ToList()))
            {
                return(_persister.ReadConfiguration(SerializedConfigFile));
            }

            return(null);
        }