package Ġru . it basis . kotlin . utils . properties Ċ Ċ @ Suppress (" unused ") Ċ abstract Ġclass ĠProperty Listeners Holder < Event Ġ: ĠEnum < Event >> Ġ: ĠWith Property Listeners < Event > Ġ{ ĊĊĠ Ġ@ Suppress (" Variable Naming ", Ġ" PropertyName ") ĊĠ Ġprotected Ġabstract Ġval Ġ_ property Listeners : ĠMutable Map < Event , ĠProperty Listeners < out ĠAny ? >> ĊĊĠ Ġfun Ġenable Property Listeners ( ĊĠĠĠ ĠeventType : ĠEvent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ_ property Listeners [ eventType ]?. silent Mode Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġfun Ġdisable Property Listeners ( ĊĠĠĠ ĠeventType : ĠEvent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ_ property Listeners [ eventType ]?. silent Mode Ġ= Ġtrue ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġ< T > Ġadd Before EventListener ( ĊĠĠĠ ĠeventType : ĠEvent , ĊĠĠĠ Ġlistener : ĠProperty Listener < T > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ_ property Listeners [ eventType ] !!. add Before Listener ( listener ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġ< T > Ġadd After EventListener ( ĊĠĠĠ ĠeventType : ĠEvent , ĊĠĠĠ Ġlistener : ĠProperty Listener < T > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ_ property Listeners [ eventType ] !!. add After Listener ( listener ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġremove All Event Listeners () Ġ{ ĊĠĠĠ Ġ_ property Listeners . forEach Ġ{ Ġ(_, Ġlisteners ) Ġ-> ĊĠĠĠĠĠ Ġlisteners . clean All Listeners () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ