A Single-Type VersionedDeserializer that serializes and deserializes into the same object.
This should be used in those cases when we already have an instance of the target object available during
deserialization and we only need to update its state.
Example:
*
class Segment { ... }
class SegmentSerializer extends VersionedSerializer.Direct {
// This is the version we'll be serializing now. We have already introduced read support for Version 1, but
// we cannot write into Version 1 until we know that all deployed code knows how to read it. In order to guarantee
// a successful upgrade when changing Versions, all existing code needs to know how to read the new version.