Sorry I missed this.
1) Yes, agree we should check Class identity also (I bet this makes some tests break, so that's going to be work to clean up).
2) Yes, SortedMap/Set will probably need special handling. I think a custom serializer is the way to go.
3) The current practice of registering a default serializer for things like Seq/Iterable is a really broken idea, and should probably be removed. You can write with those interfaces, but not read. Let's remove those and let the fields serializer handle it (and if it fails, fix that).
4) We need randomly generated object (non-tree) graphs (with scala check I think) and verify that they round-trip. I think the current tests are too weak.