private static @NotNull HierarchyNodeDescriptor buildHierarchyElementInner(@NotNull Project project, @NotNull PsiClass aClass) {
    HierarchyNodeDescriptor descriptor = null;
    PsiClass[] superClasses = createSuperClasses(aClass);
    for(int i = superClasses.length - 1; i >= 0; i--){
      PsiClass superClass = superClasses[i];
      HierarchyNodeDescriptor newDescriptor = new TypeHierarchyNodeDescriptor(project, descriptor, superClass, false);
      if (descriptor != null){
        descriptor.setCachedChildren(new HierarchyNodeDescriptor[] {newDescriptor});
      }
      descriptor = newDescriptor;
    }
    HierarchyNodeDescriptor newDescriptor = new TypeHierarchyNodeDescriptor(project, descriptor, aClass, true);
    if (descriptor != null) {
      descriptor.setCachedChildren(new HierarchyNodeDescriptor[] {newDescriptor});
    }
    return newDescriptor;
  }
private static @NotNull HierarchyNodeDescriptor buildHierarchyElementInner(@NotNull Project project, @NotNull PsiClass aClass)