static int smallestList_indexOf(O l, O o) { if (l == null) ret -1; if (l << Pair) ret eq(l/Pair.a, o) ? 0 : eq(l/Pair.b, o) ? 1 : -1; if (l << T3) ret eq(l/T3.a, o) ? 0 : eq(l/T3.b, o) ? 1 : eq(l/T3.c, o) ? 2 : -1; if (l instanceof O[]) ret indexOf((O[]) l, o); ret eq(l, o); }