!7 sclass SockPuppet > DynCalculatedList { new L dialog; // user, bot, user, bot... void start { onUserUtterance(voidfunc(S s) { addUserUtterance(s) }); onBotUtterance(voidfunc(S s) { addBotUtterance(s) }); } void addUserUtterance(S s) { synchronized(dialog) { if (odd(l(dialog))) dialog.add(""); add(dialog, s); updateMe(); scrollDown(); } } void addBotUtterance(S s) { synchronized(dialog) { if (even(l(dialog))) dialog.add(""); add(dialog, s); updateMe(); scrollDown(); } } L calc() { ret dialog; } }