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; }