public RPackageManager(IRSettings settings, IRInteractiveWorkflow interactiveWorkflow, Action dispose) { _session = interactiveWorkflow.RSessions.GetOrCreate(SessionNames.PackageManager); _settings = settings; _interactiveWorkflow = interactiveWorkflow; _loadedPackagesEvent = new DirtyEventSource(this); _installedPackagesEvent = new DirtyEventSource(this); _availablePackagesEvent = new DirtyEventSource(this); _disposableBag = DisposableBag.Create <RPackageManager>(dispose) .Add(() => _interactiveWorkflow.RSessions.BrokerChanged -= BrokerChanged) .Add(() => _interactiveWorkflow.RSession.Mutated -= RSessionMutated) .Add(() => _interactiveWorkflow.RSession.PackagesInstalled -= PackagesInstalled) .Add(() => _interactiveWorkflow.RSession.PackagesRemoved -= PackagesRemoved); _interactiveWorkflow.RSessions.BrokerChanged += BrokerChanged; _interactiveWorkflow.RSession.Mutated += RSessionMutated; _interactiveWorkflow.RSession.PackagesInstalled += PackagesInstalled; _interactiveWorkflow.RSession.PackagesRemoved += PackagesRemoved; }