List<ExpectedTypeInfo> (PsiElement position) { PsiElement parenthesisOwner = getParenthesisOwner(position); PsiExpression operand = getCastedExpression(parenthesisOwner); if (operand == null || !(parenthesisOwner.getParent() instanceof PsiParenthesizedExpression)) return Collections.emptyList(); List<PsiType> dfaTypes = GuessManager.getInstance(operand.getProject()).getControlFlowExpressionTypeConjuncts(operand); if (!dfaTypes.isEmpty()) { return ContainerUtil.map(dfaTypes, dfaType -> new ExpectedTypeInfoImpl(dfaType, ExpectedTypeInfo.TYPE_OR_SUPERTYPE, dfaType, TailTypes.noneType(), null, ExpectedTypeInfoImpl.NULL)); } PsiType type = operand.getType(); return type == null || type.equalsToText(CommonClassNames.JAVA_LANG_OBJECT) ? Collections.emptyList() : Collections.singletonList( new ExpectedTypeInfoImpl(type, ExpectedTypeInfo.TYPE_OR_SUBTYPE, type, TailTypes.noneType(), null, ExpectedTypeInfoImpl.NULL)); }