/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠB loom berg ĠFinance ĠL . P . Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . bloom berg . se le kt . commons Ċ Ċ import Ġcom . bloom berg . se le kt . annotations . Generated Ċ import Ġjavax . annotation . concurrent . Not Thread Safe Ċ Ċ @ Not Thread Safe Ċ internal Ġclass ĠLinked Deque < T > Ġ{ ĊĠĠĠ Ġ@ Not Thread Safe ĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġdata Ġclass ĠNode < T >( ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġitem : ĠT ?, ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġprevious : ĠNode < T > ?, ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġnext : ĠNode < T >? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġclear () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġpool : ĠNode < T >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġempty Iterator Ġ= Ġempty Linked Deque Mutable Iterator < T >() ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġfirst : ĠNode < T >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast : ĠNode < T >? Ġ= Ġnull ĊĊĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfirst Ġ== Ġnull ĊĊĠĠĠ Ġval Ġhas Size One : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfirst Ġ=== Ġlast Ġ&& Ġfirst Ġ!= Ġnull ĊĊĠĠĠ Ġ@ Generated (" J aco co Ġdoes Ġnot Ġreport Ġcoverage Ġfor Ġinline Ġmethods ") ĊĠĠĠ Ġinline Ġfun Ġpoll First ( predicate : Ġ( T ) Ġ-> ĠBoolean ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhead Ġ= Ġfirst ĊĠĠĠĠĠĠĠ Ġwhile Ġ( head Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate ( head . item !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġunlink ( head ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġhead . next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpoll Last () Ġ= Ġlast ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Ġ= Ġit . previous ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ=== Ġfirst ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . previous !!. next Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . item . also Ġ{ Ġ_ Ġ-> Ġre cycle ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput First ( item : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhead Ġ= Ġfirst ĊĠĠĠĠĠĠĠ Ġfirst Ġ= Ġacquire Node ( item ) ĊĠĠĠĠĠĠĠ Ġif Ġ( head Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġfirst ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead . previous Ġ= Ġfirst ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreverse Mutable Iterator (): ĠMutable Iterator < T > Ġ= Ġlast . let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) ĠLinked Deque Re versed Iterator ( this , Ġit ) Ġelse Ġempty Iterator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunlink ( node : ĠNode < T >) Ġ= Ġnode . run Ġ{ ĊĠĠĠĠĠĠĠ Ġnext . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . previous Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprevious . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . next Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem . also Ġ{ Ġre cycle ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġacquire Node ( item : ĠT ): ĠNode < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġpool ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . item Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . next Ġ= Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ acquire Node Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠNode ( item , Ġnull , Ġfirst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre cycle ( node : ĠNode < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pool Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpool Ġ= Ġnode . clear () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠLinked Deque Re versed Iterator < T >( ĊĠĠĠ Ġprivate Ġval Ġdeque : ĠLinked Deque < T >, ĊĠĠĠ Ġlast : ĠLinked Deque . Node < T > Ċ ) Ġ: ĠMutable Iterator < T > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġhead Ġ= ĠLinked Deque . Node ( last . item , Ġlast , Ġnull ) ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhead . previous Ġ!= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġnext () Ġ= Ġ( head . previous Ġ?: Ġthrow ĠNoSuch ElementException ()). also Ġ{ ĊĠĠĠĠĠĠĠ Ġhead . previous Ġ= Ġit . previous ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġit ĊĠĠĠ Ġ}. item !! ĊĊĠĠĠ Ġoverride Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠ Ġdeque . unlink ( head . next !! ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġ< T > Ġempty Linked Deque Mutable Iterator () Ġ= Ġobject Ġ: ĠMutable Iterator < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġnext () Ġ= Ġthrow ĠNoSuch ElementException () ĊĊĠĠĠ Ġoverride Ġfun Ġremove () Ġ= Ġthrow ĠUnsupportedOperationException () Ċ } Ċ