private static void PopulateCommonProperties(IReflect type, ElasticEpiDocument source, TK destination)
        {
            var fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

            foreach (var fi in fields)
            {
                fi.SetValue(destination, fi.GetValue(source));
            }
        }
        public virtual TK Parse(T page)
        {
            var baseObj = new ElasticEpiDocument
            {
                Title                = page.Name,
                StartPublish         = page.StartPublish,
                StopPublish          = page.StopPublish,
                ContentGuid          = page.ContentGuid.ToString(),
                LanguageName         = page.Language?.Name,
                TypeName             = page.GetOriginalType().Name,
                ContainerContentGuid = ResolveContainerContentGuid(page),
                Breadcrumbs          = BreadcrumbsHelper.FromContent(page)
            };

            var derivedObj = new TK();

            PopulateCommonProperties(baseObj.GetType(), baseObj, derivedObj);

            return(derivedObj);
        }