private @NotNull Map<Configuration, Matcher> checkOutCompiledPatterns(@NotNull List<? extends Configuration> configurations,
                                                                        @NotNull Project project, @NotNull ProblemsHolder holder,
                                                                        @NotNull Set<? super SmartPsiElementPointer<?>> duplicates) {
    final Map<Configuration, Matcher> result = new HashMap<>();
    for (Configuration configuration : configurations) {
      Matcher matcher = myCompiledPatterns.popValue(configuration);
      if (matcher == Matcher.EMPTY) {
        continue;
      }
      if (matcher != null) {
        result.put(configuration, matcher);
      }
      else {
        matcher = buildCompiledConfiguration(configuration, project);
        result.put(configuration, matcher);
      }
      if (matcher != null) {
        MatchContext context = matcher.getMatchContext();
        context.setSink(new InspectionResultSink(configuration, holder, duplicates));
        // ssr should never match recursively because this is handled by the inspection visitor
        context.setShouldRecursivelyMatch(false);
      }
    }
    return result;
  }
private @NotNull Map<Configuration, Matcher> checkOutCompiledPatterns(@NotNull List<? extends Configuration> configurations,
                                                                        @NotNull Project project, @NotNull ProblemsHolder holder,
                                                                        @NotNull Set<? super SmartPsiElementPointer<?>> duplicates)