package Ġres aver . pex Ċ Ċ import ĠPlatform ByteBuffer Ċ import Ġjava . io . IOException ĊĊĊ Ċ /** Ċ Ġ* ĠV Data Ġthat Ġstores Ġa Ġstring . Ċ Ġ*/ Ċ class ĠV Data Str Ġinternal Ġconstructor (` val `: ĠTString ?) Ġ: ĠV Data () Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġwrite ( output : ĠPlatform ByteBuffer ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutput ?. put ( type . ordinal . to Byte ()) ĊĠĠĠĠĠĠĠ Ġstring . write ( output ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcollect Strings ( strings : ĠMutable Set < T String ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstrings ?. add ( string ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠDataType ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDataType . STRING ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"\" $ string \"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 8 3 Ġ* Ġhash Ġ+ Ġstring . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġhash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ=== Ġother Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: class Ġ!= Ġother :: class Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother 2 Ġ= Ġother Ġas ĠV Data Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ== Ġother 2 . string ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstring : ĠTString Ġ= Ġ` val ` !! Ċ Ċ }