package Ġcom . github . ch ristop h pick l . k pot p our ri . common . misc Ċ Ċ /** Ċ Ġ* ĠMarker Ġinterface Ġonly . Ċ Ġ*/ Ċ interface ĠDispatcher Listener Ċ Ċ /** Ċ Ġ* ĠProvides Ġsimple Ġregister Ġand Ġdispatch Ġpossibility . Ċ Ġ*/ Ċ class ĠDispatcher < L Ġ: ĠDispatcher Listener > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= ĠLinked HashSet < L >() ĊĊĠĠĠ Ġfun Ġadd ( listener : ĠL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (! listeners . contains ( listener )) Ġ{ Ġ" Listener Ġwas Ġalready Ġadded : Ġ$ listener " Ġ} ĊĠĠĠĠĠĠĠ Ġlisteners Ġ+= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( listener : ĠL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( listeners . contains ( listener )) Ġ{ Ġ" Listener Ġwas Ġnot Ġadded Ġyet : Ġ$ listener " Ġ} ĊĠĠĠĠĠĠĠ Ġlisteners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdispatch ( action : ĠL . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ