public async Task Should_Call_In_Order()
            {
                // Given
                var viewModel1 = Substitute.For <IEverything>();
                var viewModel2 = Substitute.For <IEverything>();
                var subject    = new Subject <IViewModel>();
                var view       = Substitute.For <IView>();

                view.When(x => x.PopPage())
                .Do(_ => subject.OnNext(viewModel2));
                view
                .PagePopped
                .Returns(subject.AsObservable());
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view);
                await sut.PushModal(viewModel1);

                await sut.PushModal(viewModel2);

                // When
                await sut.PopModal();

                // Then
                Received.InOrder(() =>
                {
                    view.PopModal();
                    viewModel2.Destroy();
                });
            }
            public async Task Should_Call_Destroy()
            {
                // Given
                var viewModel = Substitute.For <IEverything>();
                var view      = Substitute.For <IView>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view).WithModal(viewModel);

                // When
                await sut.PopModal();

                // Then
                viewModel.Received(1).Destroy();
            }