PsiClass (PsiExpression function) { function = PsiUtil.skipParenthesizedExprDown(function); if (function instanceof PsiMethodReferenceExpression && ((PsiMethodReferenceExpression)function).isConstructor()) { PsiElement target = ((PsiMethodReferenceExpression)function).resolve(); return target instanceof PsiClass ? ((PsiClass)target) : target instanceof PsiMethod ? ((PsiMethod)target).getContainingClass() : null; } if (function instanceof PsiLambdaExpression) { PsiExpression body = LambdaUtil.extractSingleExpressionFromBody(((PsiLambdaExpression)function).getBody()); PsiNewExpression newExpression = tryCast(PsiUtil.skipParenthesizedExprDown(body), PsiNewExpression.class); if (newExpression != null && newExpression.getAnonymousClass() == null && newExpression.getQualifier() == null && newExpression.getArgumentList() != null && newExpression.getArgumentList().isEmpty()) { PsiJavaCodeReferenceElement classReference = newExpression.getClassReference(); if (classReference != null) { return tryCast(classReference.resolve(), PsiClass.class); } } } return null; }