Collection<RunAnythingItem> (@NotNull DataContext dataContext, @NotNull String pattern) { Project project = CommonDataKeys.PROJECT.getData(dataContext); assert project != null; Collection<RunAnythingItem> collector = new ArrayList<>(); for (String command : ContainerUtil.iterateBackward(RunAnythingCache.getInstance(project).getState().getCommands())) { for (RunAnythingProvider provider : RunAnythingProvider.EP_NAME.getExtensions()) { Object matchingValue = provider.findMatchingValue(dataContext, command); if (matchingValue != null) { //noinspection unchecked collector.add(provider.getMainListItem(dataContext, matchingValue)); break; } } } return collector; }