/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin x . serialization . compiler . resolve Ċ Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotated Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotations Ċ import Ġorg . jetbrains . kotlin . name . Class Id Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . platform . js . is Js Ċ import Ġorg . jetbrains . kotlin . platform . kon an . is Native Ċ import Ġorg . jetbrains . kotlin . psi . Kt Annotation Entry Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . annotation Class Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . module Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . platform Ċ import Ġorg . jetbrains . kotlin . resolve . lazy . descriptors . Lazy Annotation Descriptor Ċ import Ġorg . jetbrains . kotlin . resolve . scopes . get Descriptors Filtered Ċ import Ġorg . jetbrains . kotlin . types .* Ċ import Ġorg . jetbrains . kotlin . types . type Util . is Subtype Of Ċ import Ġorg . jetbrains . kotlin . types . type Util . represent ative Upper Bound Ċ import Ġorg . jetbrains . kotlin x . serialization . compiler . resolve . Serialization Annotations . inherit able Serial Info Fq Name Ċ import Ġorg . jetbrains . kotlin x . serialization . compiler . resolve . Serialization Annotations . serial Info Fq Name Ċ Ċ internal Ġfun Ġis Allowed To Have Auto Generated Serializer Methods ( ĊĠĠĠ Ġclass Descriptor : ĠClass Descriptor , ĊĠĠĠ Ġserial izable Class Descriptor : ĠClass Descriptor Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( serial izable Class Descriptor . is Serializable Enum ()) Ġreturn Ġtrue ĊĠĠĠ Ġ// Ġdon 't Ġgenerate Ġautomatically Ġanything Ġfor Ġenums Ġor Ġinterfaces Ġor Ġother Ġstrange Ġthings ĊĠĠĠ Ġif Ġ( serial izable Class Descriptor . kind Ġ!= ĠClass Kind . CLASS ) Ġreturn Ġfalse ĊĠĠĠ Ġ// Ġit Ġis Ġeither ĠGenerated Serializer Ġimplementation ĊĠĠĠ Ġ// Ġor Ġuser Ġimplementation Ġwhich Ġdoes Ġnot Ġhave Ġtype Ġparameters Ġ( to Ġbe Ġable Ġto Ġcorrectly Ġinitialize Ġdescriptor ) ĊĠĠĠ Ġreturn Ġclass Descriptor . type Constructor . sup ert ypes . any (:: isGenerated K Serializer ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( class Descriptor . type Constructor . sup ert ypes . any (:: is K Serializer ) Ġ&& Ġclass Descriptor . declared Type Parameters . isEmpty ()) Ċ } Ċ Ċ internal Ġfun Ġis K Serializer ( type : ĠKotlin Type ?): ĠBoolean Ġ= ĊĠĠĠ Ġtype Ġ!= Ġnull Ġ&& ĠKotlin Built Ins . is Construct ed From Given Class ( type , ĠSerial Entity Names . K SERIAL IZER _ NAME _ FQ ) Ċ Ċ internal Ġfun Ġis Generated K Serializer ( type : ĠKotlin Type ?): ĠBoolean Ġ= ĊĠĠĠ Ġtype Ġ!= Ġnull Ġ&& ĠKotlin Built Ins . is Construct ed From Given Class ( type , ĠSerial Entity Names . GENERATED _ SERIAL IZER _ FQ ) Ċ Ċ internal Ġfun ĠClass Descriptor . get Generated Serializer Descriptor (): ĠClass Descriptor Ġ= ĊĠĠĠ Ġmodule . getClass From Internal Serialization Package ( Serial Entity Names . GENERATED _ SERIAL IZER _ CLASS . identifier ) ĊĊ Ċ internal Ġfun ĠClass Descriptor . create Serializer Type For ( argument : ĠSimple Type , Ġbase Serializer Interface : ĠF q Name ): ĠSimple Type Ġ{ ĊĠĠĠ Ġval Ġprojection Type Ġ= ĠVari ance . IN VARIANT ĊĠĠĠ Ġval Ġtypes Ġ= ĠlistOf ( Type Projection Impl ( projection Type , Ġargument )) ĊĠĠĠ Ġval Ġdescriptor Ġ= Ġmodule . find Class Ac ross Module Dependencies ( Class Id . top Level ( base Serializer Interface )) ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Can 't Ġlocate Ġ$ base Serializer Interface . ĠIs Ġkotlinx - serialization Ġlibrary Ġpresent Ġin Ġcompile Ġclasspath ?") ĊĠĠĠ Ġreturn ĠKotlin Type Factory . simple NotNull Type ( Annotations . EMPTY , Ġdescriptor , Ġtypes ) Ċ } Ċ Ċ internal Ġfun Ġextract K Serializer Argument From Implementation ( implementation Class : ĠClass Descriptor ): ĠKotlin Type ? Ġ{ ĊĠĠĠ Ġval Ġsup ert ypes Ġ= Ġimplementation Class . type Constructor . sup ert ypes ĊĠĠĠ Ġval Ġk Serializer Sup ertype Ġ= Ġsup ert ypes . find Ġ{ Ġis Generated K Serializer ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġsup ert ypes . find Ġ{ Ġis K Serializer ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġk Serializer Sup ertype . arguments . first (). type Ċ } Ċ Ċ internal Ġval ĠDeclaration Descriptor . serial izable With : ĠKotlin Type ? ĊĠĠĠ Ġget () Ġ= Ġannotations . serial izable With ( module ) Ċ Ċ internal Ġfun ĠAn notations . serial izable With ( module : ĠModule Descriptor ): ĠKotlin Type ? Ġ= ĊĠĠĠ Ġthis . find Annotation Kotlin Type Value ( Serialization Annotations . serial izable Annotation Fq Name , Ġmodule ," with ") Ċ Ċ internal Ġval ĠDeclaration Descriptor . serializer For Class : ĠKotlin Type ? ĊĠĠĠ Ġget () Ġ= Ġannotations . find Annotation Kotlin Type Value ( Serialization Annotations . serializer Annotation Fq Name , Ġmodule , Ġ" for Class ") Ċ Ċ internal Ġval ĠClass Descriptor . is Serial Info Annotation : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġannotations . has Annotation ( serial Info Fq Name ) Ġ|| Ġannotations . has Annotation ( inherit able Serial Info Fq Name ) Ċ Ċ internal Ġval ĠClass Descriptor . is Inherit able Serial Info Annotation : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġannotations . has Annotation ( inherit able Serial Info Fq Name ) Ċ Ċ internal Ġval ĠAn notations . serial Name Value : ĠString ? ĊĠĠĠ Ġget () Ġ= Ġfind Annotation Constant Value ( Serialization Annotations . serial Name Annotation Fq Name , Ġ" value ") Ċ Ċ internal Ġval ĠAn notations . serial Required : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġhas Annotation ( Serialization Annotations . required Annotation Fq Name ) Ċ Ċ internal Ġval ĠAn notations . serial Transient : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġhas Annotation ( Serialization Annotations . serial Transient Fq Name ) Ċ Ċ // Ġ---------------------------------------- Ċ Ċ val ĠKotlin Type ?. to Class Descriptor : ĠClass Descriptor ? ĊĠĠĠ Ġ@ Jvm Name (" to Class Descriptor ") ĊĠĠĠ Ġget () Ġ= Ġthis ?. constructor ?. declaration Descriptor ?. let Ġ{ Ġdescriptor Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClass Descriptor Ġ-> Ġdescriptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠType Parameter Descriptor Ġ-> Ġdescriptor . represent ative Upper Bound . to Class Descriptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ internal Ġval ĠClass Descriptor . should Have Generated Methods In Companion : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġthis . is Serializable Object Ġ|| Ġthis . is Serializable Enum () Ġ|| Ġthis . kind Ġ== ĠClass Kind . CLASS Ġ&& Ġhas Serializable Annotation Ċ Ċ internal Ġval ĠClass Descriptor . is Serializable Object : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġkind Ġ== ĠClass Kind . OBJECT Ġ&& Ġhas Serializable Annotation Ċ Ċ internal Ġval ĠClass Descriptor . isIn tern ally Serializable Object : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġkind Ġ== ĠClass Kind . OBJECT Ġ&& Ġhas Serializable Annotation Without Args Ċ Ċ internal Ġval ĠClass Descriptor . is Internal Serializable : ĠBoolean Ġ// todo Ġnormal Ġchecking ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( kind Ġ!= ĠClass Kind . CLASS ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġhas Serializable Annotation Without Args ĊĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠClass Descriptor . is Serializable Enum (): ĠBoolean Ġ= Ġkind Ġ== ĠClass Kind . ENUM _ CLASS Ġ&& Ġhas Serializable Annotation Ċ Ċ internal Ġfun ĠClass Descriptor . isIn tern ally Serializable Enum (): ĠBoolean Ġ= Ġkind Ġ== ĠClass Kind . ENUM _ CLASS Ġ&& Ġhas Serializable Annotation Without Args Ċ Ċ internal Ġval ĠClass Descriptor . should Have Generated Serializer : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġ( is Internal Serializable Ġ&& Ġ( modal ity Ġ== ĠMod ality . FINAL Ġ|| Ġmod ality Ġ== ĠMod ality . OPEN )) Ġ|| Ġis Intern ally Serializable Enum () Ċ Ċ internal Ġfun ĠClass Descriptor . enum Entries (): ĠList < Class Descriptor > Ġ{ ĊĠĠĠ Ġcheck ( this . kind Ġ== ĠClass Kind . ENUM _ CLASS ) ĊĠĠĠ Ġreturn Ġun subst it uted Member Scope . get Cont ributed Descriptors (). as Sequence () ĊĠĠĠĠĠĠĠ Ġ. filter Is Instance < Class Descriptor >() ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . kind Ġ== ĠClass Kind . ENUM _ ENTRY Ġ} ĊĠĠĠĠĠĠĠ Ġ. toList () Ċ } Ċ Ċ internal Ġval ĠAn notations . has Any Serial Annotation : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġserial Name Value Ġ!= Ġnull Ġ|| Ġany Ġ{ Ġit . annotation Class ?. is Serial Info Annotation Ġ== Ġtrue Ġ} Ċ Ċ internal Ġval ĠClass Descriptor . has Serializable Annotation ĊĠĠĠ Ġget () Ġ= Ġannotations . has Annotation ( Serialization Annotations . serial izable Annotation Fq Name ) Ċ Ċ internal Ġval ĠClass Descriptor . has Serializable Annotation Without Args : ĠBoolean ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Serializable Annotation ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġprovided Ġdescriptor Ġis Ġlazy , Ġcarefully Ġlook Ġat Ġpsi Ġin Ġorder Ġnot Ġto Ġtrigger Ġfull Ġresolve Ġwhich Ġmay Ġbe Ġrecursive . ĊĠĠĠĠĠĠĠ Ġ// ĠOtherwise , Ġthis Ġdescriptor Ġis Ġdeserialized Ġfrom Ġanother Ġmodule Ġand Ġit Ġis ĠOK Ġto Ġcheck Ġvalue Ġright Ġaway . ĊĠĠĠĠĠĠĠ Ġval Ġpsi Ġ= Ġfind Serializable Annotation Declaration () Ġ?: Ġreturn Ġ( serial izable With Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpsi . value Arguments . isEmpty () ĊĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠAnnot ated . find Serializable Annotation Declaration (): ĠK t Annotation Entry ? Ġ{ ĊĠĠĠ Ġval Ġlazy Desc Ġ= Ġannotations . find Annotation ( Serialization Annotations . serial izable Annotation Fq Name ) Ġas ? ĠLazy Annotation Descriptor ĊĠĠĠ Ġreturn Ġlazy Desc ?. annotation Entry Ċ } Ċ Ċ // ĠFor Ġabstract Ġclasses Ġmarked Ġwith Ġ@ Serializable , Ċ // Ġmethods Ġare Ġgenerated Ġanyway Ġalthough Ġthey Ġshouldn 't Ġhave Ċ // Ġgenerated Ġ$ serializer Ġand Ġuse ĠPol ymorphic Ġone . Ċ internal Ġfun ĠClass Descriptor . is Abstract Or Se aled Serializable Class (): ĠBoolean Ġ= ĊĠĠĠ Ġis Internal Serializable Ġ&& Ġ( modal ity Ġ== ĠMod ality . AB STR ACT Ġ|| Ġmod ality Ġ== ĠMod ality . SE AL ED ) Ċ Ċ internal Ġfun ĠClass Descriptor . pol ymorphic Serializer If Applicable Autom atically (): ĠClass Descriptor ? Ġ{ ĊĠĠĠ Ġval Ġserializer Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġkind Ġ== ĠClass Kind . INTERFACE Ġ-> ĠSpecial Built ins . pol ymorphic Serializer ĊĠĠĠĠĠĠĠ Ġis Internal Serializable Ġ&& Ġmod ality Ġ== ĠMod ality . AB STR ACT Ġ-> ĠSpecial Built ins . pol ymorphic Serializer ĊĠĠĠĠĠĠĠ Ġis Internal Serializable Ġ&& Ġmod ality Ġ== ĠMod ality . SE AL ED Ġ-> ĠSpecial Built ins . sealed Serializer ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġserializer ?. let Ġ{ Ġmodule . getClass From Serialization Package ( it ) Ġ} Ċ } Ċ Ċ // Ġserializer Ġthat Ġwas Ġdeclared Ġfor Ġthis Ġtype Ċ internal Ġval ĠClass Descriptor ?. class Serializer : ĠClass Descriptor ? ĊĠĠĠ Ġget () Ġ= Ġthis ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġserializer Ġannotation Ġon Ġclass ? ĊĠĠĠĠĠĠĠ Ġserial izable With ?. let Ġ{ Ġreturn Ġit . to Class Descriptor Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġcompanion Ġobject Ġserializer ? ĊĠĠĠĠĠĠĠ Ġif Ġ( has Companion Object As Serializer ) Ġreturn Ġcompanion Object Descriptor ĊĠĠĠĠĠĠĠ Ġ// Ġcan Ġinfer Ġ@ Poly ? ĊĠĠĠĠĠĠĠ Ġpol ymorphic Serializer If Applicable Autom atically ()?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġdefault Ġserial izable ? ĊĠĠĠĠĠĠĠ Ġif Ġ( should Have Generated Serializer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ$ serializer Ġnested Ġclass ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . un subst it uted Member Scope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Descriptors Filtered ( name Filter Ġ= Ġ{ Ġit Ġ== ĠSerial Entity Names . SERIAL IZER _ CLASS _ NAME Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Class Descriptor >(). single OrNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ internal Ġval ĠClass Descriptor . has Companion Object As Serializer : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġis Intern ally Serializable Object Ġ|| Ġcompanion Object Descriptor ?. serializer For Class Ġ== Ġthis . default Type Ċ Ċ // Ġreturns Ġonly Ġuser - over rid en ĠSerializer Ċ internal Ġval ĠKotlin Type . over rid en Serializer : ĠKotlin Type ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġthis . to Class Descriptor Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġdesc . serial izable With ?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ internal Ġval ĠKotlin Type . generic Index : ĠInt ? ĊĠĠĠ Ġget () Ġ= Ġ( this . constructor . declaration Descriptor Ġas ? ĠType Parameter Descriptor )?. index Ċ Ċ internal Ġfun Ġget Serializable Class Descriptor By Companion ( this Descriptor : ĠClass Descriptor ): ĠClass Descriptor ? Ġ{ ĊĠĠĠ Ġif Ġ( this Descriptor . is Serializable Object ) Ġreturn Ġthis Descriptor ĊĠĠĠ Ġif Ġ(! this Descriptor . is Companion Object ) Ġreturn Ġnull ĊĠĠĠ Ġval Ġclass Descriptor Ġ= Ġ( this Descriptor . containing Declaration Ġas ? ĠClass Descriptor ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ(! class Descriptor . should Have Generated Methods In Companion ) Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġclass Descriptor Ċ } Ċ Ċ internal Ġfun ĠClass Descriptor . need Serializer Factory (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ(!( this . platform ?. is Native () Ġ== Ġtrue Ġ|| Ġthis . platform . is Js ())) Ġreturn Ġfalse ĊĠĠĠ Ġval Ġserial izable Class Ġ= Ġget Serializable Class Descriptor By Companion ( this ) Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ( serial izable Class . is Serializable Object ) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( serial izable Class . is Abstract Or Se aled Serializable Class ()) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( serial izable Class . declared Type Parameters . isEmpty ()) Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ internal Ġfun Ġget Serializable Class Descriptor By Serializer ( serializer Descriptor : ĠClass Descriptor ): ĠClass Descriptor ? Ġ{ ĊĠĠĠ Ġval Ġserializer For Class Ġ= Ġserializer Descriptor . serializer For Class ĊĠĠĠ Ġif Ġ( serializer For Class Ġ!= Ġnull ) Ġreturn Ġserializer For Class . to Class Descriptor ĊĠĠĠ Ġif Ġ( serializer Descriptor . name Ġ! in Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSerial Entity Names . SERIAL IZER _ CLASS _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSerial Entity Names . GENERATED _ SERIAL IZER _ CLASS ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ġreturn Ġnull ĊĠĠĠ Ġval Ġclass Descriptor Ġ= Ġ( serializer Descriptor . containing Declaration Ġas ? ĠClass Descriptor ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ(! class Descriptor . should Have Generated Serializer ) Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġclass Descriptor Ċ } Ċ Ċ internal Ġfun ĠClass Descriptor . check Serializable Class Property Result ( prop : ĠProperty Descriptor ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġprop . returnType !!. is Subtype Of ( getClass From Serialization Package ( Serial Entity Names . SERIAL _ DESCRIPTOR _ CLASS ). to Simple Type ( false )) Ġ// Ġtodo : Ġcache Ġlookup Ċ Ċ // Ġtodo : Ġserialization : Ġdo Ġan Ġactual Ġcheck Ġbetter Ġthat Ġjust Ġnumber Ġof Ġparameters Ċ internal Ġfun ĠClass Descriptor . check Save Method Parameters ( parameters : ĠList < Value Parameter Descriptor >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġparameters . size Ġ== Ġ 2 Ċ Ċ internal Ġfun ĠClass Descriptor . check Save MethodResult ( type : ĠKotlin Type ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Unit ( type ) Ċ Ċ // Ġtodo : Ġserialization : Ġdo Ġan Ġactual Ġcheck Ġbetter Ġthat Ġjust Ġnumber Ġof Ġparameters Ċ internal Ġfun ĠClass Descriptor . check Load Method Parameters ( parameters : ĠList < Value Parameter Descriptor >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġparameters . size Ġ== Ġ 1 Ċ Ċ internal Ġfun ĠClass Descriptor . check Load MethodResult ( type : ĠKotlin Type ): ĠBoolean Ġ= ĊĠĠĠ Ġget Serializable Class Descriptor By Serializer ( this )?. default Type Ġ== Ġtype Ċ