private void processElement(@Nullable PsiElement element, @NotNull Configuration configuration, @NotNull Matcher matcher) {
      final NodeIterator matchedNodes = SsrFilteringNodeIterator.create(element);
      if (!matcher.checkIfShouldAttemptToMatch(matchedNodes)) {
        return;
      }
      final MatchContext matchContext = matcher.getMatchContext();
      final int nodeCount = matchContext.getPattern().getNodeCount();
      try {
        matcher.processMatchesInElement(new CountingNodeIterator(nodeCount, matchedNodes));
      }
      catch (StructuralSearchException e) {
        if (myProblemsReported.add(configuration.getName())) { // don't overwhelm the user with messages
          final String message = e.getMessage().replace(ScriptSupport.UUID, "");
          NotificationGroupManager.getInstance()
            .getNotificationGroup(UIUtil.SSR_NOTIFICATION_GROUP_ID)
            .createNotification(SSRBundle.message("inspection.script.problem", message, configuration.getName()), NotificationType.ERROR)
            .setImportant(true)
            .notify(element != null ? element.getProject() : null);
        }
      }
      finally {
        matchedNodes.reset();
      }
    }
private void processElement(@Nullable PsiElement element, @NotNull Configuration configuration, @NotNull Matcher matcher)