Just in case. Without the ability to provide the initial singletons state, there's not a way to do singleton processing correctly without using unexported methods. Since we're passing indent through to renderTags I thought I'd just throw in singletons as well.