package Ġapp . cash . chron ic ler . recorder Ċ Ċ type alias ĠConfig Subscriber Ġ= Ġ( Ch ron ic ler Interceptor . Config ) Ġ-> ĠUnit Ċ Ċ object ĠCh ron ic ler Config Repository Ġ{ ĊĠ Ġprivate Ġval Ġconfigs Ġ= Ġmutable Map Of < String , ĠCh ron ic ler Interceptor . Config >() ĊĠ Ġprivate Ġval Ġsubscribers Ġ= Ġmutable Map Of < String , ĠMutable Set < Config Subscriber >>() ĊĊĠ Ġ@ Jvm Static ĊĠ Ġoperator Ġfun Ġset ( name : ĠString , Ġconfig : ĠCh ron ic ler Interceptor . Config ) Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠ Ġif Ġ( configs . containsKey ( name )) ĊĠĠĠĠĠ Ġerror (" At tempted Ġto Ġset ĠCh ron ic ler ĠConfig Ġ'$ name ' Ġtwice Ġfor Ġthe Ġsame Ġkey . ĠThis Ġis Ġnot Ġsupported .") ĊĠĠĠ Ġconfigs [ name ] Ġ= Ġconfig ĊĊĠĠĠ Ġsubscribers [ name ]?. forEach Ġ{ Ġit ( config ) Ġ} ĊĠĠĠ Ġsubscribers . remove ( name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġsubs ri be ( name : ĠString , Ġproc : Ġ( Ch ron ic ler Interceptor . Config ) Ġ-> ĠUnit ) Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠ Ġconfigs [ name ] ĊĠĠĠĠĠ Ġ? . let ( proc ) ĊĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscribers . compute If Absent ( name ) Ġ{ Ġmutable Set Of () Ġ}. add ( proc ) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ