/* Ċ Ġ* ĠTh r ifty Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation Ċ Ġ* Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the ĠLicense ); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠTHIS ĠCODE ĠIS ĠPROVIDED ĠON ĠAN Ġ Ġ* AS ĠIS * ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR Ċ Ġ* ĠCONDITIONS ĠOF ĠANY ĠKIND , ĠE IT HER ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING Ċ Ġ* ĠWITHOUT ĠLIMIT ATION ĠANY ĠIMPLIED ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠTITLE , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE , ĠMER CHANT AB L ITY ĠOR ĠNON - INFRINGEMENT . Ċ Ġ* Ċ Ġ* ĠSee Ġthe ĠApache ĠVersion Ġ 2 . 0 ĠLicense Ġfor Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . microsoft . thr ifty . compiler Ċ Ċ import Ġcom . microsoft . thr ifty . compiler . spi . Kotlin Type Processor Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġcom . squareup . kotlin po et . Property Spec Ċ import Ġcom . squareup . kotlin po et . Type Spec Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* ĠAn Ġexample Ġ[ Kotlin Type Processor ] Ġthat Ġimplements Ġ[ Serializable ] Ċ Ġ* Ġfor Ġall Ġgenerated Ġtypes . Ċ Ġ*/ Ċ class ĠSerializable Kotlin Processor Ġ: ĠKotlin Type Processor Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġprocess ( spec : ĠType Spec ): ĠType Spec ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġspec . to Builder (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Super interface ( Serializable :: class ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStatic Ġfields Ġin ĠKotlin Ġgo Ġin Ġa Ġcompanion Ġobject ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe 'll Ġassume Ġhere Ġthat Ġ` spec ` Ġdoes Ġnot Ġalready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhave Ġone . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompanion Type Ġ= ĠType Spec . comp anion Object Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addProperty ( Property Spec . builder (" serial VersionUID ", ĠLong :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( K Modifier . PRIVATE , ĠK Modifier . CONST ) Ġ// Ġconst Ġvals Ġin Ġcomp an ions Ġare Ġstatic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initializer ("% L ", Ġ- 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Type ( comp anion Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ