package Ġk lib . collect Ċ Ċ import Ġk lib . collect . exception . Empty Stack Exception ĊĊ Ċ class ĠStack < E > Ġ: ĠI Stack < E > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġelements : ĠMutable List < E > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġelements . size ĊĊĠĠĠ Ġoverride Ġfun Ġpush ( element : ĠE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelements . add ( element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpop (): ĠE Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( elements . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠEmpty Stack Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġelements . last () ĊĠĠĠĠĠĠĠ Ġelements . remove At ( elements . last Index ) ĊĠĠĠĠĠĠĠ Ġreturn Ġelement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpeak (): ĠE Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( elements . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠEmpty Stack Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġelements . last () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelements . isEmpty () ĊĠĠĠ Ġ} Ċ Ċ }