public override void Destroy()
        {
            ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedRenderStages);
            ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedRenderFeatures);
            ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedCameraSlots);
            ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedSharedRenderers);

            SelectedRenderStages.CollectionChanged    -= SelectionChanged;
            SelectedRenderFeatures.CollectionChanged  -= SelectionChanged;
            SelectedCameraSlots.CollectionChanged     -= SelectionChanged;
            SelectedSharedRenderers.CollectionChanged -= SelectionChanged;
            SelectedRendererLinks.CollectionChanged   -= SelectionChanged;

            sharedRenderersNode.ItemChanged -= SharedRenderersChanged;
            renderStagesNode.ItemChanged    -= RenderStagesChanged;
            renderFeaturesNode.ItemChanged  -= RenderFeaturesChanged;
            cameraSlotsNode.ItemChanged     -= CamerasSlotsChanged;

            AssemblyRegistry.AssemblyRegistered   -= AssembliesUpdated;
            AssemblyRegistry.AssemblyUnregistered -= AssembliesUpdated;

            Blocks.Cast <GraphicsCompositorBlockViewModel>().ForEach(x => x.Destroy());
            base.Destroy();
        }