@Override
  protected Object @NotNull [] buildChildren(@NotNull HierarchyNodeDescriptor descriptor) {
    Object element = ((TypeHierarchyNodeDescriptor)descriptor).getPsiClass();
    if (element instanceof PsiClass psiClass) {
      PsiClass[] supers = getSupers(psiClass);
      List<HierarchyNodeDescriptor> descriptors = new ArrayList<>();
      PsiClass objectClass = JavaPsiFacade.getInstance(myProject).findClass(CommonClassNames.JAVA_LANG_OBJECT, psiClass.getResolveScope());
      for (PsiClass aSuper : supers) {
        if (!psiClass.isInterface() || !aSuper.equals(objectClass)) {
          descriptors.add(new TypeHierarchyNodeDescriptor(myProject, descriptor, aSuper, false));
        }
      }
      return descriptors.toArray(HierarchyNodeDescriptor.EMPTY_ARRAY);
    } else if (element instanceof PsiFunctionalExpression) {
      PsiClass functionalInterfaceClass = LambdaUtil.resolveFunctionalInterfaceClass((PsiFunctionalExpression)element);
      if (functionalInterfaceClass != null) {
        return new HierarchyNodeDescriptor[] {new TypeHierarchyNodeDescriptor(myProject, descriptor, functionalInterfaceClass, false)};
      }
    }
    return ArrayUtilRt.EMPTY_OBJECT_ARRAY;
  }
@Override
  protected Object @NotNull [] buildChildren(@NotNull HierarchyNodeDescriptor descriptor)