static S n2(long l) { ret formatWithThousands(l); } static S n2(AtomicLong l) { ret n2(l!); } static S n2(Collection l) { ret n2(l(l)); } static S n2(Map map) { ret n2(l(map)); } sS n2_getPlural(S singular) { //ret singular + "s"; ret plural(singular); } sS n2(double l, S singular) { ret empty(singular) ? str(l) : n2(l, singular, n2_getPlural(singular)); } sS n2(double l, S singular, S plural) { if (fraction(l) == 0) ret n2((long) l, singular, plural); else ret l + " " + plural; } static S n2(long l, S singular, S plural) { ret n_fancy2(l, singular, plural); } static S n2(long l, S singular) { ret empty(singular) ? n2(l) : n_fancy2(l, singular, n2_getPlural(singular)); } static S n2(Collection l, S singular) { ret n2(l(l), singular); } static S n2(Collection l, S singular, S plural) { ret n_fancy2(l, singular, plural); } static S n2(Map m, S singular, S plural) { ret n_fancy2(m, singular, plural); } static S n2(Map m, S singular) { ret n2(l(m), singular); } static S n2(long[] a, S singular) { ret n2(l(a), singular); } static S n2(O[] a, S singular) { ret n2(l(a), singular); } static S n2(O[] a, S singular, S plural) { ret n_fancy2(a, singular, plural); } ifclass MultiSet static S n2(MultiSet ms, S singular, S plural default n2_getPlural(singular)) { ret n_fancy2(ms, singular, plural); } endif ifclass IMultiMap static S n2(IMultiMap mm, S singular, S plural default n2_getPlural(singular)) { ret n_fancy2(l(mm), singular, plural); } endif