/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġxml util . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġlic enced Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe Ġlicense Ġwith Ġthe Ġsource Ġdistribution . Ċ Ġ* ĠAlternatively , Ġyou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" unused ") Ċ Ċ package Ġnl . adapt ivity . xml . serialization . sealed . complex Ċ Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . modules . Empty Serial izers Module Ċ import Ġnl . adapt ivity . xml . serialization . TestBase Ċ import Ġnl . adapt ivity . xml util . serialization . XML Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ class ĠComplex Se aled Test Ġ: ĠTest Base < Complex Se aled Test . Complex Se aled Holder >( ĊĠĠĠ ĠComplex Se aled Holder (" a ", Ġ 1 , Ġ 1 . 5 f , ĠOption B 1 ( 5 , Ġ 6 , Ġ 7 )), ĊĠĠĠ ĠComplex Se aled Holder . serializer (), ĊĠĠĠ ĠEmpty Serial izers Module , ĊĠĠĠ ĠXML Ġ{ Ġauto Pol ymorphic Ġ= Ġtrue Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġexpected XML : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"< Complex Se aled Holder Ġa =\" a \" Ġb =\" 1 \" Ġc =\" 1 . 5 \">< Option B 1 Ġg =\" 5 \" Ġh =\" 6 \" Ġi =\" 7 \" /></ Complex Se aled Holder >" ĊĊĠĠĠ Ġoverride Ġval Ġexpected Json : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"{\" a \":\" a \",\" b \": 1 ,\" c \": 1 . 5 ,\" options \":{\" type \":\" nl . adapt ivity . xml . serialization . sealed . complex . Option B 1 \",\" g \": 5 ,\" h \": 6 ,\" i \": 7 }}" ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠComplex Se aled Holder ( val Ġa : ĠString , Ġval Ġb : ĠInt , Ġval Ġc : ĠFloat , Ġval Ġoptions : ĠOption ?) Ċ Ċ } Ċ Ċ @ Serializable Ċ sealed Ġclass ĠOption Ċ Ċ @ Serializable Ċ sealed Ġclass ĠOption B Ġ: ĠOption () Ċ Ċ @ Serializable Ċ private Ġclass ĠOption A ( val Ġd : ĠInt , Ġval Ġe : ĠInt , Ġval Ġf : ĠInt ) Ġ: ĠOption () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠOption A ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( d Ġ!= Ġother . d ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( e Ġ!= Ġother . e ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( f Ġ!= Ġother . f ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġd ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġe ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġf ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable Ċ private Ġclass ĠOption B 1 ( val Ġg : ĠInt , Ġval Ġh : ĠInt , Ġval Ġi : ĠInt ) Ġ: ĠOption B () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠOption B 1 ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( g Ġ!= Ġother . g ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( h Ġ!= Ġother . h ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġother . i ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġg ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġh ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġi ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable Ċ private Ġclass ĠOption B 2 ( val Ġj : ĠInt , Ġval Ġk : ĠInt , Ġval Ġl : ĠInt ) Ġ: ĠOption B () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠOption B 2 ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( j Ġ!= Ġother . j ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( k Ġ!= Ġother . k ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( l Ġ!= Ġother . l ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġj ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġk ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġl ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ