Perhaps I'm not understanding this properly, but a Map.toString() seems like a very weird thing to add to a StringBuilder.  Map's toString() method is pretty bad about being able to deserialize back into something meaningful.