public override async Task SetParametersAsync(ParameterView parameters)
        {
            var disposables = PropChangeDisposables.ToList();

            Dispose(PropChangeDisposables);

            await base.SetParametersAsync(parameters);

            foreach (var disposable in disposables)
            {
                Disposables.Remove(disposable);
            }
        }
        protected IDisposable StateHasChanged(IExecutor executor, bool immediate = true)
        {
            AddStateChange(executor);

            if (immediate)
            {
                StateHasChanged();
            }

            IDisposable disposable = new ActionDisposable(() =>
            {
                PostStateChange.Remove(executor);

                executor.Dispose();
            });

            PropChangeDisposables.Add(disposable);

            Disposables.Add(disposable);

            return(disposable);
        }