/// <summary>
        /// Initializes a new instance of the <see cref="DirectoryFileStorage" /> class.
        /// </summary>
        /// <param name="systemClock">
        /// The source of system clock.
        /// </param>
        /// <param name="settings">
        /// The settings of the storage.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="systemClock"/> or
        /// <paramref name="settings"/> is <see langword="null"/>.
        /// </exception>
        public DirectoryFileStorage(
            [NotNull] ISystemClock systemClock,
            [NotNull] DirectoryFileStorageSettings settings)
        {
            AssertArg.NotNull(systemClock, nameof(systemClock));
            AssertArg.NotNull(settings, nameof(settings));

            _systemClock = systemClock;
            _settings    = settings;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DirectoryFileStorage" /> class.
        /// </summary>
        /// <param name="systemClock">
        /// The source of system clock.
        /// </param>
        /// <param name="settings">
        /// The settings of the storage.
        /// </param>
        /// <param name="log">
        /// A log where to write log messages into.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="systemClock"/> or
        /// <paramref name="settings"/> or
        /// <paramref name="log"/> is <see langword="null"/>.
        /// </exception>
        public DirectoryFileStorage(
            [NotNull] ISystemClock systemClock,
            [NotNull] DirectoryFileStorageSettings settings,
            [NotNull] ILog log)
            : this(systemClock, settings)
        {
            AssertArg.NotNull(log, nameof(log));

            _log = log;
        }