@ApiStatus.Internal
  public static @NotNull Collection<PluginNode> mergePluginsFromRepositories(
    @NotNull List<PluginNode> marketplacePlugins,
    @NotNull List<PluginNode> customPlugins,
    boolean addMissing
  ) {
    var compatiblePluginMap = new LinkedHashMap<PluginId, PluginNode>(marketplacePlugins.size());

    for (var marketplacePlugin : marketplacePlugins) {
      compatiblePluginMap.put(marketplacePlugin.getPluginId(), marketplacePlugin);
    }

    for (var customPlugin : customPlugins) {
      var pluginId = customPlugin.getPluginId();
      var plugin = compatiblePluginMap.get(pluginId);
      if (plugin == null && addMissing ||
          plugin != null && PluginDownloader.compareVersionsSkipBrokenAndIncompatible(customPlugin.getVersion(), plugin) > 0) {
        compatiblePluginMap.put(pluginId, customPlugin);
      }
    }

    return compatiblePluginMap.values();
  }
@ApiStatus.Internal
  public static @NotNull Collection<PluginNode> mergePluginsFromRepositories(
    @NotNull List<PluginNode> marketplacePlugins,
    @NotNull List<PluginNode> customPlugins,
    boolean addMissing
  )