/// <summary>
        /// Create a new instance of the <see cref="MailManager"/> class.
        /// </summary>
        public MailManager()
        {
            this.mailAssetEditor = new MailAssetEditor();
            this.saveDataHelper  = ModSaveDataHelper.GetSaveDataHelper();

            this.mailAssetEditor.MailAssetLoading += OnMailDataLoading;

            events.GameLoop.DayStarted += OnDayStarted;
            events.GameLoop.DayEnding  += OnDayEnding;

            events.Display.MenuChanged += OnMenuChanged;

            events.GameLoop.Saving     += OnSaving;
            events.GameLoop.SaveLoaded += OnSaveLoaded;
        }
        /// <summary>
        /// Create a new instance of the <see cref="MailService"/> class.
        /// </summary>
        /// <param name="modId">The ID of the mod for which this mail service will be created for.</param>
        /// <param name="mailManager">The <see cref="IMailManager"/> instance which will be used by this service to add mails to the game.</param>
        /// <exception cref="ArgumentNullException">
        /// The specified <paramref name="modId"/> is <c>null</c> or does not contain at least one
        /// non-whitespace character.</exception>
        /// <exception cref="ArgumentNullException">The specified <paramref name="mailManager"/> is <c>null</c>.</exception>
        internal MailService(string modId, IMailManager mailManager)
        {
            if (string.IsNullOrWhiteSpace(modId))
            {
                throw new ArgumentException("The mod ID needs to contain at least one non-whitespace character!", nameof(modId));
            }

            if (mailManager == null)
            {
                throw new ArgumentNullException(nameof(mailManager));
            }

            this.modId       = modId;
            this.mailManager = mailManager;

            this.saveDataKey = SAVE_DATA_KEY_PREFIX + "." + modId;

            this.saveDataHelper  = ModSaveDataHelper.GetSaveDataHelper(modId);
            this.saveDataBuilder = new SaveDataBuilder(new ItemSerializer());

            events.GameLoop.Saving     += OnSaving;
            events.GameLoop.SaveLoaded += OnSaveLoaded;
        }