package Ġcom . x uj ia ao . android . firm ata . toolbox Ċ Ċ class ĠListener Registry < T >( private Ġval Ġre ified Empty Array : ĠArray < T >) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Listeners : ĠLinked HashSet < T > Ġ= ĠLinked HashSet () ĊĊĠĠĠ Ġprivate Ġvar Ġm Dirty Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġm Array : ĠArray < T >? Ġ= Ġnull ĊĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ= Ġm Listeners . isEmpty () ĊĊĠĠĠ Ġfun Ġadd ( listener : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Listeners . add ( listener )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Array Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( listener : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Listeners . remove ( listener )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Array Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Listeners . clear () ĊĊĠĠĠĠĠĠĠ Ġm Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Array Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Listeners (): ĠArray < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Array Ġ= Ġif Ġ( m Listeners . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listeners . toArray ( re ified Empty Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġm Array ĊĠĠĠ Ġ} Ċ }