sO ccopyFields2_gen(O x, O y, Iterable fields) { if (x == null || y == null) ret y; for (S field : unnull(fields)) { O o = getOpt(x, field); call(y, '_setField, field, o); } ret y; }