package Ġa lex . or ob in sk . code generation Ċ Ċ import Ġa lex . or ob in sk . annotation . Observable VM Ċ import Ġcom . google . auto . service . Auto Service Ċ import Ġjava . io . File Ċ import Ġjavax . annotation . processing .* Ċ import Ġjavax . lang . model . Source Version Ċ import Ġjavax . lang . model . element . Element Ċ import Ġjavax . lang . model . element . Type Element Ċ import Ġjavax . lang . model . util . Element Filter Ċ Ċ @ Auto Service ( Processor :: class ) Ċ @ Supported Source Version ( Source Version . RELEASE _ 8 ) Ċ @ Supported Options ( Builder Generator . K AP T _ K OT LIN _ GENERATED _ OPTION _ NAME ) Ċ class ĠViewModel Callback Generator : ĠAbstract Processor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Supported Annotation Types (): ĠMutable Set < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable Set Of ( Observable VM :: class . java . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Supported Source Version (): ĠSource Version Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSource Version . latest () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Class ( class Element : ĠElement ){ ĊĠĠĠĠĠĠĠ Ġwith ( class Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġsimple Name . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpack Ġ= Ġprocessing Env . element Utils . get Package Of ( this ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariables Ġ= ĠElement Filter . fields In ( enc losed Elements ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ"${ className } CallBack " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Content Ġ= ĠViewModel Callback Builder ( fileName , ĠclassName , Ġpack , Ġvariables ). getContent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk apt Kotlin Generated Dir Ġ= Ġprocessing Env . options [ K AP T _ K OT LIN _ GENERATED _ OPTION _ NAME ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( k apt Kotlin Generated Dir , Ġ"$ fileName . kt ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( file Content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( p 0 : ĠMutable Set < out ĠType Element > ?, Ġround Environment : ĠRound Environment ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ( round Environment ?. getElement s Annotated With ( Observable VM :: class . java ) Ġas ĠIterable < Element >) ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Class ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠK AP T _ K OT LIN _ GENERATED _ OPTION _ NAME Ġ= Ġ" k apt . kotlin . generated " ĊĠĠĠ Ġ} Ċ } Ċ