package Ġcom . github . dm stock ing . kotlin Ċ Ċ sealed Ġclass ĠMaybe < T > Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġ< R > Ġmap ( transform : Ġ( T ) Ġ-> ĠR ): ĠMaybe < R > ĊĠĠĠ Ġabstract Ġfun Ġ< R > Ġflat Map ( transform : Ġ( T ) Ġ-> ĠMaybe < R >): ĠMaybe < R > ĊĠĠĠ Ġabstract Ġfun Ġfilter ( filter : Ġ( T ) Ġ-> ĠBoolean ): ĠMaybe < T > ĊĠĠĠ Ġabstract Ġfun Ġor ( factory : Ġ() Ġ-> ĠMaybe < T >): ĠMaybe < T > ĊĠĠĠ Ġabstract Ġfun Ġor Else ( value : ĠT ): ĠT ĊĠĠĠ Ġabstract Ġfun Ġor Else ( factory : Ġ() Ġ-> ĠT ): ĠT ĊĠĠĠ Ġabstract Ġfun Ġto List (): ĠList < T > Ċ } Ċ Ċ fun Ġ< T > Ġjust ( value : ĠT ): ĠMaybe < T > Ġ{ ĊĠĠĠ Ġreturn ĠJust ( value ) Ċ } Ċ Ċ data Ġclass ĠJust < T > Ċ internal Ġconstructor ( private Ġval Ġvalue : ĠT ) Ġ: ĠMaybe < T >() Ġ{ ĊĊĠĠĠ Ġfun Ġget (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< R > Ġmap ( transform : Ġ( T ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjust ( transform . invoke ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< R > Ġflat Map ( transform : Ġ( T ) Ġ-> ĠMaybe < R >): ĠMaybe < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransform . invoke ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( filter : Ġ( T ) Ġ-> ĠBoolean ): ĠMaybe < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( filter . invoke ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnothing () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor ( factory : Ġ() Ġ-> ĠMaybe < T >): ĠMaybe < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( value : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( factory : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto List (): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( value ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġnothing Ġ= ĠNothing < Any >() Ċ Ċ fun Ġ< T > Ġnothing (): ĠMaybe < T > Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġreturn Ġnothing Ġas ĠNothing < T > Ċ } Ċ Ċ class ĠNothing < T > Ċ internal Ġconstructor (): ĠMaybe < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< R > Ġmap ( transform : Ġ( T ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnothing () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< R > Ġflat Map ( transform : Ġ( T ) Ġ-> ĠMaybe < R >): ĠMaybe < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnothing () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( filter : Ġ( T ) Ġ-> ĠBoolean ): ĠMaybe < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnothing () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor ( factory : Ġ() Ġ-> ĠMaybe < T >): ĠMaybe < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfactory . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( value : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( factory : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfactory . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto List (): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 8 : ĠMaybe < T 8 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 , Ġo 8 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 7 ] Ġas ĠT 8 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 , ĠT 9 > Ġm let ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 8 : ĠMaybe < T 8 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 9 : ĠMaybe < T 9 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm let Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 , ĠT 9 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġreturn Ġm let Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 , Ġo 8 , Ġo 9 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ m let Array Ġm let Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 7 ] Ġas ĠT 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 8 ] Ġas ĠT 9 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ internal Ġfun Ġm let Array ( objects : ĠList < Maybe < out ĠAny ? >>, Ġm let Function : Ġ( List < Any ?> ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġall Just Ġ= Ġobjects . all Ġ{ Ġit Ġis ĠJust Ġ} ĊĠĠĠ Ġobjects . take If Ġ{ Ġall Just Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġ( it Ġas ĠJust < Any ?> ). get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let ( m let Function ) Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 8 : ĠMaybe < T 8 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 , Ġo 8 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 7 ] Ġas ĠT 8 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 , ĠT 9 , ĠR > Ġzip ( o 1 : ĠMaybe < T 1 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 : ĠMaybe < T 2 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 3 : ĠMaybe < T 3 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 4 : ĠMaybe < T 4 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 5 : ĠMaybe < T 5 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 6 : ĠMaybe < T 6 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 7 : ĠMaybe < T 7 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 8 : ĠMaybe < T 8 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 9 : ĠMaybe < T 9 >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Function : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 , ĠT 6 , ĠT 7 , ĠT 8 , ĠT 9 ) Ġ-> ĠR ): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġreturn Ġzip Array ( listOf ( o 1 , Ġo 2 , Ġo 3 , Ġo 4 , Ġo 5 , Ġo 6 , Ġo 7 , Ġo 8 , Ġo 9 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn @ zip Array Ġzip Function . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ] Ġas ĠT 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ] Ġas ĠT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ] Ġas ĠT 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] Ġas ĠT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 4 ] Ġas ĠT 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 5 ] Ġas ĠT 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 6 ] Ġas ĠT 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 7 ] Ġas ĠT 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 8 ] Ġas ĠT 9 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ internal Ġfun Ġ< R > Ġzip Array ( objects : ĠList < Maybe < out ĠAny ? >>, Ġzip Function : Ġ( List < Any ?> ) Ġ-> ĠR ?): ĠMaybe < R > Ġ{ ĊĠĠĠ Ġval Ġall Just Ġ= Ġobjects . all Ġ{ Ġit Ġis ĠJust Ġ} ĊĠĠĠ Ġreturn Ġobjects . take If Ġ{ Ġall Just Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġ( it Ġas ĠJust < Any ?> ). get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let ( zip Function ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġjust ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġnothing () Ċ } Ċ