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(), m.getParameterTypes()); if (seenSignatures.add(sig)) methods.add(m); } c = c.getSuperclass(); } ret methods; }