package Ġcom . an ata wa 1 2 . mod Patch ing . common . internal Ċ Ċ import Ġkotlin . reflect . K Property Ċ Ċ internal Ġobject ĠDeleg ates Ġ{ ĊĠĠĠ Ġfun Ġ< T > Ġlazy () Ġ= ĠNon Free z able Deleg ated Value < T >( Default Holder ( not Initialized )) ĊĊĠĠĠ Ġfun Ġ< T > Ġlazy Free z able () Ġ= ĠFree z able Deleg ated Value < T >( Default Holder ( not Initialized )) ĊĊĠĠĠ Ġfun Ġ< T > Ġfree z able ( init : ĠT ) Ġ= ĠFree z able Deleg ated Value < T >( init . wrap Null ()) ĊĊĠĠĠ Ġfun Ġ< T > Ġwith Default ( default : Ġ() Ġ-> ĠT ) Ġ= ĠNon Free z able Deleg ated Value < T >( Default Holder Ġ{ Ġdefault () Ġ}) ĊĊĠĠĠ Ġfun Ġ< T > Ġwith Default Free z able ( default : Ġ() Ġ-> ĠT ) Ġ= ĠFree z able Deleg ated Value < T >( Default Holder Ġ{ Ġdefault () Ġ}) ĊĊĠĠĠ Ġprivate Ġval Ġnot Initialized : Ġ( String ) Ġ-> ĠNothing Ġ= Ġ{ Ġerror ("$ it Ġis Ġnot Ġinitialized ") Ġ} Ċ } Ċ Ċ internal Ġclass ĠDefault Holder < T >( val Ġfunc : Ġ( String ) Ġ-> ĠT ) Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun Ġ< T > Ġprocess Wrapped ( value Internal : ĠAny ?, Ġname : ĠString ): ĠT Ġ= ĊĠĠĠ Ġ( value Internal Ġas ? ĠDefault Holder < T >) ?. func ?. invoke ( name ) Ġ?: Ġ( value Internal Ġas ĠT ). unwrap Null < T >() Ċ Ċ // Ġinit : ĠNULL Ġor ĠT Ġor ĠDefault Holder < T > Ċ internal Ġclass ĠFree z able Deleg ated Value < T > Ġ( init : ĠAny ?) Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġvalue Internal : ĠAny ? Ġ= Ġinit ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġoperator Ġfun ĠgetValue ( this Ref : ĠFree z able Container , Ġproperty : ĠK Property < *> ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġprocess Wrapped ( value Internal , Ġproperty . name ) ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġoperator Ġfun ĠsetValue ( this Ref : ĠFree z able Container , Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ref . check Freeze ( property . name ) ĊĠĠĠĠĠĠĠ Ġthis . value Internal Ġ= Ġvalue . wrap Null () ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġinit : ĠNULL Ġor ĠT Ġor ĠDefault Holder < T > Ċ internal Ġclass ĠNon Free z able Deleg ated Value < T > Ġ( init : ĠAny ?) Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġvalue Internal : ĠAny ? Ġ= Ġinit ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġprocess Wrapped ( value Internal , Ġproperty . name ) ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Internal Ġ= Ġvalue . wrap Null () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠNULL Ġ= ĠAny () Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun Ġ< T Ġ: ĠAny > ĠT ?. wrap Null (): ĠT Ġ= Ġthis Ġ?: ĠNULL Ġas ĠT Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun Ġ< T > ĠT . unwrap Null (): ĠT Ġ= Ġ Ġthis . take Unless Ġ{ Ġit Ġ=== ĠNULL Ġ} Ġas ĠT Ċ