### Question:
ClassHierarchyCache { @Nonnull @ReturnsMutableCopy public static ICommonsSet <Class <?>> getClassHierarchy (@Nonnull final Class <?> aClass) { return _getClassList (aClass).getAsSet (); } private  ClassHierarchyCache(); @Nonnull static EChange clearCache(); @Nonnull @ReturnsMutableCopy static ICommonsSet <Class <?>> getClassHierarchy(@Nonnull final Class <?> aClass); @Nonnull @ReturnsMutableCopy static ICommonsList <Class <?>> getClassHierarchyList(@Nonnull final Class <?> aClass); @Nonnull static ICommonsIterable <WeakReference <Class <?>>> getClassHierarchyIterator(@Nonnull final Class <?> aClass);  }### Answer:
@Test public void testGetClassHierarchy () { Collection <Class <?>> aHierarchy = ClassHierarchyCache.getClassHierarchy (Object.class); assertEquals (1, aHierarchy.size ()); assertTrue (aHierarchy.contains (Object.class)); aHierarchy = ClassHierarchyCache.getClassHierarchy (CGlobal.class); assertTrue (aHierarchy.size () >= 2); assertTrue (aHierarchy.contains (CGlobal.class)); assertTrue (aHierarchy.contains (Object.class)); aHierarchy = ClassHierarchyCache.getClassHierarchy (TypedObject.class); assertTrue (aHierarchy.size () >= 5); assertTrue (aHierarchy.contains (TypedObject.class)); assertTrue (aHierarchy.contains (IHasObjectType.class)); assertTrue (aHierarchy.contains (ITypedObject.class)); assertTrue (aHierarchy.contains (IHasID.class)); assertTrue (aHierarchy.contains (Object.class)); try { ClassHierarchyCache.getClassHierarchy (null); fail (); } catch (final NullPointerException ex) {} }