sS javaValueToHTML(O value, Set seen default identityHashSet()) {
if (!seen.add(value)) ret "see above";
if (value cast S)
ret htmlEncode_quote(value);
else if (value cast L)
ret ol(map(value, v -> javaValueToHTML(v, seen)));
else
ret htmlEncode(shorten(str(value)));
}