/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . serialization . internal Ċ Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlin . reflect .* Ċ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ internal Ġactual Ġinline Ġfun Ġ< T > ĠArray < T >. get Checked ( index : ĠInt ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġget ( index ) Ċ } Ċ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ internal Ġactual Ġinline Ġfun ĠBoolean Array . get Checked ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġget ( index ) Ċ } Ċ Ċ internal Ġactual Ġfun ĠK Class <* >. platform Specific Serializer Not Registered (): ĠNothing Ġ{ ĊĠĠĠ Ġthrow ĠSerialization Exception ( ĊĠĠĠĠĠĠĠ Ġ" Serializer Ġfor Ġclass Ġ'${ simple Name }' Ġis Ġnot Ġfound .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mark Ġthe Ġclass Ġas Ġ@ Serializable Ġor Ġprovide Ġthe Ġserializer Ġexplicitly .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" On ĠKotlin / Native Ġexplicitly Ġdeclared Ġserializer Ġshould Ġbe Ġused Ġfor Ġinterfaces Ġand Ġenums Ġwithout Ġ@ Serializable Ġannotation " ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Suppress ( ĊĠĠĠ Ġ" UN CHECK ED _ CAST ", ĊĠĠĠ Ġ" DE PREC ATION _ ERROR " Ċ ) Ċ @ Opt In ( Experimental Associated Objects :: class ) Ċ internal Ġactual Ġfun Ġ< T Ġ: ĠAny > ĠK Class < T >. construct Serializer For Given Type Args ( var arg Ġargs : ĠK Serializer < Any ?> ): ĠK Serializer < T >? Ġ= ĊĠĠĠ Ġwhen Ġ( val Ġassoc Object Ġ= Ġfind Associated Object < Serializable With >()) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠK Serializer < *> Ġ-> Ġassoc Object Ġas ĠK Serializer < T > ĊĠĠĠĠĠĠĠ Ġis Ġkotlinx . serialization . internal . Serializer Factory Ġ-> Ġassoc Object . serializer (* args ) Ġas ĠK Serializer < T > ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ Ċ @ Suppress ( ĊĠĠĠ Ġ" UN CHECK ED _ CAST ", ĊĠĠĠ Ġ" DE PREC ATION _ ERROR " Ċ ) Ċ @ Opt In ( Experimental Associated Objects :: class ) Ċ internal Ġactual Ġfun Ġ< T Ġ: ĠAny > ĠK Class < T >. compiled Serializer Impl (): ĠK Serializer < T >? Ġ= ĊĠĠĠ Ġthis . construct Serializer For Given Type Args () Ċ Ċ internal Ġactual Ġfun Ġ< T Ġ: ĠAny , ĠE Ġ: ĠT ?> ĠArrayList < E >. to Native Array Impl ( e Class : ĠK Class < T >): ĠArray < E > Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠarrayOf Any Null s < E >( size ) ĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( element Ġin Ġthis ) Ġresult [ index ++] Ġ= Ġelement ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ", Ġ" USE LESS _ CAST ") ĊĠĠĠ Ġreturn Ġresult Ġas ĠArray < E > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun Ġ< T > ĠarrayOf Any Null s ( size : ĠInt ): ĠArray < T > Ġ= ĠarrayOf Null s < Any >( size ) Ġas ĠArray < T > Ċ Ċ internal Ġactual Ġfun ĠAny . isInstanceOf ( k class : ĠK Class < *> ): ĠBoolean Ġ= Ġk class . is Instance ( this ) Ċ Ċ internal Ġactual Ġfun Ġis Reference Array ( root Class : ĠK Class < Any >): ĠBoolean Ġ= Ġroot Class Ġ== ĠArray :: class Ċ