// action: voidfunc(S item) static JList listPopupMenuItemsThreaded(final JList list, O... params) { for (int i = 0; i+1 < l(params); i += 2) { if (isMenuSeparatorIndicator(params[i])) continue with --i; fO action = params[i+1]; listPopupMenuItem(list, str(params[i]), voidfunc(fS item) { thread-messagebox { callF(action, item); } }); } ret list; }