static L allLiveMethods_skipOverridden(O o) { Class c = _getClass(o); bool isInstance = c != o; new L methods; Set>> seenSignatures = new HashSet; while (c != null) { for (Method m : c.getDeclaredMethods()) if (isInstance != isStaticMethod(m)) { Pair> sig = pair(m.getName(), methodArgumentTypes(m)); if (seenSignatures.add(sig)) methods.add(m); } c = c.getSuperclass(); } ret methods; }