package Ġcom . github . o ow ek y ala . ij cc . util Ċ Ċ import Ġjava . lang . ref . Reference Ċ import Ġjava . lang . ref . Soft Reference Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠDeleg ated Ġproperty Ġtype . Ċ Ġ* Ċ Ġ* Ġ@ author ĠCl Ã©ment ĠF o urn ier Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ class ĠSoft Reference Cache < T >( private Ġval Ġsupplier : Ġ() Ġ-> ĠT ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġref : ĠReference < T >? Ġ= Ġnull ĊĊĠĠĠ Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġref ?. get () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cached Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsupplier () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref Ġ= ĠSoft Reference ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġcached ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ fun Ġ< T > Ġsoft Cache ( supplier : Ġ() Ġ-> ĠT ) Ġ= ĠSoft Reference Cache ( supplier )