public static CenturyPrefixTypeSafeEnum Parse(string input, LanguageEnum language = LanguageEnum.NONE)
        {
            CenturyPrefixTypeSafeEnum result = CenturyPrefixTypeSafeEnum.NONE;
            RegexOptions options             = RegexOptions.Compiled | RegexOptions.IgnoreCase;

            switch (language)
            {
            case LanguageEnum.IT:
            {
                if (Regex.IsMatch(input, @"^Prima Età", options))
                {
                    result = CenturyPrefixTypeSafeEnum.EARLY;
                }
                else if (Regex.IsMatch(input, @"^Tarda Età", options))
                {
                    result = CenturyPrefixTypeSafeEnum.LATE;
                }
                else if (Regex.IsMatch(input, @"^(?:1\s?°|prima) metà del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.HALF1;
                }
                else if (Regex.IsMatch(input, @"^(?:2\s?°|seconda) metà del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.HALF2;
                }
                else if (Regex.IsMatch(input, @"^(?:1\s?°|primo) quarto del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER1;
                }
                else if (Regex.IsMatch(input, @"^(?:2\s?°|secondo) quarto del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER2;
                }
                else if (Regex.IsMatch(input, @"^(?:3\s?°|terzo) quarto del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER3;
                }
                else if (Regex.IsMatch(input, @"^(?:4\s?°|quarto|ultimo) quarto del", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER4;
                }
                break;
            }

            default:
            {
                if (Regex.IsMatch(input, @"^Early", options))
                {
                    result = CenturyPrefixTypeSafeEnum.EARLY;
                }
                if (Regex.IsMatch(input, @"^Mid", options))
                {
                    result = CenturyPrefixTypeSafeEnum.MID;
                }
                if (Regex.IsMatch(input, @"^Late", options))
                {
                    result = CenturyPrefixTypeSafeEnum.LATE;
                }
                else if (Regex.IsMatch(input, @"^(?:1st|first) half", options))
                {
                    result = CenturyPrefixTypeSafeEnum.HALF1;
                }
                else if (Regex.IsMatch(input, @"^(?:2nd|second) half", options))
                {
                    result = CenturyPrefixTypeSafeEnum.HALF2;
                }
                else if (Regex.IsMatch(input, @"^(?:1st|first) quarter", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER1;
                }
                else if (Regex.IsMatch(input, @"^(?:2nd|second) quarter", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER2;
                }
                else if (Regex.IsMatch(input, @"^(?:3rd|third) quarter", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER3;
                }
                else if (Regex.IsMatch(input, @"^(?:4th|fourth|last) quarter", options))
                {
                    result = CenturyPrefixTypeSafeEnum.QUARTER4;
                }
                break;
            }
            }
            return(result);
        }
 public static bool Parse(string value, out CenturyPrefixTypeSafeEnum output)
 {
 }