static boolean stdEq2(O a, O b) { if (a == null) ret b == null; if (b == null) ret false; if (a.getClass() != b.getClass()) ret false; for (S field : allFields(a)) if (neq(getOpt(a, field), getOpt(b, field))) ret false; ret true; }