docs: @Override
      public RuntimeUpdateNotification createNotification(String name, boolean ignoreOnQuiesce) {
  
          if (FrameworkState.isStopping()) {
              // we are in the process of stopping, so just ignore any updates at this point
              return null;
          }
  
          final Future<Boolean> future = futureMonitor.createFuture(Boolean.class);
          RuntimeUpdateNotification notification = new NotificationImpl(name, future, futureMonitor, normalServerStop, ignoreOnQuiesce);
  
          Collection<RuntimeUpdateListener> listenerSnapshot;
          synchronized (notifications) {
              notifications.put(name, notification);
              // get a snapshot of listeners while holding the lock to avoid sending the same notification twice
              // to the same listener that happens to be getting registered at the same time as the notification is getting created.
              listenerSnapshot = new ArrayList<RuntimeUpdateListener>(updateListeners);
          }
  
          for (RuntimeUpdateListener updateListener : listenerSnapshot) {
              updateListener.notificationCreated(this, notification);
          }
  
          notification.onCompletion(cleanupListener);
          return notification;
      }