package Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . builder Ċ Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . definitions . registry . Type Registry Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Double Map Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Error Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Event Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Extr insic Metadata Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Extr insic Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Function Argument Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Function Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Map Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Module Constant Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Module Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . N Map Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Runtime Metadata Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Runtime Metadata Reader Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Runtime Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Storage Entry Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . Storage Metadata Schema Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . group ByName Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Constant Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Error Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Event Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Function Argument Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Metadata Function Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Module Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Storage Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Storage Entry Ċ import Ġjp . co . sor am its u . fe ar less _ utils . runtime . metadata . module . Storage Entry Type Ċ import Ġjp . co . sor am its u . fe ar less _ utils . scale . En codable Struct Ċ Ċ @ Opt In ( Experimental Unsigned Types :: class ) Ċ internal Ġobject ĠV 1 3 Runtime Builder Ġ: ĠRuntime Builder Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Metadata ( ĊĠĠĠĠĠĠĠ Ġreader : ĠRuntime Metadata Reader , ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry ĊĠĠĠ Ġ): ĠRuntime Metadata Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Struct Ġ= Ġreader . metadata ĊĊĠĠĠĠĠĠĠ Ġrequire ( metadata Struct . schema Ġis ĠRuntime Metadata Schema ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRuntime Metadata ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextr insic Ġ= Ġbuild Extr insic ( metadata Struct [ Runtime Metadata Schema . extr insic ]), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules Ġ= Ġbuild Modules ( metadata Struct [ Runtime Metadata Schema . modules ], Ġtype Registry ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Version Ġ= Ġreader . metadata Version . to BigInteger () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Modules ( ĊĠĠĠĠĠĠĠ Ġmodules Raw : ĠList < En codable Struct < Module Metadata Schema >>, ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry ĊĠĠĠ Ġ): ĠMap < String , ĠModule > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodules Raw . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Module ( type Registry , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}. group ByName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Module ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġstruct : ĠEn codable Struct < Module Metadata Schema >, ĊĠĠĠ Ġ): ĠModule Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠmoduleName Ġ= Ġstruct [ Module Metadata Schema . name ] ĊĠĠĠĠĠĠĠ Ġval Ġmodule Index Ġ= Ġstruct [ Module Metadata Schema . index ]. toInt () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠModule ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠmoduleName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġmodule Index . to BigInteger (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Ġ= Ġstruct [ Module Metadata Schema . storage ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Storage ( type Registry , Ġit , ĠmoduleName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls Ġ= Ġstruct [ Module Metadata Schema . calls ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Calls ( type Registry , Ġit , Ġmodule Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= Ġstruct [ Module Metadata Schema . events ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Events ( type Registry , Ġit , Ġmodule Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstants Ġ= Ġbuild Constants ( type Registry , Ġstruct [ Module Metadata Schema . constants ]), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors Ġ= Ġbuild Errors ( struct [ Module Metadata Schema . errors ]) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Storage ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġstruct : ĠEn codable Struct < Storage Metadata Schema >, ĊĠĠĠĠĠĠĠ ĠmoduleName : ĠString , ĊĠĠĠ Ġ): ĠStorage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstorage Entries Ġ= Ġstruct [ Storage Metadata Schema . entries ]. map Ġ{ Ġentry Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġentry Struct [ Storage Entry Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġentry Struct [ Storage Entry Metadata Schema . modifier ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġbuild Entry Type ( type Registry , Ġentry Struct [ Storage Entry Metadata Schema . type ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġentry Struct [ Storage Entry Metadata Schema . default ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Ġ= Ġentry Struct [ Storage Entry Metadata Schema . documentation ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmoduleName Ġ= ĠmoduleName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStorage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġstruct [ Storage Metadata Schema . prefix ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= Ġstorage Entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. group ByName () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Calls ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġcalls Raw : ĠList < En codable Struct < Function Metadata Schema >>, ĊĠĠĠĠĠĠĠ Ġmodule Index : ĠInt , ĊĠĠĠ Ġ): ĠMap < String , ĠMetadata Function > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcalls Raw . map Indexed Ġ{ Ġindex , Ġcall Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMetadata Function ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcall Struct [ Function Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġcall Struct [ Function Metadata Schema . arguments ]. map Ġ{ Ġargument Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFunction Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġargument Struct [ Function Argument Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype Registry [ argument Struct [ Function Argument Metadata Schema . type ]] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Ġ= Ġcall Struct [ Function Metadata Schema . documentation ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġmodule Index Ġto Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. group ByName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Events ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġevents Raw : ĠList < En codable Struct < Event Metadata Schema >>, ĊĠĠĠĠĠĠĠ Ġmodule Index : ĠInt , ĊĠĠĠ Ġ): ĠMap < String , ĠEvent > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġevents Raw . map Indexed Ġ{ Ġindex , Ġevent Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġevent Struct [ Event Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġevent Struct [ Event Metadata Schema . arguments ]. map Ġ{ Ġtype Registry [ it ] Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Ġ= Ġevent Struct [ Event Metadata Schema . documentation ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġmodule Index Ġto Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. group ByName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Constants ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġconstants Raw : ĠList < En codable Struct < Module Constant Metadata Schema >>, ĊĠĠĠ Ġ): ĠMap < String , ĠConstant > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconstants Raw . map Ġ{ Ġconstant Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstant ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġconstant Struct [ Module Constant Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype Registry [ constant Struct [ Module Constant Metadata Schema . type ]], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġconstant Struct [ Module Constant Metadata Schema . value ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Ġ= Ġconstant Struct [ Module Constant Metadata Schema . documentation ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. group ByName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Errors ( ĊĠĠĠĠĠĠĠ Ġerrors Raw : ĠList < En codable Struct < Error Metadata Schema >>, ĊĠĠĠ Ġ): ĠMap < String , ĠError > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġerrors Raw . map Ġ{ Ġerror Struct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġerror Struct [ Error Metadata Schema . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Ġ= Ġerror Struct [ Error Metadata Schema . documentation ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. group ByName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Entry Type ( ĊĠĠĠĠĠĠĠ Ġtype Registry : ĠType Registry , ĊĠĠĠĠĠĠĠ Ġenum Value : ĠAny ? ĊĠĠĠ Ġ): ĠStorage Entry Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( enum Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Entry Type . Plain ( type Registry [ enum Value ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEn codable Struct < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( enum Value . schema ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Schema Ġ-> ĠStorage Entry Type . N Map ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys Ġ= ĠlistOf ( type Registry [ enum Value [ Map Schema . key ]] ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash ers Ġ= ĠlistOf ( enum Value [ Map Schema . hash er ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtype Registry [ enum Value [ Map Schema . value ]] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDouble Map Schema Ġ-> ĠStorage Entry Type . N Map ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Registry [ enum Value [ Double Map Schema . key 1 ]], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Registry [ enum Value [ Double Map Schema . key 2 ]], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash ers Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum Value [ Double Map Schema . key 1 Hash er ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum Value [ Double Map Schema . key 2 Hash er ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtype Registry [ enum Value [ Double Map Schema . value ]] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN Map Schema Ġ-> ĠStorage Entry Type . N Map ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys Ġ= Ġenum Value [ N Map Schema . keys ]. map Ġ{ Ġtype Registry [ it ] Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash ers Ġ= Ġenum Value [ N Map Schema . hash ers ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtype Registry [ enum Value [ N Map Schema . value ]] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcannot Construct Storage Entry ( enum Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcannot Construct Storage Entry ( enum Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Extr insic ( ĊĠĠĠĠĠĠĠ Ġstruct : ĠEn codable Struct < Extr insic Metadata Schema > ĊĠĠĠ Ġ) Ġ= ĠEx tr insic Metadata ( ĊĠĠĠĠĠĠĠ Ġversion Ġ= Ġstruct [ Extr insic Metadata Schema . version ]. toInt (). to BigInteger (), ĊĠĠĠĠĠĠĠ Ġsigned Extensions Ġ= Ġstruct [ Extr insic Metadata Schema . signed Extensions ] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcannot Construct Storage Entry ( from : ĠAny ?): ĠNothing Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Cannot Ġconstruct ĠStorage Entry Type Ġfrom Ġ$ from ") ĊĠĠĠ Ġ} Ċ } Ċ