package Ġtz . co . as oft Ċ Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . descriptors . build Class Serial Descriptor Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ Ċ internal Ġobject ĠMoney Serializer Ġ: ĠK Serializer < Money > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ġbuild Class Serial Descriptor (" money ") ĊĊĠĠĠ Ġ@ Opt In ( Experimental Std lib Api :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠMoney Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplits Ġ= Ġbuild List Ġ{ Ġrepeat ( 7 ) Ġ{ Ġadd ( decoder . decode String ()) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMoney ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsplits [ 0 ]. to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Ġ= ĠCurrency ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġsplits [ 6 ]. toUpperCase (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmallest Unit Multiplier Ġ= Ġsplits [ 3 ]. to Short (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmallest Unit Ġ= Ġsplits [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠMoney ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcur Ġ= Ġvalue . cur ĊĠĠĠĠĠĠĠ Ġval Ġunit Ġ= Ġcur . sm allest Unit ĊĠĠĠĠĠĠĠ Ġval Ġcur Name Ġ= Ġcur . name ĊĠĠĠĠĠĠĠ Ġencoder . encode String ("${ value . value } Ġ$ unit Ġ@ Ġ${ cur . sm allest Unit Multiplier } Ġ$ unit Ġper Ġ$ cur Name ") ĊĠĠĠ Ġ} Ċ }