/// <summary>
 /// Unsubscribes the given object from changes in the project structure.
 /// </summary>
 /// <param name="projectExplorerObserver">The object to observe project structure changes.</param>
 public void Unsubscribe(IProjectExplorerObserver projectExplorerObserver)
 {
     lock (this.ObserverLock)
     {
         if (this.ProjectExplorerObservers.Contains(projectExplorerObserver))
         {
             this.ProjectExplorerObservers.Remove(projectExplorerObserver);
         }
     }
 }
 /// <summary>
 /// Subscribes the given object to changes in the project structure.
 /// </summary>
 /// <param name="projectExplorerObserver">The object to observe project structure changes.</param>
 public void Subscribe(IProjectExplorerObserver projectExplorerObserver)
 {
     lock (this.ObserverLock)
     {
         if (!this.ProjectExplorerObservers.Contains(projectExplorerObserver))
         {
             this.ProjectExplorerObservers.Add(projectExplorerObserver);
             projectExplorerObserver.Update(this.ProjectRoot);
             projectExplorerObserver.UpdateStructure(this.ProjectRoot);
         }
     }
 }