Sometimes you just want to drink something domestic.

There's also a stray require.  The stringbuilder param needn't be in the loop. I'll give it another look after tests pass.