PsiExpression (PsiVariable variable, PsiExpression expr) { PsiElementFactory factory = JavaPsiFacade.getElementFactory(expr.getProject()); PsiTypeCastExpression cast = (PsiTypeCastExpression)factory.createExpressionFromText("(t)a", null); PsiTypeElement castTypeElement = cast.getCastType(); assert castTypeElement != null; PsiTypeElement typeElement = variable.getTypeElement(); if (typeElement == null) { typeElement = factory.createTypeElement(variable.getType()); } else if (typeElement.isInferredType()) { return expr; } castTypeElement.replace(typeElement); final PsiExpression operand = cast.getOperand(); assert operand != null; operand.replace(expr); expr = (PsiTypeCastExpression)expr.replace(cast); if (RedundantCastUtil.isCastRedundant((PsiTypeCastExpression)expr)) { return RemoveRedundantCastUtil.removeCast((PsiTypeCastExpression)expr); } return expr; }