/// <summary>
        /// Initializes a new instance of the <see cref="SolutionReferencesListener"/> class.
        /// </summary>
        public SolutionListener(SolutionManagerService solutionManager, IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
            _solutionManager = solutionManager;

            var solution = (Microsoft.VisualStudio.Shell.Interop.IVsSolution)serviceProvider.GetService(typeof(SVsSolution));
            ErrorHandler.ThrowOnFailure(solution.AdviseSolutionEvents(this, out this._cookieIVsSolutionEvents));
        }
            /// <summary>
            /// Initializes a new instance of the <see cref="ProjectListener"/> class.
            /// </summary>
            /// <param name="project">The project.</param>
            public ProjectListener(SolutionManagerService solutionManager, ProjectNode project, EventHandler<ProjectChangedEventArg> callback)
            {
                Debug.Assert(project != null);
                _solutionManager = solutionManager;
                Name = project.UniqueName;
                VSProject prj = project.VSProject;
                if (prj == null)
                {
                    _referencesEvents = null;
                    return;
                }

                _referencesEvents = prj.Events.ReferencesEvents;
                _referencesEvents.ReferenceAdded += new _dispReferencesEvents_ReferenceAddedEventHandler(OnReferenceAdded);
                _referencesEvents.ReferenceChanged += new _dispReferencesEvents_ReferenceChangedEventHandler(OnReferenceChanged);
                _referencesEvents.ReferenceRemoved += new _dispReferencesEvents_ReferenceRemovedEventHandler(OnReferenceRemoved);
                _callback = callback;
                _enabled = true;
            }