}
// Collect the superclasses and interfaces of this class.
Set thisSuperClasses = new HashSet();
thisReferencedClass.hierarchyAccept(false, true, true, false,
new ClassCollector(thisSuperClasses));
int thisSuperClassesCount = thisSuperClasses.size();
if (thisSuperClassesCount == 0 &&
thisReferencedClass.getSuperName() != null)
{
throw new IllegalArgumentException("Can't find any super classes of ["+thisType+"] (not even immediate super class ["+thisReferencedClass.getSuperName()+"])");
}
// Collect the superclasses and interfaces of the other class.
Set otherSuperClasses = new HashSet();
otherReferencedClass.hierarchyAccept(false, true, true, false,
new ClassCollector(otherSuperClasses));
int otherSuperClassesCount = otherSuperClasses.size();
if (otherSuperClassesCount == 0 &&
otherReferencedClass.getSuperName() != null)
{