package Ġcom . net char . common . utils Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ class ĠWeak Ref < T Object >( obj : ĠTObject ? Ġ= Ġnull ) Ġ: ĠRead Write Property < Any ?, ĠTObject ?> Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġweak Reference : ĠWeak Reference < T Object >? Ġ= Ġobj ?. let Ġ{ ĠWeak Reference ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠTObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġweak Reference ?. get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠTObject ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġweak Reference Ġ= Ġvalue ?. let Ġ{ ĠWeak Reference ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Object > Ġweak ( obj : ĠTObject ? Ġ= Ġnull ) Ġ= ĠWeak Ref ( obj )