package Ġk job . core Ċ Ċ import Ġkotlin . reflect . K Class Ċ Ċ interface ĠBase Job Ġ{ ĊĠĠĠ Ġval Ġname : ĠString Ċ } Ċ Ċ abstract Ġclass ĠK ron Job ( override Ġval Ġname : ĠString , Ġval Ġcron Expression : ĠString ) Ġ: ĠBase Job Ċ Ċ abstract Ġclass ĠJob ( override Ġval Ġname : ĠString ) Ġ: ĠBase Job Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprop Names List Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġval Ġprop Names : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprop Names List ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġprotected Ġfun Ġ< T Ġ: ĠAny , ĠJ Ġ: ĠJob > ĠJ . serial izable ( name : ĠString , Ġk class : ĠK Class < T >): ĠProp < J , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠProp ( name . also ( prop Names List :: add ), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . integer ( name : ĠString ): ĠProp < J , ĠInt > Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . double ( name : ĠString ): ĠProp < J , ĠDouble > Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . long ( name : ĠString ): ĠProp < J , ĠLong > Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . bool ( name : ĠString ): ĠProp < J , ĠBoolean > Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . string ( name : ĠString ): ĠProp < J , ĠString > Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . integer List ( name : ĠString ): ĠProp < J , ĠList < Int >> Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . double List ( name : ĠString ): ĠProp < J , ĠList < Double >> Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . long List ( name : ĠString ): ĠProp < J , ĠList < Long >> Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . bool List ( name : ĠString ): ĠProp < J , ĠList < Boolean >> Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob > ĠJ . string List ( name : ĠString ): ĠProp < J , ĠList < String >> Ġ= ĠProp ( name . also ( prop Names List :: add )) ĊĊĊĠĠĠ Ġprotected Ġfun Ġ< J Ġ: ĠJob , ĠT Ġ: ĠAny > ĠProp < J , ĠT >. nullable (): ĠProp < J , ĠT ?> Ġ= ĠProp ( name ) Ċ } Ċ Ċ interface ĠProp < J Ġ: ĠJob , ĠT > Ġ{ ĊĠĠĠ Ġval Ġname : ĠString ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠImp l < J Ġ: ĠJob , ĠT >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserialize : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠProp < J , ĠT > ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġ< J Ġ: ĠJob , ĠT > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserialize : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ): ĠProp < J , ĠT > Ġ= ĠImp l ( name , Ġserialize ) ĊĠĠĠ Ġ} Ċ } Ċ