!7 static L bots; abstract sclass AbstractThinkBot { transient VF1 postMessage; abstract void thinkAbout(S input); void postMessage(S s) { callF(postMessage, s); } } p { L> classes = botClasses(); print("Have think classes: " + classNames(classes)); makeBots(); bot(); } static L> botClasses() { ret myNonAbstractClassesImplementing(AbstractThinkBot); } svoid makeBots() { bots = map nuWithoutArguments(botClasses()); } sS answer(S s) { for (AbstractThinkBot bot : bots) pcall { bot.postMessage = vfPrint(); temp tempSetThreadLocal(telegram_msg_tl(), new Map); bot.thinkAbout(s); } ret " "; }