boolean (@NotNull Project project, Editor editor, PsiFile file) { PsiInstanceOfExpression instanceOfExpression = getInstanceOfExpressionAtCaret(file, editor.getCaretModel().getOffset()); if (instanceOfExpression == null) return false; PsiTypeElement checkType = instanceOfExpression.getCheckType(); if (checkType == null) return false; if (instanceOfExpression.getPattern() != null) return false; PsiExpression operand = instanceOfExpression.getOperand(); PsiType operandType = operand.getType(); if (TypeConversionUtil.isPrimitiveAndNotNull(operandType)) return false; PsiType type = checkType.getType(); String castTo = type.getPresentableText(); setText(QuickFixBundle.message("create.local.from.instanceof.usage.text", castTo, operand.getText())); PsiStatement statement = PsiTreeUtil.getParentOfType(instanceOfExpression, PsiStatement.class); boolean insideIf = statement instanceof PsiIfStatement && PsiTreeUtil.isAncestor(((PsiIfStatement)statement).getCondition(), instanceOfExpression, false); boolean insideWhile = statement instanceof PsiWhileStatement && PsiTreeUtil.isAncestor(((PsiWhileStatement)statement).getCondition(), instanceOfExpression, false); return (insideIf || insideWhile) && !isAlreadyCastedTo(type, instanceOfExpression, statement); }