@Override
      public void customizeCellRenderer(@NotNull JTree tree,
                                        Object value,
                                        boolean selected,
                                        boolean expanded,
                                        boolean leaf,
                                        int row,
                                        boolean hasFocus) {
        final DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
        final Object userObject = node.getUserObject();
        if (userObject instanceof String) {
          append((String)userObject, SimpleTextAttributes.GRAY_ATTRIBUTES);
        }
        else if (userObject instanceof VirtualFile virtualFile) {
          append(virtualFile.getName() + " ");
          append(JavaCompilerBundle.message("label.in.path.suffix", virtualFile.getParent().getPath()),
                 SimpleTextAttributes.GRAY_ATTRIBUTES);
        } else if (userObject instanceof PsiFunctionalExpression) {
          append(ClassPresentationUtil.getFunctionalExpressionPresentation((PsiFunctionalExpression)userObject, true));
        } else if (userObject instanceof PsiClass) {
          append(ClassPresentationUtil.getNameForClass((PsiClass)userObject, true));
        } else {
          @NlsSafe
          final String text = userObject.toString();
          append(text);
        }
      }
@Override
      public void customizeCellRenderer(@NotNull JTree tree,
                                        Object value,
                                        boolean selected,
                                        boolean expanded,
                                        boolean leaf,
                                        int row,
                                        boolean hasFocus)