List<PsiType> (@Nullable PsiExpression expression) { expression = PsiUtil.skipParenthesizedExprDown(expression); if (expression instanceof PsiReferenceExpression) { final PsiElement target = ((PsiReferenceExpression)expression).resolve(); if (target != null && PsiUtil.isCatchParameter(target)) { return ((PsiCatchSection)target.getParent()).getPreciseCatchTypes(); } } if (expression != null) { final PsiType type = expression.getType(); if (type != null) { return Collections.singletonList(type); } } return Collections.emptyList(); }