public static ISecurityConfiguration Configure(Action<ConfigurationExpression> configurationExpression)
        {
            if (configurationExpression == null)
                throw new ArgumentNullException("configurationExpression");

            Reset();
            lock (LockObject)
            {
                var configuration = new SecurityConfiguration(configurationExpression);
                SecurityConfiguration.SetConfiguration(configuration);
                return SecurityConfiguration.Current;
            }
        }
        public static ISecurityConfiguration Configure(Action<ConfigurationExpression> configurationExpression)
        {
            if (configurationExpression == null)
                throw new ArgumentNullException("configurationExpression");

            Reset();

            Publish.ConfigurationEvent(() => "Configuring FluentSecurity.");

            lock (LockObject)
            {
                return Publish.ConfigurationEvent(() =>
                {
                    var configuration = new SecurityConfiguration(configurationExpression);
                    SecurityConfiguration.SetConfiguration(configuration);
                    return SecurityConfiguration.Current;
                }, config => "Finished configuring FluentSecurity.");
            }
        }