package Ġand . jem ison . kotlin m mp Ċ Ċ class ĠIn Memory Repository Ġ: ĠI Task Repository Ġ{ ĊĠĠĠ Ġclass ĠTask ( var Ġtask Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdone Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfun Ġmark Done () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtasks Ġ= Ġmutable ListOf < Task >() ĊĠĠĠ Ġoverride Ġfun Ġadd Task ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks . add ( Task ( s )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Tasks (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtasks . filter Ġ{ Ġt Ġ-> Ġ! t . done Ġ}. map Ġ{ Ġt Ġ-> Ġt . task Name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Task ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks . removeAll Ġ{ Ġt -> t . task Name == s Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Task As Done ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd ave : ĠTask Ġ= Ġtasks . find Ġ{ Ġt Ġ-> Ġt . task Name Ġ== Ġs Ġ} Ġ?: Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġd ave . mark Done () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Done Tasks (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtasks . filter Ġ{ Ġt Ġ-> Ġt . done Ġ}. map Ġ{ Ġt Ġ-> Ġt . task Name Ġ} ĊĠĠĠ Ġ} Ċ } Ċ