/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠSquare , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttps :// 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 . Ċ Ġ*/ Ċ package Ġcom . squareup . mos hi Ċ Ċ import Ġjava . lang . reflect . Type Ċ import Ġkotlin . annotation . Annotation Retention . RUNTIME Ċ Ċ /** ĠCustom izes Ġhow Ġa Ġtype Ġis Ġencoded Ġas ĠJSON . Ġ*/ Ċ @ Retention ( RUNTIME ) Ċ @ Must Be Document ed Ċ public Ġannotation Ġclass ĠJson Class ( ĊĠ Ġ/** ĊĠĠ Ġ* ĠTrue Ġto Ġtrigger Ġthe Ġannotation Ġprocessor Ġto Ġgenerate Ġan Ġadapter Ġfor Ġthis Ġtype . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠThere Ġare Ġcurrently Ġsome Ġrestrictions Ġon Ġwhich Ġtypes Ġthat Ġcan Ġbe Ġused Ġwith Ġgenerated ĊĠĠ Ġ* Ġadapters : ĊĠĠ Ġ* Ġ- ĠThe Ġclass Ġmust Ġbe Ġimplemented Ġin ĠKotlin Ġ( unless Ġusing Ġa Ġcustom Ġgenerator , Ġsee Ġ[ generator ]). ĊĠĠ Ġ* Ġ- ĠThe Ġclass Ġmay Ġnot Ġbe Ġan Ġabstract Ġclass , Ġan Ġinner Ġclass , Ġor Ġa Ġlocal Ġclass . ĊĠĠ Ġ* Ġ- ĠAll Ġsuper classes Ġmust Ġbe Ġimplemented Ġin ĠKotlin . ĊĠĠ Ġ* Ġ- ĠAll Ġproperties Ġmust Ġbe Ġpublic , Ġprotected , Ġor Ġinternal . ĊĠĠ Ġ* Ġ- ĠAll Ġproperties Ġmust Ġbe Ġeither Ġnon - transient Ġor Ġhave Ġa Ġdefault Ġvalue . ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġval Ġgenerate Adapter : ĠBoolean , ĊĠ Ġ/** ĊĠĠ Ġ* ĠAn Ġoptional Ġcustom Ġgenerator Ġtag Ġused Ġto Ġindicate Ġwhich Ġgenerator Ġshould Ġbe Ġused . ĠIf Ġempty , ĊĠĠ Ġ* ĠM oshi 's Ġannotation Ġprocessor Ġwill Ġgenerate Ġan Ġadapter Ġfor Ġthe Ġannotated Ġtype . ĠIf Ġnot Ġempty , ĊĠĠ Ġ* ĠM oshi 's Ġprocessor Ġwill Ġskip Ġit Ġand Ġdefer Ġto Ġa Ġcustom Ġgenerator . ĠThis Ġcan Ġbe Ġused Ġto Ġallow Ġother ĊĠĠ Ġ* Ġcustom Ġcode Ġgeneration Ġtools Ġto Ġrun Ġand Ġstill Ġallow ĠM oshi Ġto Ġread Ġtheir Ġgenerated ĠJson Adapter ĊĠĠ Ġ* Ġoutputs . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠRequirements Ġfor Ġgenerated Ġadapter Ġclass Ġsignatures : ĊĠĠ Ġ* Ġ- ĠThe Ġgenerated Ġadapter Ġmust Ġsubclass Ġ[ Json Adapter ] Ġand Ġbe Ġparameter ized Ġby Ġthis ĊĠĠ Ġ* Ġtype . ĊĠĠ Ġ* Ġ- Ġ[ Types . generated Json Adapter Name ] Ġshould Ġbe Ġused Ġfor Ġthe Ġfully Ġqualified Ġclass Ġname ĊĠĠ Ġ* Ġin Ġorder Ġfor ĠM oshi Ġto Ġcorrectly Ġresolve Ġand Ġload Ġthe Ġgenerated ĠJson Adapter . ĊĠĠ Ġ* Ġ- ĠThe Ġfirst Ġparameter Ġmust Ġbe Ġa Ġ[ M oshi ] Ġinstance . ĊĠĠ Ġ* Ġ- ĠIf Ġgeneric , Ġa Ġsecond Ġ[ Array < Type > ][ Type ] Ġparameter Ġshould Ġbe Ġdeclared Ġto Ġaccept Ġtype ĊĠĠ Ġ* Ġarguments . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠExample Ġfor Ġa Ġclass Ġ" Custom Type ": ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ* Ġclass ĠCustom Type Json Adapter ( mos hi : ĠM oshi , Ġtypes : ĠArray < Type >) Ġ: ĠJson Adapter < Custom Type >() Ġ{ ĊĠĠ Ġ* Ġ// Ġ... ĊĠĠ Ġ* Ġ} ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ* ĊĠĠ Ġ* ĠTo Ġhelp Ġensure Ġyour Ġown Ġgenerator Ġme ets Ġrequirements Ġabove , Ġyou Ġcan Ġuse ĠM oshi âĢĻ s Ġbuilt - in ĊĠĠ Ġ* Ġgenerator Ġto Ġcreate Ġthe ĠAPI Ġsignature Ġto Ġget Ġstarted , Ġthen Ġmake Ġyour Ġown Ġgenerator Ġmatch Ġthat ĊĠĠ Ġ* Ġexpected Ġsignature . ĊĠĠ Ġ*/ ĊĠ Ġval Ġgenerator : ĠString Ġ= Ġ"" Ċ ) Ċ