package Ġmicro . apps . model Ċ Ċ import Ġcom . sk sam uel . avro 4 k . Av ro Fixed Ċ import Ġcom . sk sam uel . avro 4 k . Av ro Prop Ċ import Ġjava . io . Serializable Ġas ĠJava Serializable Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ import Ġkotlinx . serialization . Serial Info Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Transient Ċ import Ġkotlinx . serialization . protobuf . Proto Integer Type Ċ import Ġkotlinx . serialization . protobuf . Proto Type Ċ Ċ // Ġ---------------- Ċ // Ġ ĠUser - defined Ġserial Ġannotation Ġfor ĠProto Buf Ċ // Ġ---------------- Ċ @ Serial Info Ċ @ Target ( Annotation Target . PROPERTY ) Ċ annotation Ġclass ĠProto Id ( val Ġid : ĠInt ) Ċ Ċ // Ġ---------------- Ċ // Ġ Ġfor ĠKotlin ĠGradle ĠNo Arg Ġplugin Ċ // Ġ---------------- Ċ annotation Ġclass ĠNo Arg Ċ Ċ @ No Arg Ċ class ĠTest ( val Ġid : ĠInt ) Ċ Ċ sealed Ġclass ĠMessage Ġ: ĠJava Serializable Ċ Ċ /** ĠEvent ĠMessage ĠClass Ġ**/ Ċ data Ġclass ĠData Message ( ĊĠĠĠ Ġval Ġid : ĠUUID , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġlocation : ĠString Ġ= Ġ" CA ", ĊĠĠĠ Ġval Ġprice : ĠBigDecimal , ĊĠĠĠ Ġval Ġtimestamp : ĠInstant Ġ= ĠInstant . now () Ċ ) Ġ: ĠMessage (), ĠJava Serializable Ċ Ċ data Ġclass ĠF ruit ( var Ġname : ĠString Ġ= Ġ"", Ġvar Ġdescription : ĠString Ġ= Ġ"") Ċ Ċ data Ġclass ĠG reeting ( val Ġmessage : ĠString Ġ= Ġ"") Ċ Ċ @ Serializable Ċ enum Ġclass ĠGender Ġ{ ĊĠĠĠ ĠUNKNOWN , ĠM ALE , ĠF EM ALE ; ĊĊĠĠĠ Ġfun Ġis Unknown (): ĠBoolean Ġ= Ġthis Ġ== ĠUNKNOWN ĊĠĠĠ Ġfun Ġis Male (): ĠBoolean Ġ= Ġthis Ġ== ĠM ALE ĊĠĠĠ Ġfun Ġis Female (): ĠBoolean Ġ= Ġthis Ġ== ĠF EM ALE Ċ } Ċ Ċ @ Serializable Ċ @ Av ro Prop (" pi i ", Ġ" yes ") Ċ data Ġclass ĠName ( ĊĠĠĠ Ġ@ Proto Id ( 1 ) Ġval Ġfirst : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 2 ) Ġval Ġlast : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 3 ) Ġval Ġtitle : ĠString Ġ= Ġ"" Ċ ) Ċ Ċ @ Serializable Ċ @ Av ro Prop (" pi i ", Ġ" yes ") Ċ data Ġclass ĠAddress ( ĊĠĠĠ Ġ@ Proto Id ( 1 ) Ġval Ġsuite : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 2 ) Ġval Ġstreet : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 3 ) Ġval Ġcity : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 4 ) Ġval Ġstate : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 5 ) Ġval Ġcode : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 6 ) Ġval Ġcountry : ĠString Ċ ) Ċ Ċ @ Serializable Ċ data Ġclass ĠPerson ( ĊĠĠĠ Ġ@ Proto Id ( 1 ) Ġ@ Av ro Prop (" pi i ", Ġ" yes ") Ġval Ġid : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ Proto Id ( 2 ) Ġval Ġname : ĠName , ĊĠĠĠ Ġ@ Proto Id ( 3 ) Ġval Ġaddress : ĠAddress , ĊĠĠĠ Ġ@ Proto Id ( 4 ) Ġ@ Av ro Prop (" pi i ", Ġ" yes ") Ġval Ġgender : ĠGender , ĊĠĠĠ Ġ@ Proto Id ( 5 ) Ġ@ Av ro Prop (" pi i ", Ġ" yes ") Ġ@ Proto Type ( Proto Integer Type . SIGNED ) Ġval Ġage : ĠInt , ĊĠĠĠ Ġ@ Proto Id ( 6 ) Ġ@ Av ro Prop (" encrypted ", Ġ" yes ") Ġval Ġemail : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 7 ) Ġ@ Av ro Prop (" encrypted ", Ġ" yes ") Ġ@ Av ro Fixed ( 1 0 ) Ġval Ġphone : ĠString , ĊĠĠĠ Ġ@ Proto Id ( 8 ) Ġval Ġavatar : ĠString Ġ= Ġ" http :// www . gr avatar . com / avatar ", Ġ// ĠOptional ĊĠĠĠ Ġ@ Transient Ġval Ġvalid : ĠBoolean Ġ= Ġfalse Ġ// Ġnot Ġserialized : Ġexplicitly Ġtransient Ċ ) Ċ