/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 Ġcollections ĊĊ Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . util . Sparse Boolean Array Ċ import Ġandroid . util . S parseInt Array Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* Ġ ĠIterate Ġthe Ġreceiver Ġ[ Sparse Array ] Ċ Ġ* Ġ Ġ@ action Ġan Ġaction Ġto Ġinvoke Ġon Ġeach Ġkey Ġvalue Ġpair Ċ Ġ* Ġ Ġ@ throws Ġ[ Concurrent Modification Exception ] Ġif Ġmodified Ġwhile Ġiter ating Ċ Ġ*/ Ċ inline Ġfun Ġ< E > ĠSparse Array < E >. forEach ( action : Ġ( Int , ĠE ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġthis . size () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġthis . size ()) Ġthrow ĠConcurrent Modification Exception () ĊĠĠĠĠĠĠĠ Ġaction ( this . key At ( i ), Ġthis . value At ( i )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ ĠIterate Ġthe Ġreceiver Ġ[ Sparse Boolean Array ] Ċ Ġ* Ġ Ġ@ action Ġan Ġaction Ġto Ġinvoke Ġon Ġeach Ġkey Ġvalue Ġpair Ċ Ġ* Ġ Ġ@ throws Ġ[ Concurrent Modification Exception ] Ġif Ġmodified Ġwhile Ġiter ating Ċ Ġ*/ Ċ inline Ġfun ĠSparse Boolean Array . forEach ( action : Ġ( Int , ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġthis . size () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġthis . size ()) Ġthrow ĠConcurrent Modification Exception () ĊĠĠĠĠĠĠĠ Ġaction ( this . key At ( i ), Ġthis . value At ( i )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ ĠIterate Ġthe Ġreceiver Ġ[ S parseInt Array ] Ċ Ġ* Ġ Ġ@ action Ġan Ġaction Ġto Ġinvoke Ġon Ġeach Ġkey Ġvalue Ġpair Ċ Ġ* Ġ Ġ@ throws Ġ[ Concurrent Modification Exception ] Ġif Ġmodified Ġwhile Ġiter ating Ċ Ġ*/ Ċ inline Ġfun ĠS parseInt Array . forEach ( action : Ġ( Int , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġthis . size () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġthis . size ()) Ġthrow ĠConcurrent Modification Exception () ĊĠĠĠĠĠĠĠ Ġaction ( this . key At ( i ), Ġthis . value At ( i )) ĊĠĠĠ Ġ} Ċ } ĊĊĊ