package Ġorg . map db . ec . flat ĊĊ Ċ import Ġorg . map db . ec . flat . copyright And Others .* Ċ import Ġorg . map db . ec . flat . primitive Equals .* Ċ import Ġorg . map db . ec . flat . primitive HashCode .* Ċ import Ġorg . map db . ec . flat . primitive Literal .* Ċ Ċ val Ġprim Ġ= ĠPrimitive . LONG Ċ val Ġname =" Long " Ċ val Ġtype =" long " Ċ Ċ fun ĠfileName ( primitive : String ) Ġ= Ġname +" ArrayList . java " Ċ Ċ val ĠpackageName Ġ= Ġ" org . map db . ec . flat . primitive " ĊĊĊ Ċ val Ġtarget Path Ġ= Ġ"../ src Gen / main / java /"+ ( packageName . replace ('. ',' /') +"/ ") Ġ+ ĠfileName ( name ) Ċ Ċ val Ġstr Ġ= Ġ""" ${ copyright And Others ()} Ċ Ċ package Ġ${ packageName }; Ċ Ċ import Ġjava . io . External izable ; Ċ import Ġjava . io . IOException ; Ċ import Ġjava . io . Object Input ; Ċ import Ġjava . io . Object Output ; Ċ import Ġjava . util . Arrays ; Ċ import Ġjava . util . Collection ; Ċ import Ġjava . util . Iterator ; Ċ import Ġjava . util . NoSuch ElementException ; Ċ Ċ import Ġorg . eclipse . collections . api .${ name } Iterable ; Ċ import Ġorg . eclipse . collections . api . Lazy ${ name } Iterable ; Ċ import Ġorg . eclipse . collections . api . Rich Iterable ; Ċ import Ġorg . eclipse . collections . api . block . function . primitive . Object ${ name } Int ToObject Function ; Ċ import Ġorg . eclipse . collections . api . block . function . primitive . Object ${ name } ToObject Function ; Ċ import Ġorg . eclipse . collections . api . block . function . primitive .${ name } ToObject Function ; Ċ import Ġorg . eclipse . collections . api . block . predicate . primitive .${ name } Predicate ; Ċ import Ġorg . eclipse . collections . api . block . procedure . primitive .${ name } Int Procedure ; Ċ import Ġorg . eclipse . collections . api . block . procedure . primitive .${ name } Procedure ; Ċ import Ġorg . eclipse . collections . api . collection . primitive . Mutable ${ name } Collection ; Ċ import Ġorg . eclipse . collections . api . iterator . Mutable ${ name } Iterator ; Ċ import Ġorg . eclipse . collections . api . iterator .${ name } Iterator ; Ċ import Ġorg . eclipse . collections . api . list . Mutable List ; Ċ import Ġorg . eclipse . collections . api . list . primitive .${ name } List ; Ċ import Ġorg . eclipse . collections . api . list . primitive . Immutable ${ name } List ; Ċ import Ġorg . eclipse . collections . api . list . primitive . Mutable ${ name } List ; Ċ import Ġorg . eclipse . collections . api . set . primitive .${ name } Set ; Ċ import Ġorg . eclipse . collections . api . set . primitive . Mutable ${ name } Set ; Ċ import Ġorg . eclipse . collections . api . tuple . primitive .${ name }${ name } Pair ; Ċ import Ġorg . eclipse . collections . api . tuple . primitive .${ name } Object Pair ; Ċ import Ġorg . eclipse . collections . impl . factory . Lists ; Ċ import Ġorg . eclipse . collections . impl . factory . primitive .${ name } Lists ; Ċ import Ġorg . eclipse . collections . impl . lazy . primitive . Reverse ${ name } Iterable ; Ċ import Ġorg . eclipse . collections . impl . list . mutable . Fast List ; Ċ import Ġorg . eclipse . collections . impl . primitive . Abstract ${ name } Iterable ; Ċ import Ġorg . eclipse . collections . impl . set . mutable . primitive .${ name } HashSet ; Ċ import Ġorg . eclipse . collections . impl . tuple . primitive . Primitive Tuples ; Ċ import Ġorg . eclipse . collections . impl . utility . Iterate ; Ċ Ċ import Ġorg . eclipse . collections . impl . list . mutable . primitive . Un modifiable Long List ; Ċ import Ġorg . eclipse . collections . impl . list . mutable . primitive . Synchron ized Long List ; Ċ Ċ /** Ċ Ġ* Ġ${ name } ArrayList Ġis Ġsimilar Ġto Ġ{@ link ĠFast List }, Ġand Ġis Ġmemory - optimized Ġfor Ġ${ type } Ġprimitives . Ċ Ġ* ĠThis Ġfile Ġwas Ġautomatically Ġgenerated Ġfrom Ġtemplate Ġfile Ġprimitive ArrayList . stg . Ċ Ġ* Ċ Ġ* Ġ@ since Ġ 3 . 0 . Ċ Ġ*/ Ċ public Ġclass Ġ${ name } ArrayList Ġextends ĠAbstract ${ name } Iterable ĊĠĠĠĠĠĠĠ Ġimplements ĠMutable ${ name } List , ĠExternal izable Ċ { ĊĠĠĠ Ġprivate Ġstatic Ġfinal Ġlong ĠserialVersionUID Ġ= Ġ 1 L ; ĊĠĠĠ Ġprivate Ġstatic Ġfinal Ġ${ type } [] ĠDEFAULT _ SIZ ED _ EMPTY _ ARRAY Ġ= Ġ{}; ĊĠĠĠ Ġprivate Ġstatic Ġfinal Ġ${ type } [] ĠZERO _ SIZ ED _ ARRAY Ġ= Ġ{}; ĊĠĠĠ Ġprivate Ġstatic Ġfinal Ġint ĠMAX IMUM _ ARRAY _ SIZE Ġ= ĠInteger . MAX _ VALUE Ġ- Ġ 8 ; ĊĊĠĠĠ Ġprotected Ġint Ġsize ; ĊĠĠĠ Ġprotected Ġtransient Ġ${ type } [] Ġitems Ġ= ĠDEFAULT _ SIZ ED _ EMPTY _ ARRAY ; ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList () ĊĠĠĠ Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList ( int Ġinitial Capacity ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġinitial Capacity Ġ== Ġ 0 Ġ? ĠZERO _ SIZ ED _ ARRAY Ġ: Ġnew Ġ${ type }[ initial Capacity ]; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList (${ type } ... Ġarray ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġarray . length ; ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġarray ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġlist Ġusing Ġthe Ġpassed Ġ{@ code Ġelements } Ġargument Ġas Ġthe Ġbacking Ġstore . ĊĠĠĠĠ Ġ* Ġ< p > ĊĠĠĠĠ Ġ* Ġ!!! ĠWARNING : ĠThis Ġmethod Ġuses Ġthe Ġpassed Ġin Ġarray , Ġso Ġcan Ġbe Ġvery Ġunsafe Ġif Ġthe Ġoriginal ĊĠĠĠĠ Ġ* Ġarray Ġis Ġheld Ġonto Ġanywhere Ġelse . Ġ!!! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġstatic Ġ${ name } ArrayList Ġnew List With (${ type } ... Ġelements ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Ġ${ name } ArrayList ( elements ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġstatic Ġ${ name } ArrayList Ġnew List (${ name } Iterable Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ${ name } ArrayList . new List With ( source . toArray ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġstatic Ġ${ name } ArrayList Ġnew With N Values ( int Ġsize , Ġ${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ name } ArrayList Ġnew List Ġ= Ġnew Ġ${ name } ArrayList ( size ); ĊĠĠĠĠĠĠĠ Ġnew List . size Ġ= Ġsize ; ĊĠĠĠĠĠĠĠ ĠArrays . fill ( new List . items , Ġvalue ); ĊĠĠĠĠĠĠĠ Ġreturn Ġnew List ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint Ġsize () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . size ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġclear () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠArrays . fill ( this . items , Ġ 0 , Ġsize , Ġ${ zero ( type )}); ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġ 0 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġcontains (${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ equals ( type ," this . items [ i ]", Ġ" value ") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġget ( int Ġindex ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġthis . size ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . items [ index ]; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow Ġthis . new Index OutOfBoundsException ( index ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĠIndex OutOfBoundsException Ġnew Index OutOfBoundsException ( int Ġindex ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIndex OutOfBoundsException (" Index : Ġ" Ġ+ Ġindex Ġ+ Ġ" ĠSize : Ġ" Ġ+ Ġthis . size ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġget First () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . check Empty (); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . items [ 0 ]; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } ĠgetLast () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . check Empty (); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . items [ this . size () Ġ- Ġ 1 ]; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġcheck Empty () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġthis . new Index OutOfBoundsException ( 0 ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint ĠindexOf (${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ equals ( type ," this . items [ i ]", Ġ" value ") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint Ġlast IndexOf (${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġthis . size Ġ- Ġ 1 ; Ġi Ġ>= Ġ 0 ; Ġi --) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ equals ( type ," this . items [ i ]", Ġ" value ") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġvoid Ġtrim To Size () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ< Ġthis . items . length ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transfer Items To New Array With Capacity ( this . size ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġtransfer Items To New Array With Capacity ( int Ġnew Capacity ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġthis . copy Items With New Capacity ( new Capacity ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġ${ type } [] Ġcopy Items With New Capacity ( int Ġnew Capacity ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ type } [] Ġnew Items Ġ= Ġnew Ġ${ type }[ new Capacity ]; ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġ 0 , Ġnew Items , Ġ 0 , ĠMath . min ( this . size , Ġnew Capacity )); ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Items ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġint Ġsize Plus F ifty Percent ( int Ġold Size ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġresult Ġ= Ġold Size Ġ+ Ġ( old Size Ġ>> Ġ 1 ) Ġ+ Ġ 1 ; ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Ġ< Ġold Size Ġ? ĠMAX IMUM _ ARRAY _ SIZE Ġ: Ġresult ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġvoid Ġensure Capacity ( int Ġmin Capacity ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġold Capacity Ġ= Ġthis . items . length ; ĊĠĠĠĠĠĠĠ Ġif Ġ( min Capacity Ġ> Ġold Capacity ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġnew Capacity Ġ= ĠMath . max ( this . size Plus F ifty Percent ( old Capacity ), Ġmin Capacity ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transfer Items To New Array With Capacity ( new Capacity ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġensure Capacity For Add () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items Ġ== ĠDEFAULT _ SIZ ED _ EMPTY _ ARRAY ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġnew Ġ${ type }[ 1 0 ]; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . transfer Items To New Array With Capacity ( this . size Plus F ifty Percent ( this . size )); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġadd (${ type } Ġnew Item ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items . length Ġ== Ġthis . size ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ensure Capacity For Add (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . items [ this . size ] Ġ= Ġnew Item ; ĊĠĠĠĠĠĠĠ Ġthis . size ++; ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġadd All (${ type } ... Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source . length Ġ< Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . copy Items ( source . length , Ġsource ); ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġadd All (${ name } Iterable Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source Ġinstanceof Ġ${ name } ArrayList ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ name } ArrayList Ġother Ġ= Ġ(${ name } ArrayList ) Ġsource ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy Items ( other . size (), Ġother . items ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . addAll ( source . toArray ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġcopy Items ( int Ġsource Size , Ġ${ type } [] Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġnew Size Ġ= Ġthis . size Ġ+ Ġsource Size ; ĊĠĠĠĠĠĠĠ Ġthis . ensure Capacity ( new Size ); ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( source , Ġ 0 , Ġthis . items , Ġthis . size , Ġsource Size ); ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġnew Size ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġthrow OutOfBounds ( int Ġindex ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġthis . new Index OutOfBoundsException ( index ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġadd AtIndex ( int Ġindex , Ġ${ type } Ġelement ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ- 1 Ġ&& Ġindex Ġ< Ġthis . size ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add AtIndex LessThan Size ( index , Ġelement ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( index Ġ== Ġthis . size ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add ( element ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . throw OutOfBounds ( index ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġadd AtIndex LessThan Size ( int Ġindex , Ġ${ type } Ġelement ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġold Size Ġ= Ġthis . size ; ĊĠĠĠĠĠĠĠ Ġthis . size ++; ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items . length Ġ== Ġold Size ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } [] Ġnew Items Ġ= Ġnew Ġ${ type }[ this . size Plus F ifty Percent ( old Size )]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġ 0 , Ġnew Items , Ġ 0 , Ġindex ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġindex , Ġnew Items , Ġindex Ġ+ Ġ 1 , Ġold Size Ġ- Ġindex ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġnew Items ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġindex , Ġthis . items , Ġindex Ġ+ Ġ 1 , Ġold Size Ġ- Ġindex ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . items [ index ] Ġ= Ġelement ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġadd All AtIndex ( int Ġindex , Ġ${ type } ... Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġthis . size Ġ|| Ġindex Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . throw OutOfBounds ( index ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( source . length Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġint Ġsource Size Ġ= Ġsource . length ; ĊĠĠĠĠĠĠĠ Ġint Ġnew Size Ġ= Ġthis . size Ġ+ Ġsource Size ; ĊĠĠĠĠĠĠĠ Ġthis . ensure Capacity ( new Size ); ĊĠĠĠĠĠĠĠ Ġthis . shift Elements AtIndex ( index , Ġsource Size ); ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( source , Ġ 0 , Ġthis . items , Ġindex , Ġsource Size ); ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġnew Size ; ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġadd All AtIndex ( int Ġindex , Ġ${ name } Iterable Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . addAll AtIndex ( index , Ġsource . toArray ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġshift Elements AtIndex ( int Ġindex , Ġint Ġsource Size ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġnumber To Move Ġ= Ġthis . size Ġ- Ġindex ; ĊĠĠĠĠĠĠĠ Ġif Ġ( number To Move Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġindex , Ġthis . items , Ġindex Ġ+ Ġsource Size , Ġnumber To Move ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġremove (${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġindex Ġ= Ġthis . indexOf ( value ); ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . remove AtIndex ( index ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġremove If (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġcurrent Filled Index Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġitem Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! predicate . accept ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkeep Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Filled Index Ġ!= Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items [ current Filled Index ] Ġ= Ġitem ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Filled Index ++; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġboolean Ġchanged Ġ= Ġcurrent Filled Index Ġ< Ġthis . size ; ĊĠĠĠĠĠĠĠ Ġthis . w ipe And Reset The End ( current Filled Index ); ĊĠĠĠĠĠĠĠ Ġreturn Ġchanged ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvoid Ġw ipe And Reset The End ( int Ġnew Current Filled Index ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġnew Current Filled Index ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items [ i ] Ġ= Ġ${ zero ( type )}; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġnew Current Filled Index ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġremove All (${ name } Iterable Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġboolean Ġmodified Ġ= Ġfalse ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġindex Ġ= Ġ 0 ; Ġindex Ġ< Ġthis . size ; Ġindex ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source . contains ( this . get ( index ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . remove AtIndex ( index ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex --; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmodified ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġremove All (${ type } ... Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ name } HashSet Ġset Ġ= Ġ${ name } HashSet . new Set With ( source ); ĊĠĠĠĠĠĠĠ Ġ${ type } [] Ġnew Items Ġ= Ġnew Ġ${ type }[ this . size ]; ĊĠĠĠĠĠĠĠ Ġint Ġcount Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġint Ġold Size Ġ= Ġthis . size ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġindex Ġ= Ġ 0 ; Ġindex Ġ< Ġthis . size ; Ġindex ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set . contains ( this . items [ index ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Items [ count ] Ġ= Ġthis . items [ index ]; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġnew Items ; ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġcount ; ĊĠĠĠĠĠĠĠ Ġreturn Ġold Size Ġ!= Ġthis . size ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġretain All (${ name } Iterable Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġold Size Ġ= Ġthis . size (); ĊĠĠĠĠĠĠĠ Ġfinal Ġ${ name } Set Ġsource Set Ġ= Ġsource Ġinstanceof Ġ${ name } Set Ġ? Ġ(${ name } Set ) Ġsource Ġ: Ġsource . toSet (); ĊĠĠĠĠĠĠĠ Ġ${ name } ArrayList Ġretained Ġ= Ġthis . select ( source Set :: contains ); ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġretained . size ; ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġretained . items ; ĊĠĠĠĠĠĠĠ Ġreturn Ġold Size Ġ!= Ġthis . size (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġretain All (${ type } ... Ġsource ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . retain All (${ name } HashSet . new Set With ( source )); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġremove AtIndex ( int Ġindex ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ type } Ġprevious Ġ= Ġthis . get ( index ); ĊĠĠĠĠĠĠĠ Ġint Ġtotal Offset Ġ= Ġthis . size Ġ- Ġindex Ġ- Ġ 1 ; ĊĠĠĠĠĠĠĠ Ġif Ġ( total Offset Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġindex Ġ+ Ġ 1 , Ġthis . items , Ġindex , Ġtotal Offset ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ-- this . size ; ĊĠĠĠĠĠĠĠ Ġthis . items [ this . size ] Ġ= Ġ${ zero ( type )}; ĊĠĠĠĠĠĠĠ Ġreturn Ġprevious ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġset ( int Ġindex , Ġ${ type } Ġelement ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ type } Ġprevious Ġ= Ġthis . get ( index ); ĊĠĠĠĠĠĠĠ Ġthis . items [ index ] Ġ= Ġelement ; ĊĠĠĠĠĠĠĠ Ġreturn Ġprevious ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwith (${ type } Ġelement ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add ( element ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwithout (${ type } Ġelement ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . remove ( element ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwith All (${ name } Iterable Ġelements ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . addAll ( elements . toArray ()); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwithout All (${ name } Iterable Ġelements ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . removeAll ( elements ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwith (${ type } Ġelement 1 , Ġ${ type } Ġelement 2 ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add ( element 1 ); ĊĠĠĠĠĠĠĠ Ġthis . add ( element 2 ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwith (${ type } Ġelement 1 , Ġ${ type } Ġelement 2 , Ġ${ type } Ġelement 3 ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add ( element 1 ); ĊĠĠĠĠĠĠĠ Ġthis . add ( element 2 ); ĊĠĠĠĠĠĠĠ Ġthis . add ( element 3 ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġwith (${ type } Ġelement 1 , Ġ${ type } Ġelement 2 , Ġ${ type } Ġelement 3 , Ġ${ type } ... Ġelements ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add ( element 1 ); ĊĠĠĠĠĠĠĠ Ġthis . add ( element 2 ); ĊĠĠĠĠĠĠĠ Ġthis . add ( element 3 ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . with Array Copy ( elements , Ġ 0 , Ġelements . length ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġ${ name } ArrayList Ġwith Array Copy (${ type } [] Ġelements , Ġint Ġbegin , Ġint Ġlength ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ensure Capacity ( this . size Ġ+ Ġlength ); ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( elements , Ġbegin , Ġthis . items , Ġthis . size , Ġlength ); ĊĠĠĠĠĠĠĠ Ġthis . size Ġ+= Ġlength ; ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable ${ name } Iterator Ġ${ type } Iterator () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠInternal ${ name } Iterator (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid ĠforEach (${ name } Procedure Ġprocedure ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . each ( procedure ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 7 . 0 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġeach (${ name } Procedure Ġprocedure ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocedure . value ( this . items [ i ]); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid ĠforEach With Index (${ name } Int Procedure Ġprocedure ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocedure . value ( this . items [ i ], Ġi ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< T > ĠT Ġinject Into ( T Ġinjected Value , ĠObject ${ name } ToObject Function <? Ġsuper ĠT , Ġ? Ġextends ĠT > Ġfunction ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠT Ġresult Ġ= Ġinjected Value ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfunction . valueOf ( result , Ġthis . items [ i ]); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< T > ĠT Ġinject Into With Index ( T Ġinjected Value , ĠObject ${ name } Int ToObject Function <? Ġsuper ĠT , Ġ? Ġextends ĠT > Ġfunction ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠT Ġresult Ġ= Ġinjected Value ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfunction . valueOf ( result , Ġthis . items [ i ], Ġi ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠRich Iterable < ${ name } Iterable > Ġchunk ( int Ġsize ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ<= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠIllegalArgumentException (" Size Ġfor Ġgroups Ġmust Ġbe Ġpositive Ġbut Ġwas : Ġ" Ġ+ Ġsize ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMutable List < ${ name } Iterable > Ġresult Ġ= ĠLists . mutable . empty (); ĊĠĠĠĠĠĠĠ Ġif Ġ( this . not Empty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . size () Ġ<= Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add (${ name } Lists . mutable . with All ( this )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ name } Iterator Ġiterator Ġ= Ġthis .${ type } Iterator (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMutable ${ name } List Ġbatch Ġ= Ġ${ name } Lists . mutable . empty (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġsize Ġ&& Ġiterator . hasNext (); Ġi ++) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . add ( iterator . next ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( batch ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint Ġcount (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġcount Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate . accept ( this . items [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcount ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġany Satisf y (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate . accept ( this . items [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġall Satisf y (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! predicate . accept ( this . items [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġnone Satisf y (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! this . any Satisf y ( predicate ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġselect (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . select ( predicate , Ġnew Ġ${ name } ArrayList ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 8 . 1 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< R Ġextends ĠMutable ${ name } Collection > ĠR Ġselect (${ name } Predicate Ġpredicate , ĠR Ġtarget ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġitem Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate . accept ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( item ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġreject (${ name } Predicate Ġpredicate ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . reject ( predicate , Ġnew Ġ${ name } ArrayList ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 8 . 1 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< R Ġextends ĠMutable ${ name } Collection > ĠR Ġreject (${ name } Predicate Ġpredicate , ĠR Ġtarget ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġitem Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! predicate . accept ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( item ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġdetect If None (${ name } Predicate Ġpredicate , Ġ${ type } Ġif None ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġitem Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate . accept ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif None ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< V > ĠMutable List < V > Ġcollect (${ name } ToObject Function <? Ġextends ĠV > Ġfunction ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . collect ( function , ĠFast List . new List ( this . size )); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 8 . 1 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< V , ĠR Ġextends ĠCollection < V >> ĠR Ġcollect (${ name } ToObject Function <? Ġextends ĠV > Ġfunction , ĠR Ġtarget ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( function . valueOf ( this . items [ i ])); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġmax () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠNoSuch ElementException (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ${ type } Ġmax Ġ= Ġthis . items [ 0 ]; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 1 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġvalue Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ less Than ( type ," max ", Ġ" value ") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġvalue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmax ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } Ġmin () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠNoSuch ElementException (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ${ type } Ġmin Ġ= Ġthis . items [ 0 ]; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 1 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġvalue Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ less Than ( type ," value ", Ġ" min ") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġvalue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmin ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġ""" +( if ( prim . is Floating Point ) """ public Ġ${ wide Type ( type )} Ġsum () Ċ { ĊĠĠĠ Ġ${ wide Type ( type )} Ġresult Ġ= Ġ${ wide Zero ( type )}; ĊĠĠĠ Ġ${ wide Type ( type )} Ġcomp ensation Ġ= Ġ${ wide Zero ( type )}; ĊĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ wide Type ( type )} Ġadjusted Value Ġ= Ġthis . items [ i ] Ġ- Ġcomp ensation ; ĊĠĠĠĠĠĠĠ Ġ${ wide Type ( type )} Ġnext Sum Ġ= Ġresult Ġ+ Ġadjusted Value ; ĊĠĠĠĠĠĠĠ Ġcomp ensation Ġ= Ġnext Sum Ġ- Ġresult Ġ- Ġadjusted Value ; ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġnext Sum ; ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult ; Ċ } ĊĊĠĠĠ Ġ""" Ġelse Ġ""" public Ġ${ wide Type ( type )} Ġsum () Ċ { ĊĠĠĠ Ġ${ wide Type ( type )} Ġresult Ġ= Ġ${ wide Zero ( type )}; ĊĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġthis . items [ i ]; ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult ; Ċ } ĊĊĠĠĠ Ġ"" ") + """ ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ wide Type ( type )} Ġdot Product (${ name } List Ġlist ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ!= Ġlist . size ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠIllegalArgumentException (" Lists Ġused Ġin Ġdot Product Ġmust Ġbe Ġthe Ġsame Ġsize "); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ${ wide Type ( type )} Ġsum Ġ= Ġ${ wide Zero ( type )}; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ${ cast Wide Type ( type )} this . items [ i ] Ġ* Ġlist . get ( i ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsum ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ type } [] Ġto Array () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ type } [] Ġnew Items Ġ= Ġnew Ġ${ type }[ this . size ]; ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this . items , Ġ 0 , Ġnew Items , Ġ 0 , Ġthis . size ); ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Items ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġother List ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other List Ġ== Ġthis ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(!( other List Ġinstanceof Ġ${ name } List )) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ${ name } List Ġlist Ġ= Ġ(${ name } List ) Ġother List ; ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ!= Ġlist . size ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(${ not Equals ( type ," this . items [ i ]", Ġ" list . get ( i )") }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint ĠhashCode () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint ĠhashCode Ġ= Ġ 1 ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġitem Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhashCode Ġ= Ġ 3 1 Ġ* ĠhashCode Ġ+ Ġ${ hashCode ( type ," item ") }; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠhashCode ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġappend String ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppend able Ġappend able , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġstart , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġseparator , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġend ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend able . append ( start ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend able . append ( separator ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġvalue Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend able . append ( String . valueOf ( value )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend able . append ( end ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( IOException Ġe ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠRuntimeException ( e ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable ${ name } List Ġas Un modifiable () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠUn modifiable ${ name } List ( this ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable ${ name } List Ġas Synchron ized () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠSynchron ized ${ name } List ( this ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠImmutable ${ name } List Ġto Immutable () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ${ name } Lists . immutable . empty (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ${ name } Lists . immutable . with ( this . items [ 0 ]); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ${ name } Lists . immutable . with ( this . toArray ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġwrite External ( Object Output Ġout ) Ġthrows ĠIOException ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġout . writeInt ( this . size ); ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ${ name }( this . items [ i ]); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġread External ( Object Input Ġin ) Ġthrows ĠIOException ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . size Ġ= Ġin . readInt (); ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġnew Ġ${ type }[ this . size ]; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items [ i ] Ġ= Ġin . read ${ name } (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠLazy ${ name } Iterable Ġas Re versed () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠReverse ${ name } Iterable . adapt ( this ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġreverse This () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġend Index Ġ= Ġthis . size Ġ- Ġ 1 ; ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size Ġ/ Ġ 2 ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġtemp Swap Value Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items [ i ] Ġ= Ġthis . items [ end Index Ġ- Ġi ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items [ end Index Ġ- Ġi ] Ġ= Ġtemp Swap Value ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġsort This () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠArrays . sort ( this . items , Ġ 0 , Ġthis . size ); ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġto Re versed () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ${ name } ArrayList . new List ( this . as Re versed ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint Ġbinary Search (${ type } Ġvalue ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArrays . binary Search ( this . items , Ġ 0 , Ġthis . size , Ġvalue ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable ${ name } List Ġdistinct () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ${ name } ArrayList Ġtarget Ġ= Ġnew Ġ${ name } ArrayList (); ĊĠĠĠĠĠĠĠ ĠMutable ${ name } Set Ġseen So Far Ġ= Ġnew Ġ${ name } HashSet ( this . size ()); ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġthis . size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġeach Ġ= Ġthis . items [ i ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( seen So Far . add ( each )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( each ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable ${ name } List Ġsub List ( int Ġfrom Index , Ġint Ġto Index ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġnew ĠUnsupportedOperationException (" sub List Ġnot Ġyet Ġimplemented !"); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 9 . 1 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠMutable List < ${ name }${ name } Pair > Ġzip ${ name } (${ name } Iterable Ġiterable ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġsize Ġ= Ġthis . size (); ĊĠĠĠĠĠĠĠ Ġint Ġother Size Ġ= Ġiterable . size (); ĊĠĠĠĠĠĠĠ ĠMutable List < ${ name }${ name } Pair > Ġtarget Ġ= ĠLists . mutable . with Initial Capacity ( Math . min ( size , Ġother Size )); ĊĠĠĠĠĠĠĠ Ġ${ name } Iterator Ġiterator Ġ= Ġiterable .${ type } Iterator (); ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġsize Ġ&& Ġi Ġ< Ġother Size ; Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( Primitive Tuples . pair ( this . items [ i ], Ġiterator . next ())); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġempty Ġ${ name } ArrayList . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 9 . 2 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġ${ name } ArrayList Ġnew Empty () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Ġ${ name } ArrayList (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ since Ġ 9 . 1 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġ< T > ĠMutable List < ${ name } Object Pair < T >> Ġzip ( Iterable < T > Ġiterable ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġsize Ġ= Ġthis . size (); ĊĠĠĠĠĠĠĠ Ġint Ġother Size Ġ= ĠIterate . size Of ( iterable ); ĊĠĠĠĠĠĠĠ ĠMutable List < ${ name } Object Pair < T >> Ġtarget Ġ= ĠLists . mutable . with Initial Capacity ( Math . min ( size , Ġother Size )); ĊĠĠĠĠĠĠĠ ĠIterator < T > Ġiterator Ġ= Ġiterable . iterator (); ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġsize Ġ&& Ġiterator . hasNext (); Ġi ++) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . add ( Primitive Tuples . pair ( this . items [ i ], Ġiterator . next ())); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠInternal ${ name } Iterator Ġimplements ĠMutable ${ name } Iterator ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIndex Ġof Ġelement Ġto Ġbe Ġreturned Ġby Ġsubsequent Ġcall Ġto Ġnext . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġint ĠcurrentIndex ; ĊĠĠĠĠĠĠĠ Ġprivate Ġint Ġlast Index Ġ= Ġ- 1 ; ĊĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġhas Next () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . currentIndex Ġ!= Ġ${ name } ArrayList . this . size (); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġpublic Ġ${ type } Ġnext () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠNoSuch ElementException (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ type } Ġnext Ġ= Ġ${ name } ArrayList . this . items [ this . currentIndex ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . last Index Ġ= Ġthis . currentIndex ++; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġremove () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . last Index Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠIllegalStateException (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ name } ArrayList . this . remove AtIndex ( this . last Index ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . currentIndex --; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . last Index Ġ= Ġ- 1 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ """ Ċ