static Set classSuperclassesAndInterfaces(Class c) { if (c == null) null; new HashSet set; classSuperclassesAndInterfaces_find(c, set); ret set; } svoid classSuperclassesAndInterfaces_find(Class c, Set set) { do { if (!set.add(c)) ret; for (Class intf : c.getInterfaces()) classSuperclassesAndInterfaces_find(intf, set); } while ((c = c.getSuperclass()) != null); }