static Set allInterfacesImplementedBy(O o) { ret allInterfacesImplementedBy(_getClass(o)); } static Set allInterfacesImplementedBy(Class c) { if (c == null) null; new HashSet set; allInterfacesImplementedBy_find(c, set); ret set; } svoid allInterfacesImplementedBy_find(Class c, Set set) { if (c.isInterface() && !set.add(c)) ret; do { for (Class intf : c.getInterfaces()) allInterfacesImplementedBy_find(intf, set); } while ((c = c.getSuperclass()) != null); }