/// <summary>
        /// Returns the hierarchy of the specific culture, the neutral culture, and the invariant culture for the <paramref name="cultureInfo"/>.
        /// </summary>
        public static IEnumerable <CultureInfo> GetCultureHierarchy(this CultureInfo cultureInfo)
        {
            ArgumentUtility.CheckNotNull("cultureInfo", cultureInfo);

            // CultureInfo.Parent is defined as specific -> neutral -> invariant, with invariant being its own parent
            return(cultureInfo
                   .CreateSequence(ci => ci.Parent, ci => !ci.Equals(CultureInfo.InvariantCulture))
                   .Concat(CultureInfo.InvariantCulture));
        }