/// <summary>
        /// Adds Merchandise dates for the year specified to the Merchandise Date Dictionaries.
        /// </summary>
        /// <param name="_MerchandiseYear">The Merchandise Year to add.</param>
        protected virtual void AddYear(Int32 _MerchandiseYear)
        {
            foreach (MerchandiseDate _MerchandiseDate in DateFunctions.GetMerchandiseDatesByYear(_MerchandiseYear))
            {
                _ByDateMerchandiseDateDictionary.TryAdd(_MerchandiseDate.Date.Value, _MerchandiseDate);

                DayOfTheYear _DayOfTheYear = new DayOfTheYear(_MerchandiseDate.Year, _MerchandiseDate.DayOfYear);
                _ByDayOfTheYearMerchandiseDateDictionary.TryAdd(_DayOfTheYear, _MerchandiseDate);
            }
        }
        /// <summary>
        /// Get the Merchandise Date for the specified Day of the Year
        /// </summary>
        /// <param name="_Year">The Merchandise Year</param>
        /// <param name="_DayOfYear">The Merchandise Day of Year</param>
        /// <returns></returns>
        public virtual MerchandiseDate GetComparisonMerchandiseDate(Int32 _Year, Int32 _DayOfYear)
        {
            DayOfTheYear _DayOfTheYear = new DayOfTheYear(_Year, _DayOfYear);

            MerchandiseDate _MerchandiseDate;

            if (_ByDayOfTheYearMerchandiseDateDictionary.TryGetValue(_DayOfTheYear, out _MerchandiseDate))
            {
                return(_MerchandiseDate);
            }

            AddYear(_Year);

            if (_ByDayOfTheYearMerchandiseDateDictionary.TryGetValue(_DayOfTheYear, out _MerchandiseDate))
            {
                return(_MerchandiseDate);
            }

            throw new Exception("An unexpected error occured.");
        }