This allows making sure serialization and deserialization are in sync for types with asymetrical implementations.