package Ġca . log ar itm . de zel . core Ċ Ċ import Ġjava . lang . ref . Reference Queue Ċ Ċ /** Ċ Ġ* Ġ@ class ĠJavaScript Value Reference Ċ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċ Ġ* Ġ@ hidden Ċ Ġ*/ Ċ public Ġclass ĠJavaScript Value Reference ( refer ent : ĠJavaScript Value , Ġqueue : ĠReference Queue < Any >): ĠFinal izable Reference < JavaScript Value >( refer ent , Ġqueue ) Ġ{ ĊĊ ĉ comp anion Ġobject Ġ{ ĊĊĉ ĉ private Ġval Ġrefs : ĠMutable Map < Long , ĠJavaScript Value Reference > Ġ= Ġmutable Map Of () ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠRegisters Ġa ĠJavaScript Ġvalue Ġreference . Ċĉĉ Ġ* Ġ@ method Ġregister Ċĉĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉĉ Ġ*/ Ċĉ ĉ public Ġfun Ġprotect ( refer ent : ĠJavaScript Value ) Ġ{ ĊĊĉĉ ĉ val Ġreference Ġ= Ġthis . refs [ refer ent . handle ] Ċĉĉ ĉ if Ġ( reference Ġ== Ġnull ) Ġ{ Ċĉĉĉ ĉ this . refs [ refer ent . handle ] Ġ= ĠJavaScript Value Reference ( refer ent , ĠFinal izer . queue ) Ċĉĉĉ ĉ return Ċĉĉ ĉ } ĊĊĉĉ ĉ reference . protected Ġ= Ġtrue Ċĉĉ ĉ reference . context Ġ= Ġrefer ent . context Ċĉĉ ĉ reference . handle Ġ= Ġrefer ent . handle Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠRegisters Ġa ĠJavaScript Ġvalue Ġreference . Ċĉĉ Ġ* Ġ@ method Ġregister Ċĉĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉĉ Ġ*/ Ċĉ ĉ public Ġfun Ġun protect ( refer ent : ĠJavaScript Value ) Ġ{ ĊĊĉĉ ĉ val Ġreference Ġ= Ġthis . refs [ refer ent . handle ] Ċĉĉ ĉ if Ġ( reference Ġ== Ġnull ) Ġ{ Ċĉĉĉ ĉ return Ċĉĉ ĉ } ĊĊĉĉ ĉ reference . protected Ġ= Ġfalse Ċĉĉ ĉ reference . context Ġ= Ġnull Ċĉĉ ĉ reference . handle Ġ= Ġ 0 Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* Ġ@ property Ġprotected Ċĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉ Ġ* Ġ@ hidden Ċĉ Ġ*/ Ċ ĉ private Ġvar Ġprotected : ĠBoolean Ġ= Ġfalse ĊĊ ĉ /** Ċĉ Ġ* Ġ@ property Ġcontext Ċĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉ Ġ* Ġ@ hidden Ċĉ Ġ*/ Ċ ĉ private Ġvar Ġcontext : ĠJavaScript Context ? Ġ= Ġnull ĊĊ ĉ /** Ċĉ Ġ* Ġ@ property Ġhandle Ċĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉ Ġ* Ġ@ hidden Ċĉ Ġ*/ Ċ ĉ private Ġvar Ġhandle : ĠLong Ġ= Ġ 0 L ĊĊ ĉ /** Ċĉ Ġ* Ġ@ inherited Ċĉ Ġ* Ġ@ method Ġfinally Ċĉ Ġ* Ġ@ since Ġ 0 . 4 . 0 Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġfinally () Ġ{ ĊĊĉ ĉ if Ġ( this . protected ) Ġ{ Ċĉĉ ĉ val Ġcontext Ġ= Ġthis . context Ċĉĉ ĉ if Ġ( context Ġ!= Ġnull ) Ġ{ Ċĉĉĉ ĉ handler . post Ġ{ Ċĉĉĉĉ ĉ JavaScript Value External . un protect ( context . handle , Ġthis . handle ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ refs . remove ( this . handle ) Ċ ĉ } Ċ }