package Ġarrow . meta . ide . plugins . pro ofs . fold ing Ċ Ċ object ĠFold ing Builder Test Code Ġ{ ĊĊĠ Ġval Ġunion Code Ġ= ĊĠĠĠ Ġ""" ĊĠĠĠ Ġpackage Ġpre lude ĊĠĠĠĠĠĠĊĠĠĠ Ġimport Ġarrow . Union 2 ĊĠĠĠ Ġimport Ġarrow . Union 3 ĊĠĠĠ Ġimport Ġarrow . Union 4 ĊĠĠĠ Ġimport Ġarrow . Union 7 ĊĠĠĠĠĊĠĠĠ Ġfun Ġf (): ĠUnion 2 < String , ĠUnion 2 < Int , ĠDouble >> Ġ= Ġ 2 ĊĠĠĠ Ġfun Ġg (): ĠUnion 3 < String , ĠInt , ĠDouble > Ġ= Ġ 2 . 0 ĊĠĠĠ Ġfun Ġh (): ĠUnion 4 < String , ĠInt , ĠDouble , ĠLong > Ġ= Ġ 2 L ĊĠĠĠ Ġfun Ġj (): ĠUnion 3 < String , ĠInt , ĠDouble >? Ġ= Ġ 2 . 0 ĊĠĠĠ Ġfun Ġk (): ĠUnion 7 < String , ĠInt , ĠDouble , ĠInt , ĠChar , ĠBoolean , ĠLong >? Ġ= Ġnull ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠ Ġval Ġtuple Code Ġ= ĊĠĠĠ Ġ""" ĊĠĠĠ Ġpackage Ġpre lude ĊĠĠĠĠĊĠĠĠ Ġimport Ġarrow . tuples . Tuple 2 ĊĠĠĠ Ġimport Ġarrow . tuples . Tuple 3 ĊĠĠĠ Ġimport Ġarrow . tuples . Tuple 4 ĊĠĠĠ Ġimport Ġarrow . tuples . tuple Of ĊĠĠĠĠĊĠĠĠ Ġval Ġtuple 2 : ĠTuple 2 < Int , ĠInt > Ġ= Ġtuple Of ( 2 , Ġ 2 ) ĊĠĠĠ Ġval Ġtuple 3 : ĠTuple 3 < Int , ĠInt , ĠString > Ġ= Ġtuple Of ( 2 , Ġ 2 , Ġ" 4 7 Degrees ") ĊĠĠĠ Ġval Ġtuple 4 : ĠTuple 4 < Int , ĠInt , ĠString , ĠDouble > Ġ= Ġtuple Of ( 2 , Ġ 2 , Ġ" 4 7 Degrees ", Ġ 5 . 0 ) ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠ Ġval Ġunion Prelude Ġ= ĊĠĠĠ Ġ""" ĊĠĠĠ Ġpackage Ġarrow ĊĠĠĠĠĊĠĠĠ Ġtype alias ĠUnion 2 < A , ĠB > Ġ= ĠUnion 3 < A , ĠB , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 3 < A , ĠB , ĠC > Ġ= ĠUnion 4 < A , ĠB , ĠC , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 4 < A , ĠB , ĠC , ĠD > Ġ= ĠUnion 5 < A , ĠB , ĠC , ĠD , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 5 < A , ĠB , ĠC , ĠD , ĠE > Ġ= ĠUnion 6 < A , ĠB , ĠC , ĠD , ĠE , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 6 < A , ĠB , ĠC , ĠD , ĠE , ĠF > Ġ= ĠUnion 7 < A , ĠB , ĠC , ĠD , ĠE , ĠF , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 7 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG > Ġ= ĠUnion 8 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 8 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH > Ġ= ĠUnion 9 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 9 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI > Ġ= ĠUnion 1 0 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 0 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ > Ġ= ĠUnion 1 1 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 1 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK > Ġ= ĠUnion 1 2 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 2 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL > Ġ= ĠUnion 1 3 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 3 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM > Ġ= ĠUnion 1 4 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 4 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN > Ġ= ĠUnion 1 5 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 5 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO > Ġ= ĠUnion 1 6 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 6 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP > Ġ= ĠUnion 1 7 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 7 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ > Ġ= ĠUnion 1 8 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 8 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR > Ġ= ĠUnion 1 9 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 1 9 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS > Ġ= ĠUnion 2 0 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 2 0 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS , ĠT > Ġ= ĠUnion 2 1 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS , ĠT , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġtype alias ĠUnion 2 1 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS , ĠT , ĠU > Ġ= ĠUnion 2 2 < A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI , ĠJ , ĠK , ĠL , ĠM , ĠN , ĠO , ĠP , ĠQ , ĠR , ĠS , ĠT , ĠU , Ġ` ðŁ ļ « ` > ĊĠĠĠ Ġinterface ĠUnion 2 2 < out ĠA , Ġout ĠB , Ġout ĠC , Ġout ĠD , Ġout ĠE , Ġout ĠF , Ġout ĠG , Ġout ĠH , Ġout ĠI , Ġout ĠJ , Ġout ĠK , Ġout ĠL , Ġout ĠM , Ġout ĠN , Ġout ĠO , Ġout ĠP , Ġout ĠQ , Ġout ĠR , Ġout ĠS , Ġout ĠT , Ġout ĠU , Ġout ĠV > Ġ{ Ġval Ġvalue : ĠAny ? Ġ} ĊĠĠĠ Ġinline Ġclass ĠUnion ( override Ġval Ġvalue : ĠAny ?) Ġ: ĠUnion 2 2 < ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ `, Ġ` ðŁĶ ¥ ` > ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠ Ġval Ġtuple Prelude Ġ= ĊĠĠĠ Ġ""" ĊĠĠĠ Ġpackage Ġarrow . tuples ĊĊĠĠĠ Ġinterface ĠTuple N Ġ{ ĊĠĠĠĠĠ Ġval Ġvalue : ĠArray < Any ?> ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinterface ĠTuple 1 < out ĠA > Ġ: ĠTuple N Ġ{ ĊĠĠĠĠĠ Ġoperator Ġfun Ġcomponent 1 (): ĠA Ġ= Ġvalue [ 0 ] Ġas ĠA ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinterface ĠTuple 2 < out ĠA , Ġout ĠB > Ġ: ĠTuple 1 < A > Ġ{ ĊĠĠĠĠĠ Ġoperator Ġfun Ġcomponent 2 (): ĠB Ġ= Ġvalue [ 1 ] Ġas ĠB ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinterface ĠTuple 3 < out ĠA , Ġout ĠB , Ġout ĠC > Ġ: ĠTuple 2 < A , ĠB > Ġ{ ĊĠĠĠĠĠ Ġoperator Ġfun Ġcomponent 3 (): ĠC Ġ= Ġvalue [ 2 ] Ġas ĠC ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinterface ĠTuple 4 < out ĠA , Ġout ĠB , Ġout ĠC , Ġout ĠD > Ġ: ĠTuple 3 < A , ĠB , ĠC > Ġ{ ĊĠĠĠĠĠ Ġoperator Ġfun Ġcomponent 4 (): ĠD Ġ= Ġvalue [ 3 ] Ġas ĠD ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinline Ġclass Ġtuple Of Ġprivate Ġconstructor ( override Ġval Ġvalue : ĠArray < Any ?> ) Ġ: ĠTuple 4 < Nothing , ĠNothing , ĠNothing , ĠNothing > Ġ{ ĊĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġ< A , ĠB > Ġinvoke ( a : ĠA , Ġb : ĠB ): ĠTuple 2 < A , ĠB > Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġtuple Of ( array Of ( a , Ġb )) ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġ< A , ĠB , ĠC > Ġinvoke ( a : ĠA , Ġb : ĠB , Ġc : ĠC ): ĠTuple 3 < A , ĠB , ĠC > Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġtuple Of ( array Of ( a , Ġb , Ġc )) ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġ< A , ĠB , ĠC , ĠD > Ġinvoke ( a : ĠA , Ġb : ĠB , Ġc : ĠC , Ġd : ĠD ): ĠTuple 4 < A , ĠB , ĠC , ĠD > Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġtuple Of ( array Of ( a , Ġb , Ġc , Ġd )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ""" . trim Indent () Ċ }