private void registerExtensionPoint(
      final String extensionPointName,
      String extensionPointBeanClass,
      PluginDescriptor descriptor,
      ExtensionPoint.Kind kind) {
    if (hasExtensionPoint(extensionPointName)) {
      if (DEBUG_REGISTRATION) {
        final ExtensionPointImpl oldEP = getExtensionPoint(extensionPointName);
        myLogger.error(
            "Duplicate registration for EP: "
                + extensionPointName
                + ": original plugin "
                + oldEP.getDescriptor().getPluginId()
                + ", new plugin "
                + descriptor.getPluginId(),
            myEPTraces.get(extensionPointName));
      }
      throw new RuntimeException("Duplicate registration for EP: " + extensionPointName);
    }

    registerExtensionPoint(
        new ExtensionPointImpl(
            extensionPointName,
            extensionPointBeanClass,
            kind,
            this,
            myAreaInstance,
            myLogger,
            descriptor));
  }
 public void resumeInteractions() {
   myAvailabilityNotificationsActive = true;
   ExtensionPoint[] extensionPoints = getExtensionPoints();
   for (ExtensionPoint extensionPoint : extensionPoints) {
     extensionPoint.getExtensions(); // creates extensions from ComponentAdapters
   }
   for (Runnable action : mySuspendedListenerActions) {
     try {
       action.run();
     } catch (Exception e) {
       myLogger.error(e);
     }
   }
   mySuspendedListenerActions.clear();
 }