private IDisposable BindRemovals() { return(Roots.ObserveRemovals() .SubscribeOn(RxApp.TaskpoolScheduler) .ObserveOn(RxApp.MainThreadScheduler) .SubscribeWithLog(path => { if (_roots.TryGetValue(path, out var node)) { _roots.Remove(path); Nodes.Remove(node); } if (_disposables.TryGetValue(path, out var subscription)) { _disposables.Remove(path); subscription.Dispose(); } })); }