/* Ċ Ġ* ĠPoly hed ral Bot Ġ- ĠA ĠDiscord Ġbot Ġfor Ġthe ĠPoly hed ral ĠDevelopment Ġdiscord Ġserver Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 1 Ġsol on ov am ax Ġ< sol on ov am ax @ 1 2 oc lock point . com > Ċ Ġ* Ċ Ġ* ĠThe Ġfile ĠDeleg ating Collection . kt Ġis Ġpart Ġof ĠPoly hed ral Bot Ċ Ġ* ĠLast Ġmodified Ġon Ġ 3 1 - 1 2 - 2 0 2 1 Ġ 0 1 : 3 8 Ġp . m . Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠPOL Y H ED R AL BOT ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġca . so lost ud ios . poly bot . util . data structures Ċ Ċ import Ġjava . util . function . Predicate Ċ Ċ internal Ġclass ĠDeleg ating Collection < T >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdelegate : ĠMutable Collection < T > Ġ= Ġmutable ListOf (), ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġad der : Ġ( to Add : ĠT ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġremo ver : Ġ( to Remove : ĠT ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ: ĠMutable Collection < T > Ġby Ġdelegate Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġadd ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġad der ( element ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . add ( element ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġadd All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġelements . forEach ( adder ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . addAll ( elements ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate . forEach ( remo ver ) ĊĠĠĠĠĠĠĠ Ġdelegate . clear () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġremove ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġremo ver ( element ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . remove ( element ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġremove All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġelements . forEach ( remo ver ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . removeAll ( elements ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġremove If ( filter : ĠPredicate < in ĠT >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" LABEL _ NAME _ CL ASH ") ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . remove If Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter . test ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremo ver ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ remove If Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ remove If Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġretain All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate . remove If Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! elements . contains ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremo ver ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ remove If Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ remove If Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ