HierarchyNodeDescriptor (@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; }