@Override
  public void visitNewExpression(@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());
      }
    }
  }
@Override
  public void visitNewExpression(@NotNull PsiNewExpression expr)