@Override
  public boolean match(PsiElement patternNode, PsiElement matchedNode, @NotNull MatchContext matchContext) {
    final boolean matched = delegate.match(patternNode, matchedNode, matchContext);

    if (matched) {
      matchContext.addMatchedNode(matchedNode);
    }

    if ((!matched || matchContext.getOptions().isRecursiveSearch()) &&
        matchContext.getPattern().getStrategy().continueMatching(matchedNode) &&
        matchContext.shouldRecursivelyMatch()
    ) {
      final PsiElement child = matchedNode.getFirstChild();
      if (child != null) {
        matchContext.getMatcher().matchContext(SsrFilteringNodeIterator.create(child));
      }
    }
    return matched;
  }
@Override
  public boolean match(PsiElement patternNode, PsiElement matchedNode, @NotNull MatchContext matchContext)