/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠOut fox , Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġio . out fo xx . typescript po et Ċ Ċ /** ĠA Ġgenerated Ġproperty Ġdeclaration . Ġ*/ Ċ class ĠProperty Spec Ċ private Ġconstructor ( ĊĠ Ġbuilder : ĠBuilder Ċ ) Ġ: ĠTag gable ( builder . tags . to Immutable Map ()) Ġ{ ĊĊĠ Ġval Ġname Ġ= Ġbuilder . name ĊĠ Ġval Ġtype Ġ= Ġbuilder . type ĊĠ Ġval Ġts Doc Ġ= Ġbuilder . ts Doc . build () ĊĠ Ġval Ġdecorators Ġ= Ġbuilder . decorators . to ImmutableList () ĊĠ Ġval Ġmodifiers Ġ= Ġbuilder . modifiers . to Immutable Set () ĊĠ Ġval Ġinitializer Ġ= Ġbuilder . initializer ĊĠ Ġval Ġoptional Ġ= Ġbuilder . optional ĊĊĠ Ġinternal Ġfun Ġemit ( ĊĠĠĠ Ġcode Writer : ĠCode Writer , ĊĠĠĠ Ġimplicit Modifiers : ĠSet < Modifier >, ĊĠĠĠ Ġas Statement : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġwith Initializer : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcompact Optional Allowed : ĠBoolean Ġ= Ġfalse , ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġcode Writer . emit T SD oc ( ts Doc ) ĊĠĠĠ Ġcode Writer . emit Decor ators ( decorators , Ġfalse ) ĊĠĠĠ Ġcode Writer . emit Modifiers ( modifiers , Ġimplicit Modifiers ) ĊĠĠĠ Ġcode Writer . emit Code ( ĊĠĠĠĠĠ ĠCode Block . of ( ĊĠĠĠĠĠĠĠ Ġ"% L ${ if Ġ( optional Ġ&& Ġcompact Optional Allowed ) Ġ" ?" Ġelse Ġ"" }: Ġ% T ${ if Ġ( optional Ġ&& Ġ! compact Optional Allowed ) Ġ" Ġ| Ġundefined " Ġelse Ġ"" }", ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġtype ĊĠĠĠĠĠ Ġ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġif Ġ( with Initializer Ġ&& Ġinitializer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġcode Writer . emit (" Ġ= Ġ") ĊĠĠĠĠĠ Ġcode Writer . emit Code ( Code Block . of ("% [% L % ]", Ġinitializer )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( as Statement ) Ġ{ ĊĠĠĠĠĠ Ġcode Writer . emit (" ;\ n ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString () Ġ= Ġbuild Code String Ġ{ Ġemit ( this , Ġempty Set ()) Ġ} ĊĊĠ Ġfun Ġto Builder (): ĠBuilder Ġ{ ĊĠĠĠ Ġval Ġb ldr Ġ= ĠBuilder ( name , Ġtype , Ġoptional ) ĊĠĠĠĠĠ Ġ. add T SD oc ( ts Doc ) ĊĠĠĠĠĠ Ġ. add Decor ators ( decorators ) ĊĠĠĠĠĠ Ġ. add Modifiers (* modifiers . to Typed Array ()) ĊĠĠĠ Ġinitializer ?. let Ġ{ Ġb ldr . initializer ( it ) Ġ} ĊĊĠĠĠ Ġreturn Ġb ldr ĊĠ Ġ} ĊĊĠ Ġclass ĠBuilder Ġinternal Ġconstructor ( ĊĠĠĠ Ġinternal Ġval Ġname : ĠString , ĊĠĠĠ Ġinternal Ġval Ġtype : ĠType Name , ĊĠĠĠ Ġinternal Ġvar Ġoptional : ĠBoolean ĊĠ Ġ) Ġ: ĠTag gable . Builder < Builder >() Ġ{ ĊĊĠĠĠ Ġinternal Ġval Ġts Doc Ġ= ĠCode Block . builder () ĊĠĠĠ Ġinternal Ġval Ġdecorators Ġ= Ġmutable ListOf < Decorator Spec >() ĊĠĠĠ Ġinternal Ġval Ġmodifiers Ġ= Ġmutable ListOf < Modifier >() ĊĠĠĠ Ġinternal Ġvar Ġinitializer : ĠCode Block ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġadd T SD oc ( format : ĠString , Ġvar arg Ġargs : ĠAny ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġts Doc . add ( format , Ġ* args ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd T SD oc ( block : ĠCode Block ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġts Doc . add ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Decor ators ( decorator Specs : ĠIterable < Decorator Spec >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġdecorators Ġ+= Ġdecorator Specs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Decorator ( decorator Spec : ĠDecor ator Spec ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġdecorators Ġ+= Ġdecorator Spec ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Modifiers ( var arg Ġmodifiers : ĠModifier ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġthis . modifiers Ġ+= Ġmodifiers ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoptional ( optional : ĠBoolean ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġthis . optional Ġ= Ġoptional ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitializer ( format : ĠString , Ġvar arg Ġargs : ĠAny ?) Ġ= Ġinitializer ( ĊĠĠĠĠĠ ĠCode Block . of ( format , Ġ* args ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġinitializer ( code Block : ĠCode Block ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġcheck ( this . initializer Ġ== Ġnull ) Ġ{ Ġ" initializer Ġwas Ġalready Ġset " Ġ} ĊĠĠĠĠĠ Ġthis . initializer Ġ= Ġcode Block ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild () Ġ= ĠProperty Spec ( this ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġbuilder ( name : ĠString , Ġtype : ĠType Name , Ġoptional : ĠBoolean Ġ= Ġfalse , Ġvar arg Ġmodifiers : ĠModifier ): ĠBuilder Ġ{ ĊĠĠĠĠĠ Ġreturn ĠBuilder ( name , Ġtype , Ġoptional ). add Modifiers (* modifiers ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ