// pairs of (result, module id) static L> dm_universalSearch(S query) { new L> out; for (O m : dm_listModules()) pcall { L result = cast callOpt(m, 'uSearch, query); if (nempty(result)) { S id = dm_moduleID(m); for (O s : takeFirst(3, result)) out.add(pair(s, id)); } } ret out; }