public async Task Apply(GalleyBaseView view, GalleySuperView superView)
        {
            var oldViewIndex = superView.Children.ToArray().IndexOf(superView.CurrentView);

            superView.InsertChildIfNeeded(0, view, !superView.IsAllowedMakingViewsInvisible);
            await superView.SetCurrentView(view, true);

            var newViewIndex = superView.Children.ToArray().IndexOf(superView.CurrentView);

            Task animationTask;

            if (newViewIndex > oldViewIndex)
            {
                view.Opacity   = 0;
                view.IsVisible = true;
                animationTask  = Task.Run(async() => await view.FadeTo(1, _time));
            }
            else
            {
                view.Opacity   = 1;
                view.IsVisible = true;
                animationTask  = superView.GetOtherVisibleViews(view).EachAsync(async c => await c.FadeTo(0, _time), false);
            }

            await superView.ResetFloatingControls(view, animationTask);

            superView.SetSuperView(view);
        }
        public async Task Apply(GalleyBaseView view, GalleySuperView superView)
        {
            superView.InsertChildIfNeeded(0, view);
            await superView.SetCurrentView(view, true);

            await superView.ResetFloatingControls(view, superView.GetOtherVisibleViews(view)
                                                  .EachAsync(async c => await c.LayoutTo(superView.Width, 0, superView.Width, superView.Height, _time)));

            superView.SetSuperView(view);
        }