PsiSwitchBlock (PsiElement position) { PsiStatement statement = PsiTreeUtil.getParentOfType(position, PsiStatement.class, false, PsiMember.class); if (statement == null || statement.getTextRange().getStartOffset() != position.getTextRange().getStartOffset()) { return null; } if (!(statement instanceof PsiSwitchLabelStatementBase) && statement.getParent() instanceof PsiCodeBlock) { return ObjectUtils.tryCast(statement.getParent().getParent(), PsiSwitchBlock.class); } return null; }