void (@NotNull PsiNewExpression expr) { final PsiAnonymousClass anonymousClass = expr.getAnonymousClass(); final PsiExpressionList argumentList = expr.getArgumentList(); if (anonymousClass != null) { myBuf.append(PsiKeyword.NEW).append(" ").append(anonymousClass.getBaseClassType().getPresentableText()); if (argumentList != null) argumentList.accept(this); myBuf.append(" {...}"); } else { final PsiJavaCodeReferenceElement reference = expr.getClassReference(); if (reference != null) { myBuf.append(PsiKeyword.NEW).append(" ").append(reference.getText()); final PsiExpression[] arrayDimensions = expr.getArrayDimensions(); final PsiType type = expr.getType(); for (PsiExpression dimension : arrayDimensions) { myBuf.append("["); dimension.accept(this); myBuf.append("]"); } if (type != null) { final int dimensions = type.getArrayDimensions() - arrayDimensions.length; for (int i = 0; i < dimensions; i++) { myBuf.append("[]"); } } if (argumentList != null) { argumentList.accept(this); } final PsiArrayInitializerExpression arrayInitializer = expr.getArrayInitializer(); if (arrayInitializer != null) { myBuf.append(" "); arrayInitializer.accept(this); } } else { myBuf.append(expr.getText()); } } }