@ file : Suppress (" NOTH ING _ TO _ INLINE ", Ġ" unused ") Ċ Ċ package Ġru . in for ion . lab 4 0 3 . common . json Ċ Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . serializer Ċ import Ġjava . io . File Ċ import Ġjava . io . OutputStream Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . full . star Project ed Type Ċ Ċ // ĠEncoder Ġextensions Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠEncoder . encode Value ( value : ĠT ) Ġ= ĊĠĠĠ Ġencode Serializable Value ( serializers Module . serializer (), Ġvalue ) Ċ Ċ // ĠJson Ġencoding Ġextensions Ċ Ċ inline Ġfun ĠJson . encode ToString ( value : ĠAny ?, Ġtype : ĠK Type ) Ġ= ĊĠĠĠ Ġencode ToString ( serializers Module . serializer ( type ), Ġvalue ) Ċ Ċ inline Ġfun Ġ< T : ĠAny > ĠJson . encode ToString ( value : ĠT , Ġk Class : ĠK Class < T >) Ġ= ĊĠĠĠ Ġencode ToString ( serializers Module . serializer ( k Class . star Project ed Type ), Ġvalue ) Ċ Ċ inline Ġfun ĠJson . encode ToJson Element ( value : ĠAny ?, Ġtype : ĠK Type ) Ġ= ĊĠĠĠ Ġencode ToJson Element ( serializers Module . serializer ( type ), Ġvalue ) Ċ Ċ // ĠObjects Ġencoding Ġextensions Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠT . toJson ( mapper : ĠJson Ġ= Ġjson ) Ġ= Ġmapper . encode ToString ( this ) Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠT . toJson ( stream : ĠOutputStream , Ġmapper : ĠJson Ġ= Ġjson ) Ġ{ ĊĠĠĠ Ġval Ġjson Ġ= ĠtoJson ( mapper ) ĊĠĠĠ Ġwith Ġ( stream . buffered Writer ()) Ġ{ Ġwrite ( json ) Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠT . toJson ( file : ĠFile , Ġmapper : ĠJson Ġ= Ġjson ) Ġ= ĠtoJson ( file . output Stream (), Ġmapper ) Ċ Ċ inline Ġfun ĠAny ?. toJson ( mapper : ĠJson Ġ= Ġjson , Ġtype : ĠK Type ) Ġ= Ġmapper . encode ToString ( Ġthis , Ġtype ) Ċ Ċ inline Ġfun Ġ< T : ĠAny > ĠT . toJson ( mapper : ĠJson Ġ= Ġjson , Ġcls : ĠK Class < T >) Ġ= Ġmapper . encode ToString ( Ġthis , Ġcls )