package Ġfeature a . mod bus . support Ċ Ċ import Ġfeature a . mod bus . master . Master Ċ Ċ type alias ĠMaster Notifier Listener Ġ= ĠMaster Notifier .( notification : ĠString ) Ġ-> ĠUnit Ċ Ċ class ĠMaster Notifier ( val Ġmaster : ĠMaster ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlisteners Ġ= Ġmutable ListOf < Master Notifier Listener >() ĊĠĠĠ Ġval Ġis NotEmpty : ĠBoolean Ġget () Ġ= Ġlisteners . isNotEmpty () ĊĊĠĠĠ Ġprivate Ġval Ġnotification Builder : ĠStringBuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġprivate Ġval Ġlisteners To Iterate Ġ= Ġmutable ListOf < Master Notifier Listener >() ĊĠĠĠ Ġprivate Ġval Ġlisteners To Unregister Ġ= Ġmutable ListOf < Master Notifier Listener >() ĊĠĠĠ Ġprivate Ġvar Ġcurrent Listener : ĠMaster Notifier Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġregister Listener ( listener : ĠMaster Notifier Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnotify ( block : Ġ( notification Builder : ĠStringBuilder ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( notification Builder ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification : ĠString Ġ= Ġnotification Builder . toString () ĊĠĠĠĠĠĠĠ Ġlisteners To Iterate . addAll ( listeners ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin Ġlisteners To Iterate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlisteners . removeAll ( listeners To Unregister ) ĊĠĠĠĠĠĠĠ Ġlisteners To Unregister . clear () ĊĠĠĠĠĠĠĠ Ġnotification Builder . clear () ĊĠĠĠĠĠĠĠ Ġlisteners To Iterate . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners To Unregister . add ( checkNotNull ( current Listener )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ