public static Models.CodePoint GetCodePoint(UnicodeCharInfo charInfo)
        {
            var category = UnicodeCategoryInfo.Get(charInfo.Category);

            return(new Models.CodePoint
                   (
                       charInfo.CodePoint,
                       UnicodeInfo.GetDisplayText(charInfo),
                       charInfo.Name,
                       charInfo.OldName,
                       charInfo.NameAliases.Select(na => new Models.NameAlias((Models.UnicodeNameAliasKind)(int) na.Kind, na.Name)).ToArray(),
                       new Models.UnicodeCategory(category.ShortName, category.LongName),
                       charInfo.Block,

                       (Models.UnicodeNumericType)(int) charInfo.NumericType,
                       (Models.UnihanNumericType)(int) charInfo.UnihanNumericType,
                       charInfo.NumericValue != null ?
                       new Models.RationalNumber(charInfo.NumericValue.GetValueOrDefault().Numerator, charInfo.NumericValue.GetValueOrDefault().Denominator) :
                       null,

                       charInfo.Definition,
                       charInfo.MandarinReading,
                       charInfo.CantoneseReading,
                       charInfo.JapaneseKunReading,
                       charInfo.JapaneseOnReading,
                       charInfo.KoreanReading,
                       charInfo.HangulReading,
                       charInfo.VietnameseReading,

                       charInfo.SimplifiedVariant,
                       charInfo.TraditionalVariant
                   ));
        }