// Ġ! LANGUAGE : Ġ+ Function Types With Big Ar ity Ċ // ĠTARGET _ BACKEND : ĠJVM Ċ // ĠWITH _ RUNTIME Ċ // ĠFILE : ĠTest . java Ċ Ċ // Ġimport Ġkotlin . jvm . functions . Ar ity ; Ċ import Ġkotlin . jvm . functions . Function N ; Ċ import Ġjava . util . Arrays ; Ċ Ċ public Ġclass ĠTest Ġ{ ĊĠĠĠ Ġpublic Ġstatic Ġfinal Ġint ĠN Ġ= Ġ 3 0 ; ĊĊĠĠĠ Ġ// ĠTODO : Ġuncomment Ġar ity Ġas Ġsoon Ġas ĠAr ity Ġis Ġintroduced ĊĠĠĠ Ġpublic Ġstatic Ġvoid Ġtest (/* Ġ@ Ar ity ( N ) Ġ*/ ĠFunction N < Object > Ġf ) Ġ{ ĊĠĠĠĠĠĠĠ ĠObject [] Ġargs Ġ= Ġnew ĠObject [ N ]; ĊĠĠĠĠĠĠĠ ĠObject Ġo Ġ= Ġnew ĠObject (); ĊĠĠĠĠĠĠĠ ĠArrays . fill ( args , Ġo ); ĊĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< ĠN ; Ġi ++) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ i ] Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . invoke ( args ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( NullPointerException Ġe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( Throwable Ġe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠAssertionError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Incorrect Ġexception Ġ( NullPointerException Ġexpected ): Ġ" Ġ+ Ġe . getClass (). getName () Ġ+ Ġ", Ġparameter Ġindex Ġ= Ġ" Ġ+ Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ i ] Ġ= Ġo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠAssertionError (" NullPointerException Ġexpected , Ġbut Ġnothing Ġwas Ġthrown , Ġparameter Ġindex Ġ= Ġ" Ġ+ Ġi ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠFILE : Ġbox . kt Ċ Ċ fun Ġf ( ĊĠĠĠ Ġp 0 1 : ĠAny , Ġp 0 2 : ĠAny , Ġp 0 3 : ĠAny , Ġp 0 4 : ĠAny , Ġp 0 5 : ĠAny , Ġp 0 6 : ĠAny , Ġp 0 7 : ĠAny , Ġp 0 8 : ĠAny , Ġp 0 9 : ĠAny , Ġp 1 0 : ĠAny , ĊĠĠĠ Ġp 1 1 : ĠAny , Ġp 1 2 : ĠAny , Ġp 1 3 : ĠAny , Ġp 1 4 : ĠAny , Ġp 1 5 : ĠAny , Ġp 1 6 : ĠAny , Ġp 1 7 : ĠAny , Ġp 1 8 : ĠAny , Ġp 1 9 : ĠAny , Ġp 2 0 : ĠAny , ĊĠĠĠ Ġp 2 1 : ĠAny , Ġp 2 2 : ĠAny , Ġp 2 3 : ĠAny , Ġp 2 4 : ĠAny , Ġp 2 5 : ĠAny , Ġp 2 6 : ĠAny , Ġp 2 7 : ĠAny , Ġp 2 8 : ĠAny , Ġp 2 9 : ĠAny , Ġp 3 0 : ĠAny Ċ ): ĠAny Ġ= ĠAny () Ċ Ċ fun ĠAny . g ( ĊĠĠĠ Ġp 0 2 : ĠAny , Ġp 0 3 : ĠAny , Ġp 0 4 : ĠAny , Ġp 0 5 : ĠAny , Ġp 0 6 : ĠAny , Ġp 0 7 : ĠAny , Ġp 0 8 : ĠAny , Ġp 0 9 : ĠAny , Ġp 1 0 : ĠAny , ĊĠĠĠ Ġp 1 1 : ĠAny , Ġp 1 2 : ĠAny , Ġp 1 3 : ĠAny , Ġp 1 4 : ĠAny , Ġp 1 5 : ĠAny , Ġp 1 6 : ĠAny , Ġp 1 7 : ĠAny , Ġp 1 8 : ĠAny , Ġp 1 9 : ĠAny , Ġp 2 0 : ĠAny , ĊĠĠĠ Ġp 2 1 : ĠAny , Ġp 2 2 : ĠAny , Ġp 2 3 : ĠAny , Ġp 2 4 : ĠAny , Ġp 2 5 : ĠAny , Ġp 2 6 : ĠAny , Ġp 2 7 : ĠAny , Ġp 2 8 : ĠAny , Ġp 2 9 : ĠAny , Ġp 3 0 : ĠAny Ċ ): ĠAny Ġ= ĠAny () Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION _ ERROR ") ĊĠĠĠ ĠTest . test (:: f Ġas Ġkotlin . jvm . functions . Function N < Any >) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION _ ERROR ") ĊĠĠĠ ĠTest . test ( Any :: g Ġas Ġkotlin . jvm . functions . Function N < Any >) ĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ