package Ġio . art . meta . kotlin Ċ Ċ import Ġio . art . core . caster . C aster . cast Ċ import Ġio . art . meta . constants . Meta Constants . Meta Type Internal Kind .* Ċ import Ġio . art . meta . model . Meta Type Ċ import Ġio . art . meta . model . Transform ers Computer . compute Input Transformer Ċ import Ġio . art . meta . model . Transform ers Computer . compute Output Transformer Ċ import Ġio . art . meta . module . Meta Initializer Ċ import Ġio . art . meta . transformer . Custom Transform ers ĊĊ Ċ internal Ġfun ĠMeta Initializer . register Kotlin Meta Types (): ĠMeta Initializer Ġ{ ĊĠĠĠ ĠMeta Type . builder < Unit >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Unit :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( VOID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ ĠMeta Type . builder < Nothing >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Nothing :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( VOID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ ĠMeta Type . builder < Function 0 <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Function 0 :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( SUP PLIER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ ĠMeta Type . builder < Sequence <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Sequence :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( STREAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ ĠMeta Type . builder < Lazy <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Lazy :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( LA ZY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ ĠMeta Type . builder < Pair < *, Ġ* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Pair :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. internal Kind ( MAP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let (:: register Custom Type ) ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ internal Ġfun ĠMeta Initializer . register Kotlin Meta Transform ers (): ĠMeta Initializer Ġ{ ĊĠĠĠ Ġregister Function Transformer () ĊĠĠĠ Ġregister Lazy Transformer () ĊĠĠĠ Ġregister Pair Transformer () ĊĠĠĠ Ġregister Sequence Transformer () ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ private Ġfun ĠMeta Initializer . register Function Transformer () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġ{ Ġtype : ĠMeta Type < *> Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġtype . parameters (). get ( 0 ) ĊĠĠĠĠĠĠĠ ĠKotlin Function Transformer ( cast ( compute Input Transformer ( parameter ))) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġoutput Ġ= Ġ{ Ġtype : ĠMeta Type < *> Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġtype . parameters (). get ( 0 ) ĊĠĠĠĠĠĠĠ ĠKotlin Function Transformer ( cast ( compute Output Transformer ( parameter ))) ĊĠĠĠ Ġ} ĊĠĠĠ Ġregister Custom Transform ers ( Function 0 :: class . java , ĠCustom Transform ers ( input , Ġoutput )) Ċ } Ċ Ċ private Ġfun ĠMeta Initializer . register Lazy Transformer () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġ{ Ġtype : ĠMeta Type < *> Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġtype . parameters (). get ( 0 ) ĊĠĠĠĠĠĠĠ ĠKotlin Lazy Transformer ( cast ( compute Input Transformer ( parameter ))) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġoutput Ġ= Ġ{ Ġtype : ĠMeta Type < *> Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġtype . parameters (). get ( 0 ) ĊĠĠĠĠĠĠĠ ĠKotlin Lazy Transformer ( cast ( compute Output Transformer ( parameter ))) ĊĠĠĠ Ġ} ĊĠĠĠ Ġregister Custom Transform ers ( Lazy :: class . java , ĠCustom Transform ers ( input , Ġoutput )) Ċ } Ċ Ċ private Ġfun ĠMeta Initializer . register Pair Transformer () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġ{ Ġ_: ĠMeta Type < *> Ġ-> ĠKotlin Pair Transformer Ġ} ĊĠĠĠ Ġval Ġoutput Ġ= Ġ{ Ġ_: ĠMeta Type < *> Ġ-> ĠKotlin Pair Transformer Ġ} ĊĠĠĠ Ġregister Custom Transform ers ( Pair :: class . java , ĠCustom Transform ers ( input , Ġoutput )) Ċ } Ċ Ċ private Ġfun ĠMeta Initializer . register Sequence Transformer () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġ{ Ġ_: ĠMeta Type < *> Ġ-> ĠKotlin Sequence Transformer Ġ} ĊĠĠĠ Ġval Ġoutput Ġ= Ġ{ Ġ_: ĠMeta Type < *> Ġ-> ĠKotlin Sequence Transformer Ġ} ĊĠĠĠ Ġregister Custom Transform ers ( Sequence :: class . java , ĠCustom Transform ers ( input , Ġoutput )) Ċ } Ċ