static A mapMethodLike switchIfLongerInField(S field, A newOne, A oldOne) {
ret switchIfLongerInField(field, newOne, oldOne, null);
}
static A mapMethodLike switchIfLongerInField(S field, A newOne, A oldOne, Runnable onSwitch) {
ret oldOne == null ? with(onSwitch, newOne)
: newOne == null ? oldOne
: cmp(l(getOpt(newOne, field)), l(getOpt(oldOne, field))) > 0 ? with(onSwitch, newOne) : oldOne;
}