src/org/kocakosm/pitaya/util/Classes.java
public static Set<Class<?>> getCommonSuperTypes(Iterable<Class<?>> classes)
	{
		Iterator<Class<?>> i = classes.iterator();
		Parameters.checkCondition(i.hasNext());
		Set<Class<?>> common = new HashSet<Class<?>>(getSuperTypes(i.next()));
		while (i.hasNext()) {
			common.retainAll(getSuperTypes(i.next()));
		}
		return Collections.unmodifiableSet(common);
	}
public static Set<Class<?>> getCommonSuperTypes(Iterable<Class<?>> classes)
	{
		Iterator<Class<?>> i = classes.iterator();
		Parameters.checkCondition(i.hasNext());
		Set<Class<?>> common = new HashSet<Class<?>>(getSuperTypes(i.next()));
		while (i.hasNext()) {
			common.retainAll(getSuperTypes(i.next()));
		}
		return Collections.unmodifiableSet(common);
	}
Returns the {@code Set} of common super types of the given classes,
that is, all the classes in which any instance of the given classes
can be cast into.

@param classes the classes.

@return the common super types of the given classes.

@throws NullPointerException if {@code classes} is {@code null}, or
if it contains a {@code null} reference.
@throws IllegalArgumentException if {@code classes} is empty.