package Ġcom . chr yn an . queue Ċ Ċ open Ġclass ĠMutable List Deque < T Ġ: ĠAny > Ġ: ĠCollection < T >, ĊĠĠĠĠĠĠĠ ĠDe que < T >, ĊĠĠĠĠĠĠĠ ĠMutable Deque < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmutable List : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġval Ġsize ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmutable List . size ĊĊĠĠĠ Ġoverride Ġfun Ġget First (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġthrow ĠNoSuch ElementException (" Cannot Ġcall Ġget First () Ġon ĠDe que Ġbecause Ġthere Ġare Ġno Ġelements .") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmutable List [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġthrow ĠNoSuch ElementException (" Cannot Ġcall ĠgetLast () Ġon ĠDe que Ġbecause Ġthere Ġare Ġno Ġelements .") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmutable List [ mutable List . size Ġ- Ġ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġiterator () Ġ= Ġmutable List . iterator () ĊĊĠĠĠ Ġoverride Ġfun Ġdescending Iterator () Ġ= Ġmutable List . as Re versed (). iterator () ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( element : ĠT ) Ġ= Ġmutable List . contains ( element ) ĊĊĠĠĠ Ġoverride Ġfun Ġcontains All ( elements : ĠCollection < T >) Ġ= Ġmutable List . contains All ( elements ) ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty () Ġ= Ġmutable List . isEmpty () ĊĊĠĠĠ Ġoverride Ġfun Ġadd First ( element : ĠT ) Ġ= Ġmutable List . add ( 0 , Ġelement ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd Last ( element : ĠT ) Ġ= Ġmutable List . add ( mutable List . size , Ġelement ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd All First ( elements : ĠCollection < T >) Ġ= Ġmutable List . addAll ( 0 , Ġelements ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd All Last ( elements : ĠCollection < T >) Ġ= Ġmutable List . addAll ( mutable List . size , Ġelements ) ĊĊĠĠĠ Ġoverride Ġfun Ġremove First (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġthrow ĠNoSuch ElementException (" Cannot Ġcall Ġremove First () Ġon ĠDe que Ġbecause Ġthere Ġare Ġno Ġelements .") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmutable List . remove At ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Last (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġthrow ĠNoSuch ElementException (" Cannot Ġcall Ġremove Last () Ġon ĠDe que Ġbecause Ġthere Ġare Ġno Ġelements .") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmutable List . remove At ( mutable List . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove First Occurrence ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmutable List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mutable List [ i ] Ġ== Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable List . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Last Occurrence ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List . isEmpty ()) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmutable List . size Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mutable List [ i ] Ġ== Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable List . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove All Occ urrences ( element : ĠT ) Ġ= Ġmutable List . removeAll Ġ{ Ġit Ġ== Ġelement Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġthis :: class Ġ!= Ġother :: class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠMutable List Deque < *> ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mutable List Ġ!= Ġother . mutable List ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġmutable List . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Mutable List Deque ( mutable List =$ mutable List )" ĊĊĠĠĠ Ġfun Ġto Pretty String () Ġ= Ġmutable List . toString () Ċ }