void (PsiElement element) { for(PsiNewExpression newExpression : PsiTreeUtil.collectElementsOfType(element, PsiNewExpression.class)) { PsiJavaCodeReferenceElement classReference = newExpression.getClassOrAnonymousClassReference(); if(classReference != null && PsiDiamondTypeUtil.canCollapseToDiamond(newExpression, newExpression, null)) { replaceExplicitWithDiamond(classReference.getParameterList()); } } PsiElementFactory factory = JavaPsiFacade.getElementFactory(element.getProject()); for(PsiMethodCallExpression call : PsiTreeUtil.collectElementsOfType(element, PsiMethodCallExpression.class)) { PsiType[] arguments = call.getTypeArguments(); if (arguments.length == 0) continue; PsiMethod method = call.resolveMethod(); if(method != null) { PsiTypeParameter[] parameters = method.getTypeParameters(); if(arguments.length == parameters.length && PsiDiamondTypeUtil.areTypeArgumentsRedundant(arguments, call, false, method, parameters)) { PsiMethodCallExpression expr = (PsiMethodCallExpression)factory.createExpressionFromText("foo()", null); new CommentTracker().replaceAndRestoreComments(call.getTypeArgumentList(), expr.getTypeArgumentList()); } } } }