PsiType (PsiExpression expression, boolean calculateTypeForComplexReferences, boolean reportCasts) { PsiElement context = expression.getParent(); PsiExpression wrappedExpression = expression; while (context instanceof PsiParenthesizedExpression) { wrappedExpression = (PsiExpression)context; context = context.getParent(); } if (context == null) { return null; } final ExpectedTypeVisitor visitor = new ExpectedTypeVisitor(wrappedExpression, calculateTypeForComplexReferences, reportCasts); context.accept(visitor); return visitor.getExpectedType(); }