package Ġkotlinx . kotlin ui Ċ Ċ import Ġkotlinx . ptype . P Type Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . descriptors .* Ċ import Ġkotlinx . serialization . encoding .* Ċ import Ġkotlin . reflect . K Type Ċ Ċ @ Serializable ( with Ġ= ĠMenu Style Modifier . Serializer :: class ) Ċ internal Ġdata Ġclass ĠMenu Style Modifier < Style Ġ: ĠMenu Style >( ĊĠĠĠ Ġ@ Pol ymorphic Ġval Ġstyle : ĠStyle Ċ ) Ġ: ĠView Modifier Ġ{ Ċ // ĠĠĠ Ġfun Ġbody ( content : ĠAny View ) Ġ: ĠAny View Ġ= Ġaction ( Any View Ġ{ Ġcontent Ġ}) ĊĊĠĠĠ Ġ// : ĠCod able ĊĠĠĠ Ġinternal Ġclass ĠSerializer < Style Ġ: ĠMenu Style > Ġ: ĠK Serializer < Menu Style Modifier < Style >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Serializer Ġ= ĠPol ymorphic Serializer ( Any :: class ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Class Serial Descriptor (": Menu Style Modifier ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement < String >(" style ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠMenu Style Modifier < Style >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . encode Structure ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Serializable Element ( descriptor , Ġ 0 , Ġstyle Serializer , Ġvalue . style ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠMenu Style Modifier < Style > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder . decode Structure ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġstyle : ĠStyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġindex Ġ= Ġdecode Element Index ( descriptor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġstyle Ġ= Ġdecode Serializable Element ( descriptor , Ġ 0 , Ġstyle Serializer ) Ġas ĠStyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComposite Decoder . DECODE _ DONE Ġ-> Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġindex : Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenu Style Modifier ( style ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// : ĠRegister ĊĠĠĠĠĠĠĠ Ġfun Ġregister () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Type . register < Menu Style Modifier < Menu Style >>() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Type . register < Border less Button Menu Style >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Type . register < Default Menu Style >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Type . register < Border ed Button Menu Style >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠMenu Style Ġ{ ĊĠĠĠ Ġfun Ġmake Body ( configuration : ĠMenu Style Configuration ): ĠView Ċ } Ċ Ċ @ Serializable Ċ @ Serial Name (": Border less Button Menu Style ") Ċ class ĠBorder less Button Menu Style Ġ: ĠMenu Style Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġother Ġis ĠBorder less Button Menu Style ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġjava Class . hashCode () ĊĠĠĠ Ġoverride Ġfun Ġmake Body ( configuration : ĠMenu Style Configuration ): ĠView Ġ= Ġconfiguration . label Ċ } Ċ Ċ @ Serializable Ċ @ Serial Name (": Default Menu Style ") Ċ class ĠDefault Menu Style Ġ: ĠMenu Style Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġother Ġis ĠDefault Menu Style ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġjava Class . hashCode () ĊĠĠĠ Ġoverride Ġfun Ġmake Body ( configuration : ĠMenu Style Configuration ): ĠView Ġ= Ġconfiguration . label Ċ } Ċ Ċ @ Serializable Ċ @ Serial Name (": Border ed Button Menu Style ") Ċ class ĠB ordered Button Menu Style Ġ: ĠMenu Style Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġother Ġis ĠB ordered Button Menu Style ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġjava Class . hashCode () ĊĠĠĠ Ġoverride Ġfun Ġmake Body ( configuration : ĠMenu Style Configuration ): ĠView Ġ= Ġconfiguration . label Ċ } Ċ Ċ class ĠMenu Style Configuration Ġ{ ĊĠĠĠ Ġclass ĠContent Ġ: ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbody : ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġerror (" Never ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠLabel Ġ: ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbody : ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġerror (" Never ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġlabel : ĠLabel Ġ= ĠLabel () Ċ }