static A second(L l) { return get(l, 1); } static A second(Iterable l) { if (l == null) null; Iterator it = iterator(l); if (!it.hasNext()) null; it.next(); ret it.hasNext() ? it.next() : null; } static A second(A[] bla) { ret bla == null || bla.length <= 1 ? null : bla[1]; } ifclass Pair static B second(Pair p) { ret p == null ? null : p.b; } endif ifclass T3 static B second(T3 t) { ret t == null ? null : t.b; } endif ifclass Producer static A second(Producer p) { if (p == null) null; if (p.next() == null) null; ret p.next(); } endif static char second(S s) { ret charAt(s, 1); } ifclass Either static B second(Either e) { ret e == null ? null : e.bOpt(); } endif