private void IncludeUpdateCore()
            {
                _ruleSetManager.StopTrackingRuleSetFile(this);
                UnsubscribeFromFileTrackers();

                var handler = UpdatedOnDisk;

                if (handler != null)
                {
                    handler(this, EventArgs.Empty);
                }
            }
            private void RemoveFromRuleSetManagerAndDisconnectFileTrackers()
            {
                lock (_gate)
                {
                    _fileChangeContext.Dispose();

                    if (_removedFromRuleSetManager)
                    {
                        return;
                    }

                    _removedFromRuleSetManager = true;
                }

                // Call outside of lock to avoid general surprises; we skip this with the return above inside the lock.
                _ruleSetManager.StopTrackingRuleSetFile(this);
            }
            private void RemoveFromRuleSetManagerAndDisconnectFileTrackers()
            {
                lock (_gate)
                {
                    foreach (var tracker in _trackers)
                    {
                        tracker.UpdatedOnDisk -= IncludeUpdated;
                        tracker.Dispose();
                    }

                    _trackers.Clear();

                    if (_removedFromRuleSetManager)
                    {
                        return;
                    }

                    _removedFromRuleSetManager = true;
                }

                // Call outside of lock to avoid general surprises; we skip this with the return above inside the lock.
                _ruleSetManager.StopTrackingRuleSetFile(this);
            }
 private void IncludeUpdateCore()
 {
     _ruleSetManager.StopTrackingRuleSetFile(this);
     UnsubscribeFromFileTrackers();
     UpdatedOnDisk?.Invoke(this, EventArgs.Empty);
 }