package Ġfi . th ak ki . s ud ok us olver . engine . model Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Transient Ċ Ċ enum Ġclass ĠCell ValueType Ġ{ ĊĠĠĠ ĠSET TABLE , ĊĠĠĠ ĠG IV EN Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠCell ( val Ġcoordinates : ĠCoordinates , Ġprivate Ġval Ġsymbols : ĠS ymbols ) Ġ{ ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠAnalysis ( ĊĠĠĠĠĠĠĠ Ġvar Ġcandidates : ĠSet < Symbol > Ġ= Ġempty Set (), ĊĠĠĠĠĠĠĠ Ġ@ Transient ĊĠĠĠĠĠĠĠ Ġvar Ġstrong Links : ĠSet < Strong Link > Ġ= Ġempty Set () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġvalue : ĠSymbol ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( newValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalysis . candidates Ġ= Ġif Ġ( newValue Ġ!= Ġnull ) Ġempty Set () Ġelse Ġsymbols ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalysis . strong Links Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġtype : ĠCell ValueType Ġ= ĠCell ValueType . SET TABLE ĊĠĠĠ Ġval Ġanalysis Ġ= ĠAnalysis ( candidates Ġ= Ġsymbols ) ĊĊĠĠĠ Ġfun Ġhas Value (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġvalue Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġset Given ( value : ĠSymbol ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠCell ValueType . G IV EN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġother Ġas ĠCell ĊĠĠĠĠĠĠĠ Ġreturn Ġcoordinates Ġ== Ġother . coordinates ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġcoordinates . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" Cell $ coordinates =$ value " Ċ } Ċ