sbool ai_html_wordThoughts_showMem; static S ai_html_wordThoughts(S selectedWord) { S t = ai_html_triangle(); Set ignoredWebs = ai_ignoredWebs(); L nodes = web_nodesNotFromCertainWebs(ignoredWebs, indexedNodes(selectedWord)); L rel1 = web_collectBackwardRelations(nodes); L rel2 = web_collectForwardRelations(nodes); //L is = ai_whatIs(selectedWord); final MultiMap mm = orderedMultiMap(); for (WebRelation r : rel2) mm.put(ai_textHTML(r) + t + ai_renderNodeHTML(r.b), r.web.globalID); for (WebRelation r : rel1) mm.put(ai_renderNodeHTML(r.a) + t + ai_textHTML(r) + t + ai_textHTML(r.b), r.web.globalID); for (WebNode n : nodes) if (n instanceof WebRelation) mm.put(ai_renderNodeHTML(n/WebRelation.a) + t + ai_textHTML(n) + t + ai_textHTML(n/WebRelation.b), n.web.globalID); long nVirtual = ai_numberOfVirtualWebs(); long mem = ai_html_wordThoughts_showMem ? memoryUsedAfterLastGC() : 0; ret h3(htmlencode(selectedWord)) + ul(map html_linkURLs_targetBlank( allToString( map(multiMapKeysByPopularity(mm), func(S s) { s + " [" + joinWithComma(map ai_html_linkedWeb(mm.get(s))) + "]" }) ))) + p(n(nodes, "node") + " out of " + ahref(smartBotURL(), nWebs(allIndexedWebs())) + (nVirtual == 0 ? "" : " + " + formatWithThousandsSeparator(nVirtual) + " virtual") + (mem == 0 ? "" : ". " + toMB(mem) + " MB used")); }