docs: public void addPlugin(Plugin plugin) throws OrderingConstraintException {
          if (DEBUG) {
              System.out.println("Adding plugin " + plugin.getPluginId() + " to execution plan");
          }
  
          pluginList.add(plugin);
  
          // Add ordering constraints
          copyTo(plugin.interPassConstraintIterator(), interPassConstraintList);
          copyTo(plugin.intraPassConstraintIterator(), intraPassConstraintList);
  
          // Add detector factories
          for (DetectorFactory factory : plugin.getDetectorFactories()) {
              if (DEBUG) {
                  System.out.println("  Detector factory " + factory.getShortName());
              }
              if (factoryMap.put(factory.getFullName(), factory) != null) {
                  throw new OrderingConstraintException("Detector " + factory.getFullName() + " is defined by more than one plugin");
              }
          }
      }