public void StopTracking(List <VisualElement> elements)
        {
            // Some panels like the main Toolbar don't have any tracking set up
            if (panel.contextType == ContextType.Editor && m_EditorVisualTreeAssetTracker == null)
            {
                return;
            }

            VisualTreeAsset currentAsset = null;
            ILiveReloadAssetTracker <VisualTreeAsset> tracker = null;

            foreach (var ve in elements)
            {
                if (ve.visualTreeAssetSource != null)
                {
                    if (ve.visualTreeAssetSource != currentAsset)
                    {
                        currentAsset = ve.visualTreeAssetSource;
                        tracker      = FindTracker(ve);
                    }
                    StopVisualTreeAssetTracking(tracker, ve.visualTreeAssetSource);
                }

                if (ve.styleSheetList?.Count > 0)
                {
                    foreach (var styleSheet in ve.styleSheetList)
                    {
                        m_LiveReloadStyleSheetAssetTracker.StopTrackingAsset(styleSheet);
                    }
                }
            }
        }
        internal void StopVisualTreeAssetTracking(VisualElement visualElementUsingAsset)
        {
            ILiveReloadAssetTracker <VisualTreeAsset> foundTracker = null;

            foreach (var trackerMapEntry in m_TrackerToVisualElementMap)
            {
                var tracker = trackerMapEntry.Key;

                if (!tracker.IsTrackingAsset(visualElementUsingAsset.m_VisualTreeAssetSource))
                {
                    continue;
                }

                var visualElements = trackerMapEntry.Value;

                foreach (var visualElement in visualElements)
                {
                    if (visualElement == visualElementUsingAsset)
                    {
                        foundTracker = tracker;
                        break;
                    }
                }

                if (foundTracker != null)
                {
                    visualElements.Remove(visualElementUsingAsset);
                    break;
                }
            }

            foundTracker?.StopTrackingAsset(visualElementUsingAsset.m_VisualTreeAssetSource);
        }
        private void StopVisualTreeAssetTracking(ILiveReloadAssetTracker <VisualTreeAsset> tracker, VisualTreeAsset asset)
        {
            if (tracker == null)
            {
                return;
            }

            tracker.StopTrackingAsset(asset);

            if (m_AssetToTrackerMap.TryGetValue(asset, out var trackers))
            {
                trackers.m_Trackers.Remove(tracker);
                if (trackers.m_Trackers.Count == 0)
                {
                    m_AssetToTrackerMap.Remove(asset);
                }
            }
        }