@ file : Use Serial izers ( pb and k . ser . Timestamp Serializer :: class ) Ċ Ċ package Ġpb and k . w kt Ċ Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . json .* Ċ Ċ data Ġclass ĠTimestamp ( ĊĠĠĠ Ġval Ġseconds : ĠLong Ġ= Ġ 0 L , ĊĠĠĠ Ġval Ġnan os : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġval ĠunknownFields : ĠMap < Int , Ġpb and k . Unknown Field > Ġ= Ġempty Map () Ċ ) Ġ: Ġpb and k . Message < Timestamp > Ġ{ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠTimestamp ?) Ġ= Ġproto Merge Impl ( other ) ĊĠĠĠ Ġoverride Ġval Ġproto Size Ġby Ġlazy Ġ{ Ġproto Size Impl () Ġ} ĊĠĠĠ Ġoverride Ġfun Ġproto Marshal ( m : Ġpb and k . Marshaller ) Ġ= Ġproto Marshal Impl ( m ) ĊĠĠĠ Ġoverride Ġfun Ġjson Marshal ( json : ĠJson ) Ġ= Ġjson Marshal Impl ( json ) ĊĠĠĠ Ġfun ĠtoJson Mapper () Ġ= ĠtoJson Mapper Impl () ĊĠĠĠ Ġcompanion Ġobject Ġ: Ġpb and k . Message . Companion < Timestamp > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Instance Ġby Ġlazy Ġ{ ĠTimestamp () Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġproto Unmarshal ( u : Ġpb and k . Unmarshaller ) Ġ= ĠTimestamp . proto Unmarshal Impl ( u ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġjson Unmarshal ( json : ĠJson , Ġdata : ĠString ) Ġ= ĠTimestamp . json Unmarshal Impl ( json , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠJson Mapper Ġ( ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" seconds ") ĊĠĠĠĠĠĠĠ Ġval Ġseconds : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" nan os ") ĊĠĠĠĠĠĠĠ Ġval Ġnan os : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġto Message () Ġ= Ġto Message Impl () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTimestamp ?. or Default () Ġ= Ġthis Ġ?: ĠTimestamp . default Instance Ċ Ċ private Ġfun ĠTimestamp . proto Merge Impl ( plus : ĠTimestamp ?): ĠTimestamp Ġ= Ġplus ?. copy ( ĊĠĠĠ ĠunknownFields Ġ= ĠunknownFields Ġ+ Ġplus . unknownFields Ċ ) Ġ?: Ġthis Ċ Ċ private Ġfun ĠTimestamp . proto Size Impl (): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġproto Size Ġ= Ġ 0 ĊĠĠĠ Ġif Ġ( seconds Ġ!= Ġ 0 L ) Ġproto Size Ġ+= Ġpb and k . Sizer . tag Size ( 1 ) Ġ+ Ġpb and k . Sizer . int 6 4 Size ( seconds ) ĊĠĠĠ Ġif Ġ( nan os Ġ!= Ġ 0 ) Ġproto Size Ġ+= Ġpb and k . Sizer . tag Size ( 2 ) Ġ+ Ġpb and k . Sizer . int 3 2 Size ( nan os ) ĊĠĠĠ Ġproto Size Ġ+= ĠunknownFields . entries . sum By Ġ{ Ġit . value . size () Ġ} ĊĠĠĠ Ġreturn Ġproto Size Ċ } Ċ Ċ private Ġfun ĠTimestamp . proto Marshal Impl ( proto Marshal : Ġpb and k . Marshaller ) Ġ{ ĊĠĠĠ Ġif Ġ( seconds Ġ!= Ġ 0 L ) Ġproto Marshal . write Tag ( 8 ). writeInt 6 4 ( seconds ) ĊĠĠĠ Ġif Ġ( nan os Ġ!= Ġ 0 ) Ġproto Marshal . write Tag ( 1 6 ). writeInt 3 2 ( nan os ) ĊĠĠĠ Ġif Ġ( unknownFields . isNotEmpty ()) Ġproto Marshal . write UnknownFields ( unknownFields ) Ċ } Ċ Ċ private Ġfun ĠTimestamp . Companion . proto Unmarshal Impl ( proto Unmarshal : Ġpb and k . Unmarshaller ): ĠTimestamp Ġ{ ĊĠĠĠ Ġvar Ġseconds Ġ= Ġ 0 L ĊĠĠĠ Ġvar Ġnan os Ġ= Ġ 0 ĊĠĠĠ Ġwhile Ġ( true ) Ġwhen Ġ( proto Unmarshal . read Tag ()) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn ĠTimestamp ( seconds , Ġnan os , Ġproto Unmarshal . unknownFields ()) ĊĠĠĠĠĠĠĠĠ 8 Ġ-> Ġseconds Ġ= Ġproto Unmarshal . readInt 6 4 () ĊĠĠĠĠĠĠĠĠ 1 6 Ġ-> Ġnan os Ġ= Ġproto Unmarshal . readInt 3 2 () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġproto Unmarshal . unknown Field () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠTimestamp . toJson Mapper Impl (): ĠTimestamp . Json Mapper Ġ= ĊĠĠĠ ĠTimestamp . Json Mapper ( ĊĠĠĠĠĠĠĠ Ġseconds , ĊĠĠĠĠĠĠĠ Ġnan os ĊĠĠĠ Ġ) Ċ Ċ private Ġfun ĠTimestamp . Json Mapper . to Message Impl (): ĠTimestamp Ġ= ĊĠĠĠ ĠTimestamp ( ĊĠĠĠĠĠĠĠ Ġseconds Ġ= Ġseconds Ġ?: Ġ 0 L , ĊĠĠĠĠĠĠĠ Ġnan os Ġ= Ġnan os Ġ?: Ġ 0 ĊĠĠĠ Ġ) Ċ Ċ private Ġfun ĠTimestamp . json Marshal Impl ( json : ĠJson ): ĠString Ġ= ĊĠĠĠ Ġjson . stringify ( Timestamp . Json Mapper . serializer (), ĠtoJson Mapper ()) Ċ Ċ private Ġfun ĠTimestamp . Companion . json Unmarshal Impl ( json : ĠJson , Ġdata : ĠString ): ĠTimestamp Ġ{ ĊĠĠĠ Ġval Ġmapper Ġ= Ġjson . parse ( Timestamp . Json Mapper . serializer (), Ġdata ) ĊĠĠĠ Ġreturn Ġmapper . to Message () Ċ } Ċ