// f must return a string static S joinMap(O f, Iterable l) { ret join(map(f, l)); } static S joinMap(Iterable l, O f) { ret joinMap(f, l); } static S joinMap(Iterable l, IF1 f) { ret joinMap(f, l); } static S joinMap(A[] l, IF1 f) { ret joinMap(f, l); } static S joinMap(IF1 f, Iterable l) { ret join(map(f, l)); } static S joinMap(IF1 f, A[] l) { ret join(map(f, l)); } static S joinMap(S separator, Map map, IF2 f) { ret join(separator, map(map, f)); }