fun <T> T?.serializeOptionOf(
serializer: Serializer,
serializeElement: Serializer.(T) -> Unit,
) {
if (this != null) {
serializer.serialize_option_tag(true)
serializer.serializeElement(this)
} else {
serializer.serialize_option_tag(false)
}
}
fun <T> Deserializer.deserializeOptionOf(deserializeElement: (Deserializer) -> T): T? {
val tag = deserialize_option_tag()
return if (tag) {
deserializeElement(this)
} else {
null
}
}