void (PsiSwitchBlock block) { final PsiCodeBlock body = block.getBody(); if (body == null) { return; } final Set<PsiLocalVariable> variablesInPreviousBranches = new HashSet<>(5); final Set<PsiLocalVariable> variablesInCurrentBranch = new HashSet<>(5); final PsiStatement[] statements = body.getStatements(); final LocalVariableAccessVisitor visitor = new LocalVariableAccessVisitor(variablesInPreviousBranches); for (final PsiStatement child : statements) { if (child instanceof PsiDeclarationStatement declarationStatement) { final PsiElement[] declaredElements = declarationStatement.getDeclaredElements(); for (final PsiElement declaredElement : declaredElements) { if (declaredElement instanceof PsiLocalVariable localVariable) { variablesInCurrentBranch.add(localVariable); } } } else if (child instanceof PsiSwitchLabelStatementBase) { variablesInPreviousBranches.addAll(variablesInCurrentBranch); variablesInCurrentBranch.clear(); } child.accept(visitor); } }