package Ġcom . so y wiz . dyn are k Ċ Ċ interface ĠD Function Ġ{ Ċ ĉ // ( val Ġret : ĠD Type <* >, Ġval Ġargs : ĠList < D Type <* >>, Ġval Ġbody : ĠD St m ) Ċ ĉ val Ġret : ĠD Type < *> Ċ ĉ val Ġargs : ĠList < D Type <* >> Ċ ĉ val Ġbody : ĠD St m Ċ } Ċ Ċ data Ġclass ĠD Function 0 < TR et Ġ: ĠAny >( override Ġval Ġret : ĠD Type < TR et >, Ġoverride Ġval Ġbody : ĠD St m ) Ġ: ĠD Function Ġ{ Ċ ĉ override Ġval Ġargs Ġ= ĠlistOf < D Type <* >>() Ċ } Ċ Ċ data Ġclass ĠD Function 1 < TR et Ġ: ĠAny , ĠT 0 Ġ: ĠAny >( override Ġval Ġret : ĠD Type < TR et >, Ġval Ġp 0 : ĠD Type < T 0 >, Ġoverride Ġval Ġbody : ĠD St m ) Ġ: Ċ ĉ D Function Ġ{ Ċ ĉ override Ġval Ġargs Ġ= ĠlistOf < D Type < *> >( p 0 ) Ċ } Ċ Ċ data Ġclass ĠD Function 2 < TR et Ġ: ĠAny , ĠT 0 Ġ: ĠAny , ĠT 1 Ġ: ĠAny >( Ċ ĉ override Ġval Ġret : ĠD Type < TR et >, Ċ ĉ val Ġp 0 : ĠD Type < T 0 >, Ċ ĉ val Ġp 1 : ĠD Type < T 1 >, Ċ ĉ override Ġval Ġbody : ĠD St m Ċ ) Ġ: ĠD Function Ġ{ Ċ ĉ override Ġval Ġargs Ġ= ĠlistOf < D Type < *> >( p 0 , Ġp 1 ) Ċ } Ċ Ċ data Ġclass ĠD Function 3 < TR et Ġ: ĠAny , ĠT 0 Ġ: ĠAny , ĠT 1 Ġ: ĠAny , ĠT 2 Ġ: ĠAny >( Ċ ĉ override Ġval Ġret : ĠD Type < TR et >, Ċ ĉ val Ġp 0 : ĠD Type < T 0 >, Ċ ĉ val Ġp 1 : ĠD Type < T 1 >, Ċ ĉ val Ġp 2 : ĠD Type < T 2 >, Ċ ĉ override Ġval Ġbody : ĠD St m Ċ ) Ġ: ĠD Function Ġ{ Ċ ĉ override Ġval Ġargs Ġ= ĠlistOf < D Type < *> >( p 0 , Ġp 1 , Ġp 2 ) Ċ } Ċ Ċ // fun Ġ< TR et > Ġfunction ( ret : ĠD Type < TR et >, Ġvar arg Ġargs : ĠD Type <* >, Ġblock : ĠSt m Builder < TR et , ĠUnit , ĠUnit , ĠUnit , ĠUnit >. () Ġ-> ĠUnit ): ĠD Function Ġ{ Ċ // ĉ val Ġbuilder Ġ= ĠSt m Builder < TR et , ĠUnit , ĠUnit , ĠUnit , ĠUnit >() Ċ // ĉ block ( builder ) Ċ // ĉ return ĠD Function ( ret , Ġargs . toList (), Ġbuilder . build ()) Ċ //} Ċ Ċ inline Ġfun Ġ< re ified ĠTR et Ġ: ĠAny > Ġfunction ( Ċ ĉ ret : ĠD Type < TR et >, Ċ ĉ block : ĠSt m Builder < TR et , ĠUnit , ĠUnit >. () Ġ-> ĠUnit Ċ ): ĠD Function 0 < TR et > Ġ{ Ċ ĉ val Ġbuilder Ġ= ĠSt m Builder ( TR et :: class , ĠUnit :: class , ĠUnit :: class ) Ċ ĉ block ( builder ) Ċ ĉ return ĠD Function 0 ( ret , Ġbuilder . build ()) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠTR et Ġ: ĠAny , Ġre ified ĠT 0 Ġ: ĠAny > Ġfunction ( Ċ ĉ arg 0 : ĠD Type < T 0 >, Ċ ĉ ret : ĠD Type < TR et >, Ċ ĉ block : ĠSt m Builder < TR et , ĠT 0 , ĠUnit >. () Ġ-> ĠUnit Ċ ): ĠD Function 1 < TR et , ĠT 0 > Ġ{ Ċ ĉ val Ġbuilder Ġ= ĠSt m Builder ( TR et :: class , ĠT 0 :: class , ĠUnit :: class ) Ċ ĉ block ( builder ) Ċ ĉ return ĠD Function 1 ( ret , Ġarg 0 , Ġbuilder . build ()) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠTR et Ġ: ĠAny , Ġre ified ĠT 0 Ġ: ĠAny , Ġre ified ĠT 1 Ġ: ĠAny > Ġfunction ( Ċ ĉ arg 0 : ĠD Type < T 0 >, Ċ ĉ arg 1 : ĠD Type < T 1 >, Ċ ĉ ret : ĠD Type < TR et >, Ċ ĉ block : ĠSt m Builder < TR et , ĠT 0 , ĠT 1 >. () Ġ-> ĠUnit Ċ ): ĠD Function 2 < TR et , ĠT 0 , ĠT 1 > Ġ{ Ċ ĉ val Ġbuilder Ġ= ĠSt m Builder ( TR et :: class , ĠT 0 :: class , ĠT 1 :: class ) Ċ ĉ block ( builder ) Ċ ĉ return ĠD Function 2 ( ret , Ġarg 0 , Ġarg 1 , Ġbuilder . build ()) Ċ } Ċ