package Ġcom . wh ens unset . annotation _ processing . preference . model Ċ Ċ import Ġcom . squareup . jav ap o et . Code Block Ċ import Ġcom . squareup . jav ap o et . Method Spec Ċ import Ġcom . squareup . jav ap o et . TypeName Ċ import Ġcom . squareup . jav ap o et . Type Spec Ċ import Ġjavax . lang . model . element . Modifier Ċ Ċ abstract Ġclass ĠBase Method Builder ( ĊĠĠĠĠĠĠĠ Ġval Ġm Type : ĠType Spec . Builder , ĊĠĠĠĠĠĠĠ Ġval Ġm Sa vers : ĠMutable Map < TypeName , ĠMethod Spec . Builder > Ċ ) Ġ{ ĊĊĠĠĠ Ġinternal Ġfun Ġappend Saver ( clazz : ĠType Name , Ġtype : ĠType Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldName : ĠString , Ġreal key : ĠCode Block ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġreal Type Ġ= Ġbuild Real Type ( type ) ĊĠĠĠĠĠĠĠ Ġvar Ġreal Value Ġ= Ġbuild Real Value ("${ Preference Helper Builder . s Param Object }. $ fieldName ") ĊĊĠĠĠĠĠĠĠ Ġm Sa vers . compute If Absent ( clazz , ĠPreference Gen Utils . build Save Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("\ $ L ", ĠPreference Gen Utils . gen Put Code ( real Type . getName (), Ġreal key , Ġreal Value )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġappend Operator ( clazz : ĠType Name , Ġtype : ĠType Name , ĠfieldName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal key : ĠCode Block , Ġpure Key : ĠString , Ġremov able : ĠBoolean , Ġdef : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġreal Type Ġ= Ġbuild Real Type ( type ) ĊĠĠĠĠĠĠĠ Ġvar Ġreal Value Ġ= Ġbuild Real Value ( Preference Helper Builder . s Param Value ) ĊĠĠĠĠĠĠĠ Ġvar Ġreal Default Ġ= Ġbuild Real Default ( def ) ĊĠĠĠĠĠĠĠ Ġval Ġgetter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Get ( Method Spec . method Builder (" get $ pure Key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( Modifier . PUBLIC , ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Javadoc ("@ see Ġ\$ T # \$ L ", Ġclazz , ĠfieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġpure Key , Ġreal key , Ġreal Default , Ġreal Type . getName (), Ġtype , Ġreal Type ). build () ĊĠĠĠĠĠĠĠ Ġm Type . add Method ( getter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsetter Ġ= ĠMethod Spec . method Builder (" set $ pure Key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( Modifier . PUBLIC , ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter ( type , ĠPreference Helper Builder . s Param Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("\ $ T Ġ${ Preference Helper Builder . s Var Editor } Ġ= Ġ${ Preference Helper Builder . s Field Preference }. edit ()", ĠPreference Helper Builder . sType Editor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("\ $ L ", ĠPreference Gen Utils . gen Put Code ( real Type . getName (), Ġreal key , Ġreal Value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("${ Preference Helper Builder . s Var Editor }. apply () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġm Type . add Method ( setter ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( re mov able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= ĠMethod Spec . method Builder (" remove $ pure Key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( Modifier . PUBLIC , ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("${ Preference Helper Builder . s Field Preference }. edit (). remove ($ real key ). apply () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Type . add Method ( remo ver ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbuild Real Default ( def : ĠString ): ĠString ĊĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbuild Real Type ( raw Type : ĠType Name ): ĠType Name ĊĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbuild Real Value ( param : ĠString ): ĠCode Block ĊĊĠĠĠ Ġinternal Ġabstract Ġfun Ġbuild Get ( getter : ĠMethod Spec . Builder , Ġpure Name : ĠString , Ġreal key : ĠCode Block , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef : ĠString , Ġtype : ĠString , Ġraw Type : ĠType Name , Ġreal Type : ĠType Name ): ĠMethod Spec . Builder Ċ }