@Pure
	public static <T> Collection<Class<? super T>> getSuperClasses(Class<T> className) {
		assert className != null;
		final Collection<Class<? super T>> list = new ArrayList<>();
		Class<? super T> type = className.getSuperclass();
		while (type != null && !Object.class.equals(type)) {
			list.add(type);
			type = type.getSuperclass();
		}
		return list;
	}
@ Pure public static < T > Collection < Class < ? super T > > getSuperClasses ( Class < T > className ) { assert className != null ; final Collection < Class < ? super T > > list = new ArrayList < > ( ) ; Class < ? super T > type = className . getSuperclass ( ) ; while ( type != null && ! Object . class . equals ( type ) ) { list . add ( type ) ; type = type . getSuperclass ( ) ; } return list ; }
Replies the list of all the superclasses of the given class.

<p>This function does not replies <code>Object.class</code>.

@param <T> is the type of the lowest class.
@param className is the type of the lowest class.
@return the list of superclasses.
@since 5.0