package Ġcom . alg ol ia . search . dsl . attributes Ċ Ċ import Ġcom . alg ol ia . search . dsl . DSL Ċ import Ġcom . alg ol ia . search . dsl . DSL Parameters Ċ import Ġcom . alg ol ia . search . model . Attribute Ċ import Ġcom . alg ol ia . search . model . settings . Search able Attribute Ċ Ċ /** Ċ Ġ* ĠDSL Ġfor Ġbuilding Ġa Ġ[ List ] Ġof Ġ[ Search able Attribute ]. Ċ Ġ*/ Ċ @ Suppress (" PropertyName ") Ċ @ DSL Parameters Ċ public Ġclass ĠDSL Search able Attributes ( ĊĠĠĠ Ġprivate Ġval Ġsearch able Attributes : ĠMutable List < Search able Attribute > Ġ= Ġmutable ListOf () Ċ ) Ġ{ ĊĊĠĠĠ Ġpublic Ġenum Ġclass ĠModifier Ġ{ ĊĠĠĠĠĠĠĠ ĠUn ordered ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval ĠUn ordered : ĠModifier Ġ= ĠModifier . Un ordered ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvenience Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠString . unary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġ+ Attribute ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvenience Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠAttribute . unary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġ+ Search able Attribute . Default ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġ[ this ] Ġto Ġ[ search able Attributes ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠSearch able Attribute . unary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch able Attributes Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvenience Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠModifier . invoke ( attribute : ĠString ): ĠSearch able Attribute Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinvoke ( Attribute ( attribute )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġan Ġ[ Search able Attribute ] Ġusing Ġ[ this ] Ġ[ Modifier ] Ġto Ġbe Ġapplied Ġon Ġ[ attribute ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠModifier . invoke ( attribute : ĠAttribute ): ĠSearch able Attribute Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . Un ordered Ġ-> ĠSearch able Attribute . Un ordered ( attribute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ: ĠDSL < DSL Search able Attributes , ĠList < Search able Attribute >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( block : ĠDSL Search able Attributes . () Ġ-> ĠUnit ): ĠList < Search able Attribute > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDSL Search able Attributes (). apply ( block ). search able Attributes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ