public override MvxBasePresentationAttribute CreatePresentationAttribute(Type viewModelType, Type viewType)
        {
            if (viewType.GetTypeInfo().IsSubclassOf(typeof(ContentPage)))
            {
                MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " +
                                           $"Assuming ContentPage presentation");
                return(new MvxContentPagePresentationAttribute()
                {
                    ViewType = viewType, ViewModelType = viewModelType
                });
            }
            if (viewType.GetTypeInfo().IsSubclassOf(typeof(CarouselPage)))
            {
                MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " +
                                           $"Assuming CarouselPage presentation");
                return(new MvxCarouselPagePresentationAttribute()
                {
                    ViewType = viewType, ViewModelType = viewModelType
                });
            }
            if (viewType.GetTypeInfo().IsSubclassOf(typeof(TabbedPage)))
            {
                MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " +
                                           $"Assuming TabbedPage presentation");
                return(new MvxTabbedPagePresentationAttribute()
                {
                    ViewType = viewType, ViewModelType = viewModelType
                });
            }
            if (viewType.GetTypeInfo().IsSubclassOf(typeof(MasterDetailPage)))
            {
                MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " +
                                           $"Assuming MasterDetailPage presentation");
                return(new MvxMasterDetailPagePresentationAttribute()
                {
                    ViewType = viewType, ViewModelType = viewModelType
                });
            }
            if (viewType.GetTypeInfo().IsSubclassOf(typeof(NavigationPage)))
            {
                MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " +
                                           $"Assuming NavigationPage presentation");
                return(new MvxNavigationPagePresentationAttribute()
                {
                    ViewType = viewType, ViewModelType = viewModelType
                });
            }

            return(PlatformPresenter.CreatePresentationAttribute(viewModelType, viewType));
        }
        protected virtual Page CloseAndCreatePage(Type view,
                                                  MvxViewModelRequest request,
                                                  MvxPagePresentationAttribute attribute,
                                                  bool closeModal         = true,
                                                  bool closePlatformViews = true,
                                                  bool showPlatformViews  = true)
        {
            if (closeModal)
            {
                CloseAllModals();
            }

            if (closePlatformViews)
            {
                PlatformPresenter.ClosePlatformViews();
            }

            if (showPlatformViews)
            {
                PlatformPresenter.ShowPlatformHost(attribute.HostViewModelType);
            }

            return(CreatePage(view, request, attribute));
        }