@Override
    public void visitTryStatement(@NotNull PsiTryStatement statement) {
      super.visitTryStatement(statement);

      final CatchSectionWrapper[] sections = CatchSectionWrapper.createWrappers(statement);
      if (sections == null) return;

      final boolean[][] canSwap = collectCanSwap(sections);
      final CatchSectionIndices[] duplicateIndices = getCatchSectionIndices(
        sections, canSwap, (s1, s2) -> CatchSectionWrapper.areDuplicates(s1, s2, ignoreBlocksWithDifferentComments));
      final CatchSectionIndices[] emptyIndices = isOnTheFly() ? getCatchSectionIndices(sections, canSwap, CatchSectionWrapper::areEmpty) : null;
      if (duplicateIndices == null && emptyIndices == null) return;

      final boolean[] problems = new boolean[sections.length];
      registerProblems(sections, duplicateIndices, problems, false);
      registerProblems(sections, emptyIndices, problems, true);
    }
@Override
    public void visitTryStatement(@NotNull PsiTryStatement statement)