Types { public static List<Class<?>> lowestCommonSuperclasses(Class<?>... classes) { return lowestCommonSuperclasses(Arrays.asList(classes)); }  static Set<Class<?>> getSuperclasses(Class<?> clazz); static Set<Class<?>> superclasses(Class<?> clazz); static Set<Class<?>> commonSuperclasses(Class<?>... classes); static Set<Class<?>> commonSuperclasses(Iterable<Class<?>> classes); static List<Class<?>> lowestCommonSuperclasses(Class<?>... classes); static List<Class<?>> lowestCommonSuperclasses(Iterable<Class<?>> classes); static List<Class<?>> lowestClasses(Class<?>... classes); static List<Class<?>> lowestClasses(Collection<Class<?>> classes);  }
@Test public void test_lowestCommonSuperclasses_classes() { List<Class<?>> l = Types.lowestCommonSuperclasses(Ca.class, Cab.class); assertThat(l, contains((Class) Ca.class)); }
@Test public void test_lowestCommonSuperclasses_classes_2() { List<Class<?>> l = Types.lowestCommonSuperclasses(Cab.class, CaIb.class); assertThat(l, contains(Ca.class, Ib.class)); }
@Test public void test_lowestCommonSuperclasses_interfaces() { List<Class<?>> l = Types.lowestCommonSuperclasses(Iab.class, Ib2.class); assertThat(l, contains((Class) Ib.class)); }
@Test public void test_lowestCommonSuperclasses_interfaces_2() { List<Class<?>> l = Types.lowestCommonSuperclasses(Ia.class, Ib2.class); assertThat(l, contains((Class) Object.class)); }
@Test public void test_lowestCommonSuperclasses_mixed() { List<Class<?>> l = Types.lowestCommonSuperclasses(Cab.class, Iab2.class); assertThat(l, contains(Ia.class, Ib.class)); }
@Test public void test_lowestCommonSuperclasses_diamond() { List<Class<?>> l = Types.lowestCommonSuperclasses(IaIbIab1.class, IaIbIab2.class); assertThat(l, contains((Class) Iab.class)); }