package Ġcom . qu ittle . a 1 1 y ally . base Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* ĠWrapper Ġaround Ġa ĠWeak Reference Ġwith Ġa Ġgenerator Ġfunction Ġto Ġl az ily Ġre calculate Ġit Ġwhen Ġrequired . Ċ Ġ*/ Ċ class ĠRefresh able Weak Reference < T >( initial Value : ĠT ?, Ġprivate Ġval Ġm Refresh : Ġ() Ġ-> ĠT ) Ġ{ ĊĠĠĠ Ġconstructor ( refresh : Ġ() Ġ-> ĠT ) Ġ: Ġthis ( null , Ġrefresh ) ĊĊĠĠĠ Ġprivate Ġvar Ġreference : ĠWeak Reference < T > Ġ= ĠWeak Reference ( initial Value ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġinstance Ġof ĠT . ĠThis Ġmay Ġbe Ġthe Ġinitial Ġvalue Ġif Ġpassed Ġin Ġduring Ġconstruction Ġor ĊĠĠĠĠ Ġ* Ġan Ġinstance Ġgenerated Ġby Ġ[ m Refresh ] Ġif Ġpreviously Ġgarbage Ġcollected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġreference . get () ĊĠĠĠĠĠĠĠ Ġif Ġ( value . isNotNull ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġm Refresh () ĊĠĠĠĠĠĠĠ Ġreference Ġ= ĠWeak Reference ( value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ