public static void LogAndThrow <TEx>(this ILogger logger, LoggerSeverity sev, string message, object objectRef = null)
            where TEx : Exception
        {
            if (!sev.HasFlag(LoggerSeverity.Error))
            {
                sev |= LoggerSeverity.Error;
            }

            logger?.Log(message, sev, objectRef);
            throw new HereticException(typeof(TEx).Initialize <TEx>(message), message, sev, objectRef);
        }
        public HereticException(Exception inner, string message, LoggerSeverity severity = LoggerSeverity.Error, object cause = null)
            : base(message, inner)
        {
            if (!severity.HasFlag(LoggerSeverity.Error))
            {
                severity |= LoggerSeverity.Error;
            }

            Cause    = cause;
            Severity = severity;
        }