public boolean processActions(String pattern, Predicate<? super MatchedValue> consumer, @NotNull Set<String> ids) {
    Stream<AnAction> actions = ids.stream().map(myActionManager::getAction).filter(Objects::nonNull);
    Matcher matcher = ActionSearchUtilKt.buildMatcher(pattern);

    QuickActionProvider provider = myModel.getDataContext().getData(QuickActionProvider.KEY);
    if (provider != null) {
      actions = Stream.concat(actions, provider.getActions(true).stream());
    }

    Stream<ActionWrapper> actionWrappers = actions
      .distinct()
      .map(action -> {
        if (action instanceof ActionGroup && !((ActionGroup)action).isSearchable()) {
          return null;
        }

        MatchMode mode = myModel.actionMatches(pattern, matcher, action);
        if (mode == MatchMode.NONE) {
          return null;
        }
        return createActionWrapper(action, myModel.getGroupMapping(action), mode, myModel);
      })
      .filter(Objects::nonNull);
    return processItems(pattern, MatchedValueType.ACTION, actionWrappers, consumer);
  }
public boolean processActions(String pattern, Predicate<? super MatchedValue> consumer, @NotNull Set<String> ids)