static L findFunctionalInterfaceMethods(Class intrface) { if (!isInterface(intrface)) null; new L l; _MethodCache cache = getMethodCache(intrface); Class c = intrface; do { for (Method m : c.getDeclaredMethods()) { S name = m.getName(); var args = m.getParameterTypes(); if (m.getDeclaringClass() != O.class && !m.isDefault() && !isStaticMethod(m) && !m.isSynthetic() && !(eq(name, "equals") && l(args) == 1 && args[0] == O.class)) l.add(m); } c = c.getSuperclass(); } while (c != null); ret l; }