package Ġcom . air bnb . par is . processor . framework . models Ċ Ċ import Ġcom . air bnb . par is . processor . framework .* Ċ import Ġjavax . lang . model . element .* Ċ import Ġjavax . lang . model . type . Type Mirror Ċ Ċ /** Ċ Ġ* ĠApplies Ġto ĠJava Ġfields Ġand ĠKotlin Ġproperties Ċ Ġ*/ Ċ abstract Ġclass ĠSky Companion Property Model ( val Ġelement : ĠVariable Element ) Ġ: ĠSky Model Ġ{ ĊĊĠĠĠ Ġval Ġen closing Element : ĠType Element Ġ= Ġelement . enc lo sing Element Ġas ĠType Element ĊĠĠĠ Ġval Ġtype : ĠType Mirror Ġ= Ġelement . as Type () ĊĠĠĠ Ġval Ġname : ĠString Ġ= Ġelement . simple Name . toString () ĊĠĠĠ Ġval Ġgetter Element : ĠElement ĊĠĠĠ Ġval Ġjava Getter : ĠJava Code Block ĊĠĠĠ Ġval Ġkotlin Getter : ĠKotlin Code Block ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element . is Java ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Element Ġ= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Getter Ġ= ĠJava Code Block . of ("\ $ N ", Ġelement . simple Name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn ĠKotlin Ġthe Ġannotated Ġelement Ġis Ġa Ġprivate Ġstatic Ġfield Ġwhich Ġis Ġaccomp an ied Ġby Ġa ĠComp anion Ġmethod ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgetter Name Ġ= Ġ" get ${ name . capitalize () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Element Ġ= Ġelement . siblings (). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. single Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠType Element Ġ&& Ġit . simple Name . toString () Ġ== Ġ" Companion " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enc losed Elements ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. single Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Simple Name Ġ= Ġit . simple Name . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠExec utable Element Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġproperty Ġis Ġpublic Ġthe Ġname Ġof Ġthe Ġgetter Ġfunction Ġwill Ġbe Ġpre pended Ġwith Ġ" get ". ĠIf Ġit 's Ġinternal , Ġit Ġwill Ġalso ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbe Ġappended Ġwith Ġ"$ " Ġand Ġan Ġarbitrary Ġstring Ġfor Ġob fusc ation Ġpurposes . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element Simple Name Ġ== Ġgetter Name Ġ|| Ġelement Simple Name . startsWith ("$ getter Name $ ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Getter Ġ= ĠJava Code Block . of (" Companion .\ $ N ()", Ġgetter Element . simple Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġkotlin Getter Ġ= ĠKotlin Code Block . of ("% N ()", Ġgetter Element . simple Name ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠSky Companion Property Model Factory < T Ġ: ĠSky Companion Property Model >( ĊĠĠĠ Ġoverride Ġval Ġprocessor : ĠSky Processor , ĊĠĠĠ Ġannotation Class : ĠClass < out ĠAnnotation > Ċ ) Ġ: ĠSky Model Factory < T , ĠVariable Element >( processor , Ġannotation Class ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( element : ĠElement ): ĠBoolean Ġ= Ġelement . kind Ġ== ĠElement Kind . FIELD Ċ } Ċ