package Ġcom . te o . tt ask s Ċ Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ open Ġclass ĠL ate Init < T Ġ: ĠAny >( ĊĠĠĠ Ġprivate Ġval Ġgetter : ĠField Holder < T >. () Ġ-> ĠT Ġ= Ġ{ Ġfield Ġ}, ĊĠĠĠ Ġprivate Ġval Ġsetter : ĠField Holder < T >. ( T ) Ġ-> ĠUnit Ġ= Ġ{ Ġfield Ġ= Ġit Ġ} Ċ ) Ġ: ĠRead Write Property < Any ?, ĠT > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfield Holder Ġ= ĠField Holder < T >() ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >) Ġ= Ġfield Holder . getter () ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ= Ġfield Holder . setter ( value ) ĊĊĠĠĠ Ġclass ĠField Holder < T Ġ: ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġfield : ĠT ĊĊĠĠĠĠĠĠĠ Ġ/** ĠCheck Ġif Ġthe Ġbacking Ġfield Ġhas Ġbeen Ġinitialized . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Initialized () Ġ= Ġ:: field . isInitialized ĊĠĠĠ Ġ} Ċ } Ċ