package Ġkotlinx . kotlin ui čĊč Ċ import Ġkotlinx . serialization .* č Ċ import Ġkotlinx . serialization . descriptors .* č Ċ import Ġkotlinx . serialization . encoding .* čĊč Ċ @ Serializable ( with Ġ= ĠPoint . Serializer :: class ) č Ċ data Ġclass ĠPoint ( var Ġx : ĠInt , Ġvar Ġy : ĠInt ) Ġ{ čĊĠĠĠ Ġ// : ĠCod able čĊĠĠĠ Ġinternal Ġobject ĠSerializer Ġ: ĠK Serializer < Point > Ġ{ čĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Class Serial Descriptor (": Point ") Ġ{} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠPoint ) Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . encode Serializable Value ( serializer < IntArray >(), ĠarrayOf ( value . x , Ġvalue . y ). to IntArray ()) čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠPoint Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder . decode Serializable Value ( serializer < IntArray > ()). let Ġ{ ĠPoint ( it [ 0 ], Ġit [ 1 ]) Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġzero Ġ= ĠPoint ( 0 , Ġ 0 ) čĊĠĠĠ Ġ} č Ċ }