package Ġcom . de but . states . Song Detail Ċ Ċ import Ġcom . de but . contracts . Song Track Contract Ċ import Ġnet . cord a . core . contracts . Bel ongsTo Contract Ċ import Ġnet . cord a . core . contracts . Contract State Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . schemas . Mapped Schema Ċ import Ġnet . cord a . core . schemas . Persistent State Ċ import Ġnet . cord a . core . schemas . Queryable State Ċ import Ġnet . cord a . core . serialization . C ord a Serializable Ċ Ċ // Ġ********* Ċ // Ġ* ĠState Ġ* Ċ // Ġ********* Ċ @ C ord a Serializable Ċ @ Bel ongsTo Contract ( Song Track Contract :: class ) Ċ data Ġclass ĠSong Info State ( ĊĠĠĠĠĠĠĠ Ġval Ġ_ id : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsong _ name : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsong _ duration : ĠFloat , ĊĠĠĠĠĠĠĠ Ġval Ġsong _ type : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġtotal _ ear ning : ĠDouble , ĊĠĠĠĠĠĠĠ Ġval Ġartist _ id : ĠString , ĊĠĠĠĠĠĠĠ Ġvar Ġparty List : ĠList < Party > Ċ ) Ġ: ĠContract State , ĠQuery able State Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġgenerate Mapped Object ( schema : ĠM apped Schema ): ĠPersistent State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( schema ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSong Info Schema Ġ-> ĠSong Info Schema . Persistent Song Info State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ._ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . song _ name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Un re cogn ised Ġschema Ġ$ schema ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsupported Schemas (): ĠIterable < Mapped Schema > Ġ= ĠlistOf ( Song Info Schema ) ĊĠĠĠ Ġoverride Ġval Ġparticipants Ġget () Ġ= Ġparty List Ċ } ĊĊĊ