// does not store null values static Map indexByField(Iterable c, S field) { new HashMap map; for (O a : c) { O val = getOpt(a, field); if (val != null) map.put(val, a); } ret map; } static Map mapMethodLike indexByField(S field, Iterable c) { ret indexByField(c, field); }