private void addGroup(@NotNull List<? super PluginsGroup> groups,
                        @NotNull @Nls String name,
                        @NotNull PluginsGroupType type,
                        @NotNull String showAllQuery,
                        @NotNull List<? extends IdeaPluginDescriptor> customPlugins,
                        @NotNull Predicate<? super PluginsGroup> showAllPredicate) {
    PluginsGroup group = new PluginsGroup(name, type);

    int i = 0;
    for (Iterator<? extends IdeaPluginDescriptor> iterator = customPlugins.iterator(); iterator.hasNext() && i < ITEMS_PER_GROUP; i++) {
      group.descriptors.add(iterator.next());
    }

    if (showAllPredicate.test(group)) {
      group.rightAction = new LinkLabelButton<>(IdeBundle.message("plugins.configurable.show.all"),
                                                null,
                                                myMarketplaceTab.mySearchListener,
                                                showAllQuery);
      group.rightAction.setBorder(JBUI.Borders.emptyRight(5));
    }

    if (!group.descriptors.isEmpty()) {
      groups.add(group);
    }
    LOG.info("Marketplace tab: '" + name + "' group load finished");
  }
private void addGroup(@NotNull List<? super PluginsGroup> groups,
                        @NotNull @Nls String name,
                        @NotNull PluginsGroupType type,
                        @NotNull String showAllQuery,
                        @NotNull List<? extends IdeaPluginDescriptor> customPlugins,
                        @NotNull Predicate<? super PluginsGroup> showAllPredicate)