@Override
  public void visitComment(@NotNull PsiComment comment) {
    super.visitComment(comment);

    final CompiledPattern pattern = myCompilingVisitor.getContext().getPattern();
    GlobalCompilingVisitor.setFilter(pattern.getHandler(comment), CommentFilter.getInstance());
    final String commentText = JavaMatchUtil.getCommentText(comment).trim();
    if (COMMENT_PATTERN.matcher(commentText).matches()) {
      final SubstitutionHandler handler = (SubstitutionHandler)pattern.getHandler(commentText);
      if (handler == null) {
        throw new MalformedPatternException();
      }

      comment.putUserData(CompiledPattern.HANDLER_KEY, handler);
      final RegExpPredicate predicate = handler.findPredicate(RegExpPredicate.class);
      if (GlobalCompilingVisitor.isSuitablePredicate(predicate, handler)) {
        myCompilingVisitor.processTokenizedName(predicate.getRegExp(), COMMENT);
      }
    }
    else if (!commentText.isEmpty()) {
      if (myCompilingVisitor.hasFragments(commentText)) {
        final MatchingHandler handler = myCompilingVisitor.processPatternStringWithFragments(
          comment instanceof PsiDocComment ? comment.getText() : JavaMatchUtil.getCommentText(comment).trim(),
          COMMENT);
        if (handler != null) comment.putUserData(CompiledPattern.HANDLER_KEY, handler);
      }
      else {
        myCompilingVisitor.processTokenizedName(commentText, COMMENT);
      }
    }
  }
@Override
  public void visitComment(@NotNull PsiComment comment)