This seems like the right place to add exhaustive serialization testing of all commands, for both of the versioned serializers. 

Perhaps also clean it up a bit, because now with the init() methods, it's a bit harder to read what's happening here. One way to do that would be to have init() return 'this', so it can be used in a builder-style pattern. Then the command creation can be inlined into the assert...() call as it were before.