package Ġme . nick ell is . tow ers . sample . repo . trees Ċ Ċ import Ġme . nick ell is . tow ers . sample . data . Tree Ċ import Ġme . nick ell is . tow ers . sample . k tx . isValid IndexOf ĊĊ Ċ class ĠMock Forest Ġprivate Ġconstructor (): ĠForest Repo Ġ{ ĊĊĠ Ġprivate Ġval Ġtrees Ġ= Ġmutable ListOf ( ĊĠĠĠ ĠTree ( name Ġ= Ġ" Ac ac ia "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" Al der "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" A sh "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" Asp en "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" B ass wood "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" B ir ch "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" Bu ck eye "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" C atal pa "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" C ed ar "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" C ot ton wood "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" E uc aly pts "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" F ir "), ĊĠĠĠ ĠTree ( name Ġ= Ġ" H em lock ") ĊĠ Ġ) ĊĊĠ Ġoverride Ġfun Ġfind Trees (): ĠList < Tree > Ġ= Ġtrees . toList () ĊĊĠ Ġoverride Ġfun Ġfind Tree ( id : ĠString ): ĠTree ? Ġ= Ġtrees . first OrNull Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĊĠ Ġoverride Ġfun Ġcut Down Tree ( id : ĠString ): ĠTree ? Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= Ġtrees . indexOf First Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠ Ġif Ġ( index . isValid IndexOf ( trees )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrees . remove At ( index ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġplant Tree ( seed : ĠTree ): ĠTree Ġ{ ĊĠĠĠ Ġif Ġ( trees . first OrNull Ġ{ Ġit . id Ġ== Ġseed . id Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġseed ĊĠĠĠ Ġ} ĊĠĠĠ Ġtrees . add ( seed ) ĊĠĠĠ Ġreturn Ġtrees . last () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠMock Forest ? Ġ= Ġnull ĊĠĠĠ Ġfun ĠgetInstance (): ĠMock Forest Ġ{ ĊĠĠĠĠĠ Ġval Ġforest Ġ= ĠINSTANCE Ġ?: ĠMock Forest () ĊĠĠĠĠĠ Ġif Ġ( INSTANCE Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġforest ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġforest ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }