package Ġcom . mir u ken Ċ Ċ type alias ĠResolve Args Ġ= Ġ( Array < out ĠType Reference >) Ġ-> ĠList < Any ?> ? Ċ type alias ĠTarget Action < T > Ġ= ĠT .( resolve Args : ĠResolve Args ) Ġ-> ĠBoolean Ċ Ċ inline Ġfun Ġ< re ified ĠT , ĠR > Ġtarget Action ( ĊĠĠĠĠĠĠĠ Ġno inline Ġnotify : Ġ( Target Action < T >) Ġ-> ĠR Ċ ) Ġ= ĠTarget Action Builder ( notify ) Ċ Ċ class ĠTarget Action Builder < T , ĠR >( val Ġnotify : Ġ( Target Action < T >) Ġ-> ĠR ) Ġ{ ĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< S > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT . () Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( empty Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock () Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a : ĠA ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , Ġre ified ĠA 3 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 , Ġa 3 : ĠA 3 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 >(), ĠtypeOf < A 3 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 , Ġit [ 2 ] Ġas ĠA 3 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , Ġre ified ĠA 3 , Ġre ified ĠA 4 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 , Ġa 3 : ĠA 3 , Ġa 4 : ĠA 4 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 >(), ĠtypeOf < A 3 >(), ĠtypeOf < A 4 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 4 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 , Ġit [ 2 ] Ġas ĠA 3 , Ġit [ 3 ] Ġas ĠA 4 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , Ġre ified ĠA 3 , Ġre ified ĠA 4 , Ġre ified ĠA 5 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 , Ġa 3 : ĠA 3 , Ġa 4 : ĠA 4 , Ġa 5 : ĠA 5 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 >(), ĠtypeOf < A 3 >(), ĠtypeOf < A 4 >(), ĠtypeOf < A 5 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 5 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 , Ġit [ 2 ] Ġas ĠA 3 , Ġit [ 3 ] Ġas ĠA 4 , Ġit [ 4 ] Ġas ĠA 5 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , Ġre ified ĠA 3 , Ġre ified ĠA 4 , Ġre ified ĠA 5 , Ġre ified ĠA 6 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 , Ġa 3 : ĠA 3 , Ġa 4 : ĠA 4 , Ġa 5 : ĠA 5 , Ġa 6 : ĠA 6 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 >(), ĠtypeOf < A 3 >(), ĠtypeOf < A 4 >(), ĠtypeOf < A 5 >(), ĠtypeOf < A 6 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 6 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 , Ġit [ 2 ] Ġas ĠA 3 , Ġit [ 3 ] Ġas ĠA 4 , Ġit [ 4 ] Ġas ĠA 5 , Ġit [ 5 ] Ġas ĠA 6 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġ< re ified ĠA 1 , Ġre ified ĠA 2 , Ġre ified ĠA 3 , Ġre ified ĠA 4 , Ġre ified ĠA 5 , Ġre ified ĠA 6 , Ġre ified ĠA 7 , ĠS > Ġinvoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġblock : ĠT .( a 1 : ĠA 1 , Ġa 2 : ĠA 2 , Ġa 3 : ĠA 3 , Ġa 4 : ĠA 4 , Ġa 5 : ĠA 5 , Ġa 6 : ĠA 6 , Ġa 7 : ĠA 7 ) Ġ-> ĠS ĊĠĠĠ Ġ): ĠPair < R , ĠS ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠS ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( array Of ( type Of < A 1 >(), ĠtypeOf < A 2 >(), ĠtypeOf < A 3 >(), ĠtypeOf < A 4 >(), ĠtypeOf < A 5 >(), ĠtypeOf < A 6 >(), ĠtypeOf < A 7 > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . size Ġ== Ġ 7 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġs Ġ= Ġblock ( it [ 0 ] Ġas ĠA 1 , Ġit [ 1 ] Ġas ĠA 2 , Ġit [ 2 ] Ġas ĠA 3 , Ġit [ 3 ] Ġas ĠA 4 , Ġit [ 4 ] Ġas ĠA 5 , Ġit [ 5 ] Ġas ĠA 6 , Ġit [ 6 ] Ġas ĠA 7 ) Ġ} Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġto Ġs ĊĠĠĠ Ġ} Ċ } Ċ