package Ġcom . l hw dev . self Test Macro . api Ċ Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . descriptors . Primitive Kind Ċ import Ġkotlinx . serialization . descriptors . Primitive Serial Descriptor Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ import Ġkotlinx . serialization . json . Json ĊĊ Ċ @ Requires Opt In ( message Ġ= Ġ" This Ġapi Ġis Ġdangerous Ġto Ġuse . ĠYou Ġshould Ġget Ġuser Ġinformation Ġin Ġ' right ' Ġway Ġand Ġconfirm Ġuser Ġbefore Ġcalling Ġthis Ġapi .") Ċ public Ġannotation Ġclass ĠD angerous H cs Api ĊĊ Ċ public Ġval ĠJson Encode Defaults : ĠJson Ġ= ĠJson Ġ{ Ġencode Defaults Ġ= Ġtrue Ġ} Ċ public Ġval ĠJson L oose : ĠJson Ġ= ĠJson Ġ{ Ġignore Unknown Keys Ġ= Ġtrue Ġ} ĊĊ Ċ public Ġobject ĠYes No Serializer Ġ: ĠK Serializer < Boolean > Ġ{ Ċ ĉ override Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ċĉ ĉ Primitive Serial Descriptor (" com . l hw dev . self Test Macro . api . yes no ", ĠPrimitive Kind . STRING ) ĊĉĊ ĉ override Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠBoolean Ġ= Ġdecoder . decode String () Ġ== Ġ" Y " Ċ ĉ override Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠBoolean ) Ġ{ Ċĉ ĉ encoder . encode String ( if ( value ) Ġ" Y " Ġelse Ġ" N ") Ċ ĉ } Ċ } Ċ Ċ public Ġobject ĠInt AsString Serializer Ġ: ĠK Serializer < Int > Ġ{ Ċ ĉ override Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ċĉ ĉ Primitive Serial Descriptor ( Int AsString Serializer :: class . java . name , ĠPrimitive Kind . STRING ) ĊĉĊ ĉ override Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠInt Ġ= Ġdecoder . decode String (). toInt () ĊĉĊ ĉ override Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠInt ) Ġ{ Ċĉ ĉ encoder . encode String ( value . toString ()) Ċ ĉ } Ċ } ĊĊ Ċ public Ġopen Ġclass ĠPrimitive Mapping Serializer < Data , ĠRaw >( Ċ ĉ private Ġval Ġraw Serializer : ĠK Serializer < Raw >, Ċ ĉ serial Name : ĠString , Ċ ĉ primitive Kind : ĠPrimitive Kind , Ċ ĉ private Ġvar arg Ġval Ġmap : ĠPair < Data , ĠRaw > Ċ ) Ġ: ĠK Serializer < Data > Ġ{ Ċ ĉ override Ġval Ġdescriptor : ĠSerial Descriptor Ġ= ĠPrimitive Serial Descriptor ( serial Name Ġ= Ġserial Name , Ġkind Ġ= Ġprimitive Kind ) ĊĉĊ ĉ override Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠData Ġ{ Ċĉ ĉ val Ġraw Ġ= Ġraw Serializer . deserialize ( decoder ) Ċĉ ĉ return Ġmap . find Ġ{ Ġit . second Ġ== Ġraw Ġ} !!. first Ċ ĉ } ĊĉĊ ĉ override Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠData ) Ġ{ Ċĉ ĉ val Ġraw Ġ= Ġmap . find Ġ{ Ġit . first Ġ== Ġvalue Ġ} !!. second Ċĉ ĉ raw Serializer . serialize ( encoder , Ġraw ) Ċ ĉ } Ċ } Ċ