/// <summary>
        /// Get region categories for specified locale.
        /// </summary>
        /// <param name="locale">Locale.</param>
        /// <returns>Region types for specified locale.</returns>
        protected virtual RegionCategoryList GetRegionCategories(ILocale locale)
        {
            RegionCategoryList regionCategories = null;

            if (RegionCategories.ContainsKey(locale))
            {
                regionCategories = (RegionCategoryList)(RegionCategories[locale]);
            }
            return(regionCategories);
        }
        /// <summary>
        /// Get region categories for specified locale.
        /// </summary>
        /// <param name="locale">Locale.</param>
        /// <returns>Region types for specified locale.</returns>
        protected override RegionCategoryList GetRegionCategories(ILocale locale)
        {
            RegionCategoryList regionCategories = null;

            lock (RegionCategories)
            {
                if (RegionCategories.ContainsKey(locale))
                {
                    regionCategories = (RegionCategoryList)(RegionCategories[locale]);
                }
            }
            return(regionCategories);
        }