/// <summary>
        /// Creates a new recoverability configuration.
        /// </summary>
        /// <param name="immediateConfig">The immediate retries configuration.</param>
        /// <param name="delayedConfig">The delayed retries configuration.</param>
        /// <param name="failedConfig">The failed retries configuration.</param>
        public RecoverabilityConfig(ImmediateConfig immediateConfig, DelayedConfig delayedConfig, FailedConfig failedConfig)
        {
            Guard.AgainstNull(nameof(immediateConfig), immediateConfig);
            Guard.AgainstNull(nameof(delayedConfig), delayedConfig);
            Guard.AgainstNull(nameof(failedConfig), failedConfig);

            Immediate = immediateConfig;
            Delayed = delayedConfig;
            Failed = failedConfig;
        }
        /// <summary>
        /// Creates a new recoverability configuration.
        /// </summary>
        /// <param name="immediateConfig">The immediate retries configuration.</param>
        /// <param name="delayedConfig">The delayed retries configuration.</param>
        /// <param name="failedConfig">The failed retries configuration.</param>
        public RecoverabilityConfig(ImmediateConfig immediateConfig, DelayedConfig delayedConfig, FailedConfig failedConfig)
        {
            Guard.AgainstNull(nameof(immediateConfig), immediateConfig);
            Guard.AgainstNull(nameof(delayedConfig), delayedConfig);
            Guard.AgainstNull(nameof(failedConfig), failedConfig);

            Immediate = immediateConfig;
            Delayed   = delayedConfig;
            Failed    = failedConfig;
        }