TypeRecordBuilder is overly specific to type records, even though 99% of it is re-usable for symbol records as well. Raise out the type specific stuff so that it can be used for writing symbols.
Do you think we'll ever want to merge the reading and writing code like the way we do it in yaml, or something else? This writing code is very redundant with the deserialize methods. I was holding out hope that we'd sort that out eventually.
I expect it will be hard to merge reading and writing code. The Yaml stuff does offer a nice pattern though, so maybe there's a way to do it elegantly. I guess I'm in the same boat as you. Still holding out hope? :)