/// <summary>
        /// Deregisters the given object from localization.
        /// </summary>
        /// <param name="localizationSupporter">The object which to deregister from localization.</param>
        /// <exception cref="ArgumentNullException">When <paramref name="localizationSupporter"/> is null.</exception>
        public virtual void DeregisterFromLocalization(ISupportLocalization localizationSupporter)
        {
            if (localizationSupporter == null)
            {
                throw new ArgumentNullException("localizationSupporter");
            }

            var itemToDeregister = _localizationSupporters.FirstOrDefault(x => x.Id == localizationSupporter.Id);

            if (itemToDeregister == null)
            {
                return;
            }

            _localizationSupporters.Remove(itemToDeregister);
        }
        /// <summary>
        /// Registers the given object for localization.
        /// </summary>
        /// <param name="localizationSupporter">The object which to register for localization.</param>
        /// <exception cref="ArgumentNullException">When <paramref name="localizationSupporter"/> is null.</exception>
        public virtual void RegisterForLocalization(ISupportLocalization localizationSupporter)
        {
            if (localizationSupporter == null)
            {
                throw new ArgumentNullException("localizationSupporter");
            }

            var objectIsAlwaysRegistered = _localizationSupporters
                                           .FirstOrDefault(x => x.Id == localizationSupporter.Id) != null;

            if (objectIsAlwaysRegistered)
            {
                return;
            }

            _localizationSupporters.Add(localizationSupporter);
        }