/* ĊĠ ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠNik ol ay ĠMen zh ul in . ĊĊĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ package Ġcom . github . nik ol ay men zh ul in . logger . str ategies Ċ Ċ import Ġcom . github . nik ol ay men zh ul in . logger . str ategies . strategy . Tim ber Logger Strategy Ċ import Ġcom . github . nik ol ay men zh ul in . logger . str ategies . strategy . base . Logger Strategy Ċ Ċ /** Ċ Ġ* ĠThe Ġlist Ġof Ġ[ Logger Strategy ]. ĠIn Ġaddition Ġto Ġstoring Ġstrategies , Ċ Ġ* Ġit Ġalso Ġcontains Ġchecking Ġfor Ġduplicate Ġstrategies Ġwhen Ġthey Ġare Ġadded Ġto Ġthe Ġlist . Ċ Ġ*/ Ċ class ĠLogger Str ategies List ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstrategies : ĠMutable List < Logger Strategy > Ġ= Ġmutable ListOf () Ċ ) Ġ: ĠMutable List < Logger Strategy > Ġby Ġstrategies Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġstrategies . add ( Tim ber Logger Strategy ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( element : ĠLogger Strategy ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains ( element )) Ġstrategies . add ( element ) Ġelse Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( index : ĠInt , Ġelement : ĠLogger Strategy ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains ( element )) Ġstrategies . add ( index , Ġelement ) Ġelse ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġadd All ( elements : ĠCollection < Logger Strategy >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All With Fil tration ( elements ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd All ( index : ĠInt , Ġelements : ĠCollection < Logger Strategy >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All With Fil tration ( elements , Ġindex ) ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( element : ĠLogger Strategy ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrategies . any Ġ{ Ġstrategy Ġ-> Ġstrategy :: class Ġ== Ġelement :: class Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd All With Fil tration ( elements : ĠCollection < Logger Strategy >, Ġindex : ĠInt ? Ġ= Ġnull ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġstrategies . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Elements Ġ= Ġelements . filter Ġ{ Ġ! this @ Logger Str ategies List . contains ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġindex ?. let Ġ{ Ġindex Ġ-> Ġadd All ( index , Ġfiltered Elements ) Ġ} Ġ?: Ġadd All ( filtered Elements ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }