protected void filter(String filter) { final SearchableOptionsRegistrar optionsRegistrar = SearchableOptionsRegistrar.getInstance(); final Set<String> search = optionsRegistrar.getProcessedWords(filter); final ArrayList<IdeaPluginDescriptor> desc = new ArrayList<IdeaPluginDescriptor>(); final List<IdeaPluginDescriptor> toProcess = toProcess(); for (IdeaPluginDescriptor descriptor : filtered) { if (!toProcess.contains(descriptor)) { toProcess.add(descriptor); } } filtered.clear(); for (IdeaPluginDescriptor descriptor : toProcess) { if (isPluginDescriptorAccepted(descriptor) && PluginManagerMain.isAccepted(filter, search, descriptor)) { desc.add(descriptor); } else { filtered.add(descriptor); } } filter(desc); }