package Ġcom . coding fel ine . build kon fig . compiler Ċ Ċ import Ġcom . squareup . kotlin po et . Code Block Ċ import Ġcom . squareup . kotlin po et . Parameterized TypeName . Companion . parameter ized By Ċ import Ġcom . squareup . kotlin po et . TypeName Ċ import Ġcom . squareup . kotlin po et . as TypeName Ċ import Ġcom . squareup . kotlin po et . build Code Block Ċ import Ġjava . io . Serializable Ċ Ċ data Ġclass ĠField Spec ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġprivate Ġval Ġvalue : ĠField Value , ĊĠĠĠ Ġval Ġis Target Specific : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠSerializable Ġ{ ĊĊĠĠĠ Ġval Ġcode Block : ĠCode Block ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbuild Code Block Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . StringValue Ġ-> Ġadd ("% S ", Ġvalue . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . Int Value Ġ-> Ġadd ("% L ", Ġvalue . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . Float Value Ġ-> Ġadd ("% L ", Ġvalue . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . Long Value Ġ-> Ġadd ("% L ", Ġvalue . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . Boolean Value Ġ-> Ġadd ("% L ", Ġvalue . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠField Value . String List Value Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġvalue . value . join ToString ( prefix Ġ= Ġ" listOf < String >( ", Ġpostfix Ġ= Ġ" )", Ġtransform Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" $ it \"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ("% L ", Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠField Value Ġ: ĠSerializable Ġ{ ĊĊĠĠĠĠĠĠĠ Ġabstract Ġval ĠtypeName : ĠType Name ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠString Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠString ? ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠString :: class . as TypeName (). copy ( nullable Ġ= Ġvalue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠInt Value ( val Ġvalue : ĠInt ?) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠInt :: class . as TypeName (). copy ( nullable Ġ= Ġvalue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠFloat Value ( val Ġvalue : ĠFloat ?) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠFloat :: class . as TypeName (). copy ( nullable Ġ= Ġvalue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠLong Value ( val Ġvalue : ĠLong ?) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠLong :: class . as TypeName (). copy ( nullable Ġ= Ġvalue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠBoolean Value ( val Ġvalue : ĠBoolean ?) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠBoolean :: class . as TypeName (). copy ( nullable Ġ= Ġvalue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠString List Value ( val Ġvalue : ĠList < String >) Ġ: ĠField Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠList :: class . parameter ized By ( String :: class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval ĠtypeName : ĠType Name ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġvalue . typeName . copy () Ċ Ċ } Ċ