object TimeStampSurrogateSerializer : KSerializer { override val descriptor: SerialDescriptor = TimestampSurrogate.serializer().descriptor override fun serialize(encoder: Encoder, value: Timestamp) { val surrogate = TimestampSurrogate(value.date.getAsTime()) encoder.encodeSerializableValue(TimestampSurrogate.serializer(), surrogate) } override fun deserialize(decoder: Decoder): Timestamp { val surrogate = decoder.decodeSerializableValue(TimestampSurrogate.serializer()) return Timestamp(Date(surrogate.timeInMillis)) } }