void (@NotNull Project project, @NotNull PsiElement startElement, @NotNull ModPsiUpdater updater) { final PsiExpression expression = (PsiExpression)startElement; final PsiType expectedType = ExpectedTypeUtils.findExpectedType(expression, true); if (expectedType == null) { return; } final String convertedExpression = convertExpression(expression, expectedType); if (convertedExpression != null) { PsiReplacementUtil.replaceExpression(expression, convertedExpression); } else { final PsiElement parent = expression.getParent(); if (parent instanceof PsiAssignmentExpression assignmentExpression) { final PsiJavaToken sign = assignmentExpression.getOperationSign(); if (!JavaTokenType.EQ.equals(sign.getTokenType())) { replaceCompoundAssignment(assignmentExpression); return; } } final CommentTracker commentTracker = new CommentTracker(); final String castExpression = '(' + expectedType.getCanonicalText() + ')' + commentTracker.text(expression, ParenthesesUtils.TYPE_CAST_PRECEDENCE); PsiReplacementUtil.replaceExpression(expression, castExpression, commentTracker); } }