As another (weird) datapoint, the CLI command "modref" spits out a list of modifiers, in what looks like an HTML table. This modref table does NOT have this strange multiplying display issue.
So, I looked at the two, and noticed that modref uses StringBuffer rather than the recommended StringBuilder. So I changed "banishes" to use this, and banishes still had the issue. Weirdly, having done so, "modref" also now has the issue for me, even though I didn't touch that function! And this issue continues even having reverted my changes and recompiled!!!!
Well, maybe not exactly the same problem, the table formatting is all over the place, and only the first 10 lines are duplicated.
Edit - Use of "mirror filename" to write the output to the pane to a file as well shows that the output is correct, so it's a html display issue not a stringbuilder one. As we convert both StringBuffer and StringBuilder to a String before passing to RequestLogger, that shouldn't matter.
So I guess the bug is with the parser used in later java for displaying HTMLDocument when content is test/html ?