/**
  * Perform the actual update, called by {@link #update()}. Reset all the collections, refresh from
  * SPI, modify any previously published components and notify any observers.
  */
 protected synchronized void doUpdate() {
   resetCollections();
   findChildren();
   updatePublishedComponents();
   multiCaster.notify(new UpdatedMenuManagerEvent());
 }
 @Override
 public List<Observer<MenuManagerEvent>> getObservers() {
   return multiCaster.getObservers();
 }
 @Override
 public void removeObserver(Observer<MenuManagerEvent> observer) {
   multiCaster.removeObserver(observer);
 }
 @Override
 public void addObserver(Observer<MenuManagerEvent> observer) {
   multiCaster.addObserver(observer);
 }