@ file : Suppress (" DE PREC ATION ", Ġ" NOTH ING _ TO _ INLINE ") Ċ Ċ package Ġio . mock k Ċ Ċ import Ġio . mock k . Internal Platform Dsl . to Str Ċ import Ġio . mock k . Mock K Gateway .* Ċ import Ġkotlin . coroutines . Continuation Ċ import Ġkotlin . reflect . K Class Ċ import Ġio . mock k .* Ċ Ċ /** Ċ Ġ* ĠException Ġthrown Ġby Ġlibrary Ċ Ġ*/ Ċ class ĠMock K Exception ( message : ĠString , Ġex : ĠThrowable ? Ġ= Ġnull ) Ġ: ĠRuntimeException ( message , Ġex ) ĊĊ Ċ /** Ċ Ġ* ĠDSL Ġentry Ġpoints . Ċ Ġ*/ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ object ĠMock KD sl Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġa Ġnew Ġmock Ġfor Ġspecified Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Mock k ( ĊĠĠĠĠĠĠĠ Ġname : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġrelax ed : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġvar arg Ġmore Interfaces : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġrelax Unit Fun : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġblock : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= ĠMock K Gateway . implementation (). mock Factory . mock k ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelax ed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Interfaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelax Unit Fun ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġblock ( mock ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġa Ġnew Ġspy Ġfor Ġspecified Ġclass . ĠInitializes Ġobject Ġvia Ġdefault Ġconstructor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< T Ġ: ĠAny > Ġinternal Spy k ( ĊĠĠĠĠĠĠĠ Ġobj To Copy : ĠT , ĊĠĠĠĠĠĠĠ Ġname : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar arg Ġmore Interfaces : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġblock : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspy Ġ= ĠMock K Gateway . implementation (). mock Factory . spy k ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj To Copy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Interfaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Private Calls ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġblock ( spy ) ĊĠĠĠĠĠĠĠ Ġreturn Ġspy ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġa Ġnew Ġspy Ġfor Ġspecified Ġclass . ĠCop ies Ġfields Ġfrom Ġprovided Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Spy k ( ĊĠĠĠĠĠĠĠ Ġname : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar arg Ġmore Interfaces : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġblock : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspy Ġ= ĠMock K Gateway . implementation (). mock Factory . spy k ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Interfaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Private Calls ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġblock ( spy ) ĊĠĠĠĠĠĠĠ Ġreturn Ġspy ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġnew Ġcapturing Ġslot ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Slot () Ġ= ĠCapt uring Slot < T >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġa Ġblock Ġof Ġstub bing . ĠPart Ġof ĠDSL . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġinternal Every ( stub Block : ĠMock K Matcher Scope . () Ġ-> ĠT ): ĠMock K Stub Scope < T , ĠT > Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). stub ber . every ( stub Block , Ġnull ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġa Ġblock Ġof Ġstub bing Ġfor Ġcor outines . ĠPart Ġof ĠDSL . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġinternal Co Every ( stub Block : Ġsuspend ĠMock K Matcher Scope . () Ġ-> ĠT ): ĠMock K Stub Scope < T , ĠT > Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). stub ber . every ( null , Ġstub Block ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVerifies Ġcalls Ġhappened Ġin Ġthe Ġpast . ĠPart Ġof ĠDSL ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Verify ( ĊĠĠĠĠĠĠĠ Ġordering : ĠOrdering Ġ= ĠOrdering . UN ORDER ED , ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġat Least : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġat Most : ĠInt Ġ= ĠInt . MAX _ VALUE , ĊĠĠĠĠĠĠĠ Ġexactly : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġtimeout : ĠLong Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġverify Block : ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Check Exactly At Most At Least ( exact ly , Ġat Least , Ġat Most , Ġordering ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġif Ġ( exact ly Ġ!= Ġ- 1 ) Ġexactly Ġelse Ġat Least ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġif Ġ( exact ly Ġ!= Ġ- 1 ) Ġexactly Ġelse Ġat Most ĊĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). verifier . verify ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerification Parameters ( ordering , Ġmin , Ġmax , Ġinverse , Ġtimeout ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Block , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVerify Ġfor Ġcor outines ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Co Verify ( ĊĠĠĠĠĠĠĠ Ġordering : ĠOrdering Ġ= ĠOrdering . UN ORDER ED , ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġat Least : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġat Most : ĠInt Ġ= ĠInt . MAX _ VALUE , ĊĠĠĠĠĠĠĠ Ġexactly : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġtimeout : ĠLong Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġverify Block : Ġsuspend ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Check Exactly At Most At Least ( exact ly , Ġat Least , Ġat Most , Ġordering ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġif Ġ( exact ly Ġ!= Ġ- 1 ) Ġexactly Ġelse Ġat Least ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġif Ġ( exact ly Ġ!= Ġ- 1 ) Ġexactly Ġelse Ġat Most ĊĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). verifier . verify ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerification Parameters ( ordering , Ġmin , Ġmax , Ġinverse , Ġtimeout ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Block ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġfun Ġinternal Check Exactly At Most At Least ( exact ly : ĠInt , Ġat Least : ĠInt , Ġat Most : ĠInt , Ġordering : ĠOrdering ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( exact ly Ġ!= Ġ- 1 Ġ&& Ġ( at Least Ġ!= Ġ 1 Ġ|| Ġat Most Ġ!= ĠInt . MAX _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" specify Ġeither Ġat Least / at Most Ġor Ġexactly ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( exact ly Ġ< Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" exact ly Ġshould Ġbe Ġpositive ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( at Least Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" at Least Ġshould Ġbe Ġpositive ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( at Most Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" at Most Ġshould Ġbe Ġpositive ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( at Least Ġ> Ġat Most ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" at Least Ġshould Ġless Ġor Ġequal Ġat Most ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ordering Ġ!= ĠOrdering . UN ORDER ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at Least Ġ!= Ġ 1 Ġ|| Ġat Most Ġ!= ĠInt . MAX _ VALUE Ġ|| Ġexactly Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Exception (" at Least , Ġat Most , Ġexactly Ġis Ġonly Ġallowed Ġin Ġunordered Ġverify Ġblock ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġordered Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Verify Order ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Verify ( Ordering . ORDER ED , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġall Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Verify All ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Verify ( Ordering . ALL , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġsequence Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Verify Sequence ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Verify ( Ordering . SEQUENCE , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġordered Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Co Verify Order ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : Ġsuspend ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Co Verify ( Ordering . ORDER ED , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġall Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Co Verify All ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : Ġsuspend ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Co Verify ( Ordering . ALL , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort cut Ġfor Ġsequence Ġcalls Ġverification ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Co Verify Sequence ( ĊĠĠĠĠĠĠĠ Ġinverse : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġverify Block : Ġsuspend ĠMock K Verification Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Co Verify ( Ordering . SEQUENCE , Ġinverse , Ġverify Block Ġ= Ġverify Block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExclude Ġcalls Ġfrom Ġrecording ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Ġif Ġcurrent Ġrecorded Ġcalls Ġshould Ġbe Ġfiltered Ġout ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Exclude Records ( ĊĠĠĠĠĠĠĠ Ġcurrent : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġexclude Block : ĠMock K Matcher Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). ex cl uder . exclude ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx clusion Parameters ( current ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Block , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExclude Ġcalls Ġfrom Ġrecording Ġfor Ġa Ġsuspend Ġblock ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Ġif Ġcurrent Ġrecorded Ġcalls Ġshould Ġbe Ġfiltered Ġout ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Co Exclude Records ( ĊĠĠĠĠĠĠĠ Ġcurrent : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġexclude Block : Ġsuspend ĠMock K Matcher Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). ex cl uder . exclude ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx clusion Parameters ( current ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Block ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġall Ġrecorded Ġcalls Ġwere Ġverified . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Confirm Verified ( var arg Ġmocks : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( mock Ġin Ġmocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). verification Ack now ledger . ack nowledge Verified ( mock ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġinformation Ġassociated Ġwith Ġmock ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Clear Mocks ( ĊĠĠĠĠĠĠĠ Ġfirst Mock : ĠAny , ĊĠĠĠĠĠĠĠ Ġvar arg Ġmocks : ĠAny , ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). clear er . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( first Mock , Ġ* mocks ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegisters Ġinstance Ġfactory Ġand Ġreturns Ġobject Ġable Ġto Ġdo Ġdere gistration . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Register Instance Factory ( no inline Ġinstance Factory : Ġ() Ġ-> ĠT ): ĠD ere gister able Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Obj Ġ= Ġobject Ġ: ĠMock K Gateway . Instance Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinstantiate ( cls : ĠK Class < *> ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( T :: class Ġ== Ġcls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Factory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). instance Factory Registry . register Factory ( factory Obj ) ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠD ere gister able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdere gister () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). instance Factory Registry . dere gister Factory ( factory Obj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġblock Ġof Ġcode Ġwith Ġregistering Ġand Ġunregister ing Ġinstance Ġfactory . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny , ĠR > Ġinternal With Instance Factory ( no inline Ġinstance Factory : Ġ() Ġ-> ĠT , Ġblock : Ġ() Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinternal Register Instance Factory ( instance Factory ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe cla res Ġstatic Ġmock k . ĠDeprecated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Static Mock k () Ġ= ĠMock K Static Scope ( T :: class ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe cla res Ġstatic Ġmock k . ĠDeprecated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Static Mock k ( var arg Ġk Class : ĠK Class < out ĠAny >) Ġ= ĠMock K Static Scope (* k Class ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe cla res Ġobject Ġmock k . ĠDeprecated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Object Mock k ( objs : ĠArray < out ĠAny >, Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Object Scope (* objs , Ġrecord Private Calls Ġ= Ġrecord Private Calls ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe cla res Ġconstructor Ġmock k . ĠDeprecated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġinternal Constructor Mock k ( ĊĠĠĠĠĠĠĠ Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġlocal To Thread : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Constructor Scope ( T :: class , Ġrecord Private Calls , Ġlocal To Thread ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġa Ġmock Ġfor Ġa Ġclass . ĠDeprecated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< T Ġ: ĠAny > Ġinternal Mock k Class ( ĊĠĠĠĠĠĠĠ Ġtype : ĠK Class < T >, ĊĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġrelax ed : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġvar arg Ġmore Interfaces : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġrelax Unit Fun : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġblock : ĠT . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= ĠMock K Gateway . implementation (). mock Factory . mock k ( type , Ġname , Ġrelax ed , Ġmore Interfaces , Ġrelax Unit Fun ) ĊĠĠĠĠĠĠĠ Ġblock ( mock ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitializes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Init Annotated Mocks ( ĊĠĠĠĠĠĠĠ Ġtargets : ĠList < Any >, ĊĠĠĠĠĠĠĠ Ġoverride Record Private Calls : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġrelax Unit Fun : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġrelax ed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). mock Initializer . init Annotated Mocks ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Record Private Calls , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelax Unit Fun , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelax ed ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠObject Ġmock k ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Mock k Object ( var arg Ġobjects : ĠAny , Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠMock K Gateway . implementation (). object Mock Factory ĊĊĠĠĠĠĠĠĠ Ġobjects . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancellation Ġ= Ġfactory . object Mock k ( it , Ġrecord Private Calls ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Clear Mocks ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . OBJECT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel Put ( it , Ġcancellation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġobject Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Un mock k Object ( var arg Ġobjects : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobjects . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . OBJECT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġobject Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Clear Object Mock k ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġobjects : ĠAny , ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( obj Ġin Ġobjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). object Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStatic Ġmock k ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Mock k Static ( var arg Ġclasses : ĠK Class <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠMock K Gateway . implementation (). static Mock Factory ĊĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancellation Ġ= Ġfactory . static Mock k ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Clear Static Mock k ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel Put ( it , Ġcancellation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġstatic Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Un mock k Static ( var arg Ġclasses : ĠK Class <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġstatic Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Clear Static Mock k ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġclasses : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġclasses ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). static Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġmock k ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Mock k Constructor ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġclasses : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġlocal To Thread : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠMock K Gateway . implementation (). constructor Mock Factory ĊĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancellation Ġ= Ġfactory . constructor Mock k ( it , Ġrecord Private Calls , Ġlocal To Thread ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Clear Constructor Mock k ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put IfNot There ( it , Ġcancellation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġconstructor Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Un mock k Constructor ( var arg Ġclasses : ĠK Class <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). constructor Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock KC ancellation Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub Registry ( Mock KC ancellation Registry . Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġconstructor Ġmocks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Clear Constructor Mock k ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġclasses : ĠK Class <* >, ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġclasses ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). constructor Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn mock k Ġeverything ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġinternal Un mock k All () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock KC ancellation Registry . cancel All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġinternal Clear All Mocks ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġregular Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġobject Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġstatic Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġconstructor Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠMock K Gateway . implementation () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( regular Mocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . clear er . clear All ( options ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( object Mocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . object Mock Factory . clear All ( options ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( static Mocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . static Mock Factory . clear All ( options ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( constructor Mocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . constructor Mock Factory . clear All ( options ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġprovided Ġmock Ġis Ġmock Ġof Ġcertain Ġtype ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinternal Is Mock K Mock ( ĊĠĠĠĠĠĠĠ Ġmock : ĠAny , ĊĠĠĠĠĠĠĠ Ġregular : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġspy : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġobject Mock : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġstatic Mock : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġconstructor Mock : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Checker Ġ= ĠMock K Gateway . implementation (). mock Type Checker ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregular Ġ&& Ġtype Checker . is Regular Mock ( mock ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspy Ġ&& Ġtype Checker . is Spy ( mock ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Mock Ġ&& Ġtype Checker . isObject Mock ( mock ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Mock Ġ&& Ġtype Checker . is Static Mock ( mock ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Mock Ġ&& Ġtype Checker . is Constructor Mock ( mock ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠVerification Ġordering Ċ Ġ*/ Ċ enum Ġclass ĠOrdering Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrder Ġis Ġnot Ġimportant . ĠSome Ġcalls Ġjust Ġshould Ġhappen ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠUN ORDER ED , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrder Ġis Ġnot Ġimportant . ĠAll Ġcalls Ġshould Ġhappen ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠALL , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrder Ġis Ġimportant , Ġbut Ġnot Ġall Ġcalls Ġare Ġchecked ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠORDER ED , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrder Ġis Ġimportant Ġand Ġall Ġcalls Ġshould Ġbe Ġspecified ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠSEQUENCE Ċ } ĊĊ Ċ /** Ċ Ġ* ĠBasic Ġstub / verification Ġscope . ĠPart Ġof ĠDSL . Ċ Ġ* Ċ Ġ* ĠIn side Ġof Ġthe Ġscope Ġyou Ġcan Ġinteract Ġwith Ġmocks . Ċ Ġ* ĠYou Ġcan Ġchain Ġcalls Ġto Ġthe Ġmock , Ġput Ġargument Ġmatch ers Ġinstead Ġof Ġarguments , Ċ Ġ* Ġcapture Ġarguments , Ġcombine Ġmatch ers Ġin Ġand / or / not Ġexpressions . Ċ Ġ* Ċ Ġ* ĠIt 's Ġnot Ġrequired Ġto Ġspecify Ġall Ġarguments Ġas Ġmatch ers , Ċ Ġ* Ġif Ġthe Ġargument Ġvalue Ġis Ġconstant Ġit 's Ġautomatically Ġreplaced Ġwith Ġeq () Ġmatcher . Ċ Ġ* Ġ. Ċ Ġ* ĠHandling Ġarguments Ġthat Ġhave Ġdefaults Ġfetched Ġfrom Ġfunction Ġ( ali ke ĠSystem . currentTimeMillis ()) Ċ Ġ* Ġcan Ġbe Ġan Ġissue , Ġbecause Ġit 's Ġnot Ġa Ġconstant . ĠSuch Ġarguments Ġcan Ġalways Ġbe Ġreplaced Ċ Ġ* Ġwith Ġsome Ġmatcher . Ċ Ġ* Ċ Ġ* ĠProvide d Ġinformation Ġis Ġgather ed Ġand Ġassociated Ġwith Ġmock Ċ Ġ*/ Ċ open Ġclass ĠMock K Matcher Scope ( ĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġval Ġcall Recorder : ĠCall Recorder , ĊĠĠĠ Ġval Ġlambda : ĠCapt uring Slot < Function <* >> Ċ ) Ġ{ ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġmatch ( matcher : ĠMatcher < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcall Recorder . matcher ( matcher , ĠT :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġmatch ( no inline Ġmatcher : Ġ( T ) Ġ-> ĠBoolean ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Function Matcher ( matcher , ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġmatch Nullable ( no inline Ġmatcher : Ġ( T ?) Ġ-> ĠBoolean ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Function With Nullable Arg Matcher ( matcher , ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġeq ( value : ĠT , Ġinverse : ĠBoolean Ġ= Ġfalse ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Eq Matcher ( value , Ġinverse Ġ= Ġinverse )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġne q ( value : ĠT ): ĠT Ġ= Ġeq ( value , Ġtrue ) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġref Eq ( value : ĠT , Ġinverse : ĠBoolean Ġ= Ġfalse ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Eq Matcher ( value , Ġref Ġ= Ġtrue , Ġinverse Ġ= Ġinverse )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġn ref Eq ( value : ĠT ) Ġ= Ġref Eq ( value , Ġtrue ) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġany (): ĠT Ġ= Ġmatch ( Constant Matcher ( true )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġcapture ( lst : ĠMutable List < T >): ĠT Ġ= Ġmatch ( Capture Matcher ( lst , ĠT :: class )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġcapture ( lst : ĠCapt uring Slot < T >): ĠT Ġ= Ġmatch ( Capt uring Slot Matcher ( lst , ĠT :: class )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġcapture Nullable ( lst : ĠMutable List < T ?> ): ĠT ? Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Capture Nullable Matcher ( lst , ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠComparable < T >> Ġcmp Eq ( value : ĠT ): ĠT Ġ= Ġmatch ( Comp aring Matcher ( value , Ġ 0 , ĠT :: class )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠComparable < T >> Ġmore ( value : ĠT , Ġand Equals : ĠBoolean Ġ= Ġfalse ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Comp aring Matcher ( value , Ġif Ġ( and Equals ) Ġ 2 Ġelse Ġ 1 , ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠComparable < T >> Ġless ( value : ĠT , Ġand Equals : ĠBoolean Ġ= Ġfalse ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Comp aring Matcher ( value , Ġif Ġ( and Equals ) Ġ- 2 Ġelse Ġ- 1 , ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠComparable < T >> Ġrange ( ĊĠĠĠĠĠĠĠ Ġfrom : ĠT , ĊĠĠĠĠĠĠĠ Ġto : ĠT , ĊĠĠĠĠĠĠĠ Ġfrom Inclusive : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġto Inclusive : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ): ĠT Ġ= Ġand ( more ( from , Ġfrom Inclusive ), Ġless ( to , Ġto Inclusive )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġand ( left : ĠT , Ġright : ĠT ): ĠT Ġ= Ġmatch ( And Or Matcher < T >( true , Ġleft , Ġright )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġor ( left : ĠT , Ġright : ĠT ): ĠT Ġ= Ġmatch ( And Or Matcher < T >( false , Ġleft , Ġright )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġnot ( value : ĠT ): ĠT Ġ= Ġmatch ( Not Matcher < T >( value )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġis Null ( inverse : ĠBoolean Ġ= Ġfalse ): ĠT Ġ= Ġmatch ( Null Check Matcher < T >( inverse )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny , ĠR Ġ: ĠT > Ġof Type ( cls : ĠK Class < R >): ĠT Ġ= Ġmatch ( OfType Matcher < T >( cls )) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġof Type (): ĠT Ġ= Ġmatch ( OfType Matcher < T >( T :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġany Var arg () Ġ= Ġvar arg All Nullable < T > Ġ{ Ġtrue Ġ} ĊĠĠĠ Ġinline Ġfun Ġany Boolean Var arg () Ġ= Ġany Var arg < Boolean >(). to Boolean Array () ĊĠĠĠ Ġinline Ġfun Ġany Byte Var arg () Ġ= Ġany Var arg < Byte >(). toByteArray () ĊĠĠĠ Ġinline Ġfun Ġany Char Var arg () Ġ= Ġany Var arg < Char >(). toCharArray () ĊĠĠĠ Ġinline Ġfun Ġany Short Var arg () Ġ= Ġany Var arg < Short >(). to Short Array () ĊĠĠĠ Ġinline Ġfun Ġany Int Var arg () Ġ= Ġany Var arg < Int >(). to IntArray () ĊĠĠĠ Ġinline Ġfun Ġany Long Var arg () Ġ= Ġany Var arg < Long >(). to Long Array () ĊĠĠĠ Ġinline Ġfun Ġany Float Var arg () Ġ= Ġany Var arg < Float >(). toFloat Array () ĊĠĠĠ Ġinline Ġfun Ġany Double Var arg () Ġ= Ġany Var arg < Double >(). toDouble Array () ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġvar arg All ( no inline Ġmatcher : ĠMock K Var arg Scope .( T ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All Nullable < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmatcher ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġvar arg All Nullable ( no inline Ġmatcher : ĠMock K Var arg Scope .( T ?) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ ĠarrayOf ( call Recorder . matcher ( Var arg Matcher ( true , Ġmatcher ), ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Boolean ( no inline Ġmatcher : ĠMock K Var arg Scope .( Boolean ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). to Boolean Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Byte ( no inline Ġmatcher : ĠMock K Var arg Scope .( Byte ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). toByteArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Char ( no inline Ġmatcher : ĠMock K Var arg Scope .( Char ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). toCharArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Short ( no inline Ġmatcher : ĠMock K Var arg Scope .( Short ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). to Short Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Int ( no inline Ġmatcher : ĠMock K Var arg Scope .( Int ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). to IntArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Long ( no inline Ġmatcher : ĠMock K Var arg Scope .( Long ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). to Long Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Float ( no inline Ġmatcher : ĠMock K Var arg Scope .( Float ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). toFloat Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg All Double ( no inline Ġmatcher : ĠMock K Var arg Scope .( Double ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg All ( matcher ). toDouble Array () ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġvar arg Any ( no inline Ġmatcher : ĠMock K Var arg Scope .( T ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any Nullable < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmatcher ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġvar arg Any Nullable ( no inline Ġmatcher : ĠMock K Var arg Scope .( T ?) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ ĠarrayOf ( call Recorder . matcher ( Var arg Matcher ( false , Ġmatcher ), ĠT :: class )) ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Boolean ( no inline Ġmatcher : ĠMock K Var arg Scope .( Boolean ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). to Boolean Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Byte ( no inline Ġmatcher : ĠMock K Var arg Scope .( Byte ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). toByteArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Char ( no inline Ġmatcher : ĠMock K Var arg Scope .( Char ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). toCharArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Short ( no inline Ġmatcher : ĠMock K Var arg Scope .( Short ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). to Short Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Int ( no inline Ġmatcher : ĠMock K Var arg Scope .( Int ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). to IntArray () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Long ( no inline Ġmatcher : ĠMock K Var arg Scope .( Long ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). to Long Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Float ( no inline Ġmatcher : ĠMock K Var arg Scope .( Float ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). toFloat Array () ĊĊĠĠĠ Ġinline Ġfun Ġvar arg Any Double ( no inline Ġmatcher : ĠMock K Var arg Scope .( Double ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġvar arg Any ( matcher ). toDouble Array () ĊĊĠĠĠ Ġclass ĠMock K Var arg Scope ( val Ġposition : ĠInt , Ġval Ġn Args : ĠInt ) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ() Ġ-> ĠR , ĠR > Ġinvoke () Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit () Ġ}) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 ) Ġ-> ĠR , ĠR , ĠA 1 > Ġinvoke ( arg 1 : ĠA 1 ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 ) Ġ}) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 > Ġinvoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 > Ġinvoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 , Ġarg 3 : ĠA 3 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 > Ġinvoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 , Ġarg 3 : ĠA 3 , Ġarg 4 : ĠA 4 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 , Ġarg 1 3 ) Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 : ĠA 2 1 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 > Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 : ĠA 2 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 2 : ĠA 2 2 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ() Ġ-> ĠR , ĠR > Ġco Invoke () Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit () Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 ) Ġ-> ĠR , ĠR , ĠA 1 > Ġco Invoke ( arg 1 : ĠA 1 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 > Ġco Invoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 > Ġco Invoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 , Ġarg 3 : ĠA 3 ) Ġ= ĊĠĠĠĠĠĠĠ Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġit ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 ) Ġ} Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 : ĠA 2 1 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 > Ġco Invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 : ĠA 2 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 2 : ĠA 2 2 ĊĠĠĠ Ġ) Ġ= Ġmatch ( Invoke Matcher < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġall Any (): ĠT Ġ= Ġmatch ( All Any Matcher ()) ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġarray ( var arg Ġmatch ers : ĠMatcher < Any >): ĠT Ġ= Ġmatch ( Array Matcher ( matchers . toList ())) ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġfun Ġ< R , ĠT Ġ: ĠAny > ĠR . hint ( cls : ĠK Class < T >, Ġn : ĠInt Ġ= Ġ 1 ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Recorder . hint Next ReturnType ( cls , Ġn ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCapt ures Ġlambda Ġfunction . ĠCapt ured Ġlambda <( A 1 , ĠA 2 , Ġ...) Ġ-> ĠR >(). invoke (...) Ġcan Ġbe Ġused Ġin Ġanswer Ġscope . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠFunction <* >> Ġcapture Lambda (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠCapt uring Slot Matcher ( lambda Ġas ĠCapt uring Slot < T >, ĠT :: class ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcall Recorder . matcher ( matcher , ĠT :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCapt ures Ġcoroutine . ĠCapt ured Ġcoroutine < suspend Ġ( A 1 , ĠA 2 , Ġ...) Ġ-> ĠR >(). co Invoke (...) Ġcan Ġbe Ġused Ġin Ġanswer Ġscope . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġcapture Coroutine (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠCapt uring Slot Matcher ( lambda Ġas ĠCapt uring Slot < T >, ĠT :: class ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcall Recorder . matcher ( matcher , ĠT :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġco Match ( no inline Ġmatcher : Ġsuspend Ġ( T ) Ġ-> ĠBoolean ): ĠT Ġ= Ġmatch Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġco Match Nullable ( no inline Ġmatcher : Ġsuspend Ġ( T ?) Ġ-> ĠBoolean ): ĠT Ġ= Ġmatch Nullable Ġ{ ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠAny . get ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠDynamic Call ( this , Ġname , Ġ{ Ġany () Ġ}) ĊĊĠĠĠ Ġin fix Ġfun ĠAny . invoke ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠDynamic Call Long ( this , Ġname , Ġ{ Ġany () Ġ}) ĊĊĠĠĠ Ġin fix Ġfun ĠAny . invoke No Args ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġinvoke ( name ). with Arguments ( listOf ()) ĊĊĠĠĠ Ġin fix Ġfun ĠAny . getProperty ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠInternal Platform Dsl . dynamic Get ( this , Ġname ) ĊĊĠĠĠ Ġin fix Ġfun ĠAny . setProperty ( name : ĠString ) Ġ= ĠDynamic SetProperty ( this , Ġname ) ĊĊĠĠĠ Ġclass ĠDynamic SetProperty ( val Ġself : ĠAny , Ġval Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin fix Ġfun Ġvalue ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Platform Dsl . dynamic Set ( self , Ġname , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDynamic Call ( ĊĠĠĠĠĠĠĠ Ġval Ġself : ĠAny , ĊĠĠĠĠĠĠĠ Ġval ĠmethodName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġany Continuation Gen : Ġ() Ġ-> ĠContinu ation < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( var arg Ġargs : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Platform Dsl . dynamic Call ( self , ĠmethodName , Ġargs , Ġany Continuation Gen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDynamic Call Long ( ĊĠĠĠĠĠĠĠ Ġval Ġself : ĠAny , ĊĠĠĠĠĠĠĠ Ġval ĠmethodName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġany Continuation Gen : Ġ() Ġ-> ĠContinu ation < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin fix Ġfun Ġwith Arguments ( args : ĠList < Any ?> ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Platform Dsl . dynamic Call ( self , ĠmethodName , Ġargs . to Typed Array (), Ġany Continuation Gen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġany Construct ed (): ĠT Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). constructor Mock Factory . mock Placeholder ( T :: class ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġconstructed With ( var arg Ġmatch ers : ĠMatcher < *> ): ĠT Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). constructor Mock Factory . mock Placeholder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġmatch ers Ġas ĠArray < Matcher <* >> ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠAdditional Ġoperations Ġfor Ġverification Ġscope . Ċ Ġ*/ Ċ class ĠMock K Verification Scope ( ĊĠĠĠ Ġcall Recorder : ĠCall Recorder , ĊĠĠĠ Ġlambda : ĠCapt uring Slot < Function <* >> Ċ ) Ġ: ĠMock K Matcher Scope ( call Recorder , Ġlambda ) Ġ{ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġwith Arg ( no inline Ġcapture Block : ĠMock K Assert Scope .( T ) Ġ-> ĠUnit ): ĠT Ġ= Ġmatch Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Assert Scope ( it ). capture Block ( it ) ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġwith Nullable Arg ( no inline Ġcapture Block : ĠMock K Assert Scope .( T ?) Ġ-> ĠUnit ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmatch Nullable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Assert Scope ( it ). capture Block ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġco With Arg ( no inline Ġcapture Block : Ġsuspend ĠMock K Assert Scope .( T ) Ġ-> ĠUnit ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġwith Arg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Block ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġco With Nullable Arg ( no inline Ġcapture Block : Ġsuspend ĠMock K Assert Scope .( T ?) Ġ-> ĠUnit ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġwith Nullable Arg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture Block ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠAny . was Not ( called : ĠCalled ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( this ) Ġwas Not Ġcalled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġin fix Ġfun ĠList < Any >. was Not ( called : ĠCalled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Recorder . was Not Called ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠObject Ġto Ġrepresent Ġphrase Ġ" was Not ĠCalled " Ċ Ġ*/ Ċ object ĠCalled Ċ type alias Ġcalled Ġ= ĠCalled Ċ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠScope Ġfor Ġassertions Ġon Ġarguments Ġduring Ġver ifications . Ċ Ġ*/ Ċ class ĠMock K Assert Scope ( val Ġactual : ĠAny ?) Ċ Ċ fun ĠMock K Assert Scope . check Equals ( expected : ĠAny ?) Ġ{ ĊĠĠĠ Ġif Ġ(! Internal Platform Dsl . deep Equals ( expected , Ġactual )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError ( format Assert Message ( actual , Ġexpected )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠMock K Assert Scope . check Equals ( msg : ĠString , Ġexpected : ĠAny ?) Ġ{ ĊĠĠĠ Ġif Ġ(! Internal Platform Dsl . deep Equals ( expected , Ġactual )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError ( format Assert Message ( actual , Ġexpected , Ġmsg )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġformat Assert Message ( actual : ĠAny ?, Ġexpected : ĠAny ?, Ġmessage : ĠString ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠ Ġval Ġmsg Formatted Ġ= Ġif Ġ( message Ġ!= Ġnull ) Ġ"$ message Ġ" Ġelse Ġ"" ĊĊĠĠĠ Ġreturn Ġ"${ msg Formatted } expected Ġ[$ expected ] Ġbut Ġfound Ġ[$ actual ]" Ċ } ĊĊ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠObject Ġto Ġrepresent Ġphrase Ġ" just ĠRuns " Ċ Ġ*/ Ċ object ĠRuns Ċ type alias Ġruns Ġ= ĠRuns Ċ Ċ /** Ċ Ġ* ĠStub Ġscope . ĠPart Ġof ĠDSL Ċ Ġ* Ċ Ġ* ĠAllows Ġto Ġspecify Ġfunction Ġresult Ċ Ġ*/ Ċ class ĠMock K Stub Scope < T , ĠB >( ĊĠĠĠ Ġprivate Ġval Ġanswer Opp ort unity : ĠAnswer Opp ort unity < T >, ĊĠĠĠ Ġprivate Ġval Ġcall Recorder : ĠCall Recorder , ĊĠĠĠ Ġprivate Ġval Ġlambda : ĠCapt uring Slot < Function <* >> Ċ ) Ġ{ ĊĠĠĠ Ġin fix Ġfun Ġanswers ( answer : ĠAnswer < T >): ĠMock K Additional Answer Scope < T , ĠB > Ġ{ ĊĠĠĠĠĠĠĠ Ġanswer Opp ort unity . provide Answer ( answer ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMock K Additional Answer Scope ( answer Opp ort unity , Ġcall Recorder , Ġlambda ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġreturns ( returnValue : ĠT ) Ġ= Ġanswers ( Constant Answer ( returnValue )) ĊĊĠĠĠ Ġin fix Ġfun Ġreturns Many ( values : ĠList < T >) Ġ= Ġanswers ( Many Answers Answer ( values . all Const ())) ĊĊĠĠĠ Ġfun Ġreturns Many ( var arg Ġvalues : ĠT ) Ġ= Ġreturns Many ( values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnth Ġargument Ġof Ġwhat Ġhas Ġbeen Ġcalled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġin fix Ġfun Ġreturns Argument ( n : ĠInt ): ĠMock K Additional Answer Scope < T , ĠB > Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ġanswers Ġ{ Ġinvocation . args [ n ] Ġas ĠT Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġthrows ( ex : ĠThrowable ) Ġ= Ġanswers ( Throw ing Answer ( ex )) ĊĊĠĠĠ Ġin fix Ġfun Ġanswers ( answer : ĠMock K Answer Scope < T , ĠB >. ( Call ) Ġ-> ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġanswers ( Function Answer Ġ{ ĠMock K Answer Scope < T , ĠB >( lambda , Ġit ). answer ( it ) Ġ}) ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġin fix Ġfun Ġ< K Ġ: ĠAny > Ġproperty Type ( cls : ĠK Class < K >) Ġ= ĠMock K Stub Scope < T , ĠK >( answer Opp ort unity , Ġcall Recorder , Ġlambda ) ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġin fix Ġfun Ġ< K Ġ: ĠAny > Ġnullable PropertyType ( cls : ĠK Class < K >) Ġ= ĊĠĠĠĠĠĠĠ ĠMock K Stub Scope < T , ĠK ? >( answer Opp ort unity , Ġcall Recorder , Ġlambda ) ĊĊĠĠĠ Ġin fix Ġfun Ġco Answers ( answer : Ġsuspend ĠMock K Answer Scope < T , ĠB >. ( Call ) Ġ-> ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġanswers ( Co Function Answer Ġ{ ĠMock K Answer Scope < T , ĠB >( lambda , Ġit ). answer ( it ) Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠAnswer Ġplaceholder Ġfor ĠUnit Ġreturning Ġfunctions . Ċ Ġ*/ Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ infix Ġfun ĠMock K Stub Scope < Unit , ĠUnit >. just ( runs : ĠRuns ) Ġ= Ġanswers ( Constant Answer ( Unit )) Ċ Ċ /** Ċ Ġ* ĠScope Ġto Ġchain Ġadditional Ġanswers Ġto Ġreply . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ class ĠMock K Additional Answer Scope < T , ĠB >( ĊĠĠĠ Ġprivate Ġval Ġanswer Opp ort unity : ĠAnswer Opp ort unity < T >, ĊĠĠĠ Ġprivate Ġval Ġcall Recorder : ĠCall Recorder , ĊĠĠĠ Ġprivate Ġval Ġlambda : ĠCapt uring Slot < Function <* >> Ċ ) Ġ{ ĊĠĠĠ Ġin fix Ġfun Ġand Then Answer ( answer : ĠAnswer < T >): ĠMock K Additional Answer Scope < T , ĠB > Ġ{ ĊĠĠĠĠĠĠĠ Ġanswer Opp ort unity . provide Answer ( answer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġand Then Answer ( answer : ĠMock K Answer Scope < T , ĠB >. ( Call ) Ġ-> ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġand Then Answer ( Function Answer Ġ{ ĠMock K Answer Scope < T , ĠB >( lambda , Ġit ). answer ( it ) Ġ}) ĊĊĠĠĠ Ġin fix Ġfun Ġand Then ( returnValue : ĠT ) Ġ= Ġand Then Answer ( Constant Answer ( returnValue )) ĊĊĠĠĠ Ġin fix Ġfun Ġand Then Many ( values : ĠList < T >) Ġ= Ġand Then Answer ( Many Answers Answer ( values . all Const ())) ĊĊĠĠĠ Ġfun Ġand Then Many ( var arg Ġvalues : ĠT ) Ġ= Ġand Then Many ( values . toList ()) ĊĊĠĠĠ Ġin fix Ġfun Ġand Then Throws ( ex : ĠThrowable ) Ġ= Ġand Then Answer ( Throw ing Answer ( ex )) ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġand Then Answer Ġinstead Ġof Ġand Then .") ĊĠĠĠ Ġin fix Ġfun Ġand Then ( answer : ĠMock K Answer Scope < T , ĠB >. ( Call ) Ġ-> ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġand Then Answer ( Function Answer Ġ{ ĠMock K Answer Scope < T , ĠB >( lambda , Ġit ). answer ( it ) Ġ}) ĊĊĠĠĠ Ġin fix Ġfun Ġco And Then ( answer : Ġsuspend ĠMock K Answer Scope < T , ĠB >. ( Call ) Ġ-> ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġand Then Answer ( Co Function Answer Ġ{ ĠMock K Answer Scope < T , ĠB >( lambda , Ġit ). answer ( it ) Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠPart Ġof ĠDSL . ĠAnswer Ġplaceholder Ġfor ĠUnit Ġreturning Ġfunctions . Ċ Ġ*/ Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ infix Ġfun ĠMock K Additional Answer Scope < Unit , ĠUnit >. and Then Just ( runs : ĠRuns ) Ġ= Ġand Then Answer ( Constant Answer ( Unit )) ĊĊ Ċ internal Ġfun Ġ< T > ĠList < T >. all Const () Ġ= Ġthis . map Ġ{ ĠConstant Answer ( it ) Ġ} Ċ Ċ /** Ċ Ġ* ĠScope Ġfor Ġanswer ing Ġfunctions . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ class ĠMock K Answer Scope < T , ĠB >( ĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġval Ġlambda : ĠCapt uring Slot < Function <* >>, ĊĠĠĠ Ġval Ġcall : ĠCall Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġinvocation Ġ= Ġcall . invocation ĊĠĠĠ Ġval Ġmatcher Ġ= Ġcall . matcher ĊĊĠĠĠ Ġval Ġself ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinvocation . self ĊĊĠĠĠ Ġval Ġmethod ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinvocation . method ĊĊĠĠĠ Ġval Ġargs ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinvocation . args ĊĊĠĠĠ Ġval Ġn Args ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinvocation . args . size ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġfirst Arg () Ġ= Ġinvocation . args [ 0 ] Ġas ĠT ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġsecond Arg () Ġ= Ġinvocation . args [ 1 ] Ġas ĠT ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġthird Arg () Ġ= Ġinvocation . args [ 2 ] Ġas ĠT ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġlast Arg () Ġ= Ġinvocation . args . last () Ġas ĠT ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġarg ( n : ĠInt ) Ġ= Ġinvocation . args [ n ] Ġas ĠT ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġfun Ġ< T > ĠMutable List < T >. captured () Ġ= Ġlast () ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠFunction <* >> Ġlambda () Ġ= Ġlambda Ġas ĠCapt uring Slot < T > ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġcoroutine () Ġ= Ġlambda Ġas ĠCapt uring Slot < T > ĊĊĠĠĠ Ġval Ġnothing Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġcall Original (): ĠT Ġ= Ġcall . invocation . original Call . invoke () Ġas ĠT ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġval Ġvalue : ĠB ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġvalue Any Ġas ĠB ĊĊĠĠĠ Ġval Ġvalue Any : ĠAny ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfirst Arg () ĊĊĠĠĠ Ġprivate Ġval Ġbacking FieldValue : ĠBack ing FieldValue ? Ġby Ġlazy Ġ{ Ġcall . field Value Provider () Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġvar Ġfield Value : ĠB ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Value Any Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfield Value Any Ġas ĠB ĊĊĠĠĠ Ġvar Ġfield Value Any : ĠAny ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfv Ġ= Ġbacking FieldValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠMock K Exception (" no Ġbacking Ġfield Ġfound Ġfor Ġ'${ call . invocation . method . name }' ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfv . setter ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfv Ġ= Ġbacking FieldValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠMock K Exception (" no Ġbacking Ġfield Ġfound Ġfor Ġ'${ call . invocation . method . name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfv . getter () ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCancel able Ġmock ing Ġscope Ċ Ġ*/ Ċ abstract Ġclass ĠMock K Un mock K Scope Ġ{ ĊĠĠĠ Ġfun Ġmock () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcancellation Ġ= Ġdo Mock () ĊĠĠĠĠĠĠĠ ĠMock KC ancellation Registry . push Cancellation ( c ancellation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun mock () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcancellation Ġ= ĠMock KC ancellation Registry . pop Cancellation () Ġ?: Ġthrow ĠMock K Exception (" Not Ġmocked ") ĊĠĠĠĠĠĠĠ Ġcancellation . invoke () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġdo Mock (): Ġ() Ġ-> ĠUnit ĊĊĠĠĠ Ġabstract Ġfun Ġclear ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( scope : ĠMock K Un mock K Scope ): ĠMock K Un mock K Scope Ġ= ĠMock K Un mock K Composite Scope ( this , Ġscope ) Ċ } Ċ Ċ type alias ĠMock KC ancellation Ġ= Ġ() Ġ-> ĠUnit Ċ Ċ object ĠMock KC ancellation Registry Ġ{ ĊĠĠĠ Ġenum Ġclass ĠType Ġ{ ĠOBJECT , ĠSTATIC , ĠCON STRUCTOR Ġ} ĊĠĠĠ Ġclass ĠRegistry Per Type Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmap Tl Ġ= ĠInternal Platform Dsl . thread Local Ġ{ Ġmutable Map Of < Any , ĠMock KC ancellation >() Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcancel Put ( key : ĠAny , Ġnew Cancellation : ĠMock KC ancellation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Tl . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . remove ( key )?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ key ] Ġ= Ġnew Cancellation ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġput IfNot There ( key : ĠAny , Ġnew Cancellation : ĠMock KC ancellation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Tl . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! map . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ key ] Ġ= Ġnew Cancellation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcancel All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Tl . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . values . forEach Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcancel ( key : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Tl . value . remove ( key )?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstack Ġ= ĠInternal Platform Dsl . thread Local Ġ{ Ġmutable ListOf < Mock KC ancellation >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġper Type Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ ĠType . OBJECT Ġto ĠRegistry Per Type (), ĊĠĠĠĠĠĠĠ ĠType . STATIC Ġto ĠRegistry Per Type (), ĊĠĠĠĠĠĠĠ ĠType . CON STRUCTOR Ġto ĠRegistry Per Type () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġsub Registry ( type : ĠType ) Ġ= Ġper Type [ type ] !! ĊĊĠĠĠ Ġfun Ġpush Cancellation ( c ancellation : ĠMock KC ancellation ) Ġ= Ġstack . value . add ( c ancellation ) ĊĠĠĠ Ġfun Ġpop Cancellation (): Ġ( Mock KC ancellation )? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġstack . value ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( list . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove At ( list . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel All () Ġ{ ĊĠĠĠĠĠĠĠ Ġstack . value . apply Ġ{ ĠforEach Ġ{ Ġit () Ġ} Ġ}. clear () ĊĠĠĠĠĠĠĠ Ġper Type . values . forEach Ġ{ Ġit . cancel All () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠComposite Ġof Ġtwo Ġscopes . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ class ĠMock K Un mock K Composite Scope ( ĊĠĠĠ Ġval Ġfirst : ĠMock K Un mock K Scope , ĊĠĠĠ Ġval Ġsecond : ĠMock K Un mock K Scope Ċ ) Ġ: ĠMock K Un mock K Scope () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Mock (): ĠMock KC ancellation Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst . mock () ĊĠĠĠĠĠĠĠ Ġsecond . mock () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . un mock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond . un mock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsecond . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠScope Ġfor Ġstatic Ġmock ks . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ class ĠMock K Static Scope ( var arg Ġval Ġstatic Types : ĠK Class <* >) Ġ: ĠMock K Un mock K Scope () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Mock (): ĠMock KC ancellation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠMock K Gateway . implementation (). static Mock Factory ĊĊĠĠĠĠĠĠĠ Ġval Ġcancell ations Ġ= Ġstatic Types . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . static Mock k ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġcancell ations . forEach Ġ{ Ġit () Ġ} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġstatic Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). static Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġand () Ġ= ĠMock K Static Scope ( T :: class , Ġ* static Types ) Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠScope Ġfor Ġobject Ġmock ks . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ class ĠMock K Object Scope ( var arg Ġval Ġobjects : ĠAny , Ġval Ġrecord Private Calls : ĠBoolean Ġ= Ġfalse ) Ġ: ĠMock K Un mock K Scope () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdo Mock (): ĠMock KC ancellation Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠMock K Gateway . implementation (). object Mock Factory ĊĊĠĠĠĠĠĠĠ Ġval Ġcancell ations Ġ= Ġobjects . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . object Mock k ( it , Ġrecord Private Calls ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġcancell ations . forEach Ġ{ Ġit () Ġ} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( obj Ġin Ġobjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). object Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġinline Ġfun Ġand ( obj : ĠAny ) Ġ= ĠMock K Object Scope ( obj , Ġ* objects ) Ċ } Ċ Ċ /** Ċ Ġ* ĠScope Ġfor Ġconstructor Ġcalls . ĠPart Ġof ĠDSL . Ċ Ġ*/ Ċ class ĠMock K Constructor Scope < T Ġ: ĠAny >( ĊĠĠĠ Ġval Ġtype : ĠK Class < T >, ĊĠĠĠ Ġval Ġrecord Private Calls : ĠBoolean , ĊĠĠĠ Ġval Ġlocal To Thread : ĠBoolean Ċ ) Ġ: ĠMock K Un mock K Scope () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Mock (): ĠMock KC ancellation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMock K Gateway . implementation (). constructor Mock Factory . constructor Mock k ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , Ġrecord Private Calls , Ġlocal To Thread ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( ĊĠĠĠĠĠĠĠ Ġanswers : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġrecorded Calls : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġchild Mocks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġverification Marks : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġex clusion Rules : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Gateway . implementation (). constructor Mock Factory . clear ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock K Gateway . Clear Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Calls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Mocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverification Marks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex clusion Rules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠWrap s Ġblock Ġof Ġcode Ġfor Ġsafe Ġresource Ġallocation Ġand Ġdeal location . ĠPart Ġof ĠDSL Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠMock K Un mock K Scope . use ( block : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠ Ġmock () ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġun mock () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSlot Ġallows Ġto Ġcapture Ġone Ġvalue . Ċ Ġ* Ċ Ġ* ĠIf Ġthis Ġvalues Ġis Ġlambda Ġthen Ġit 's Ġpossible Ġto Ġinvoke Ġit . Ċ Ġ*/ Ċ class ĠCapt uring Slot < T Ġ: ĠAny >() Ġ{ ĊĠĠĠ Ġvar Ġis Capt ured Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġis Null Ġ= Ġfalse ĊĊĠĠĠ Ġlateinit Ġvar Ġcaptured : ĠT ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Capt ured Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Null Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" slot (${ if Ġ( is Capt ured ) Ġ" captured =${ if Ġ( isNull ) Ġ" null " Ġelse Ġcaptured . to Str () }" Ġelse Ġ"" })" Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ() Ġ-> ĠR , ĠR > ĠCapt uring Slot < T >. invoke () Ġ= Ġcaptured . invoke () Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 ) Ġ-> ĠR , ĠR , ĠA 1 > ĠCapt uring Slot < T >. invoke ( arg 1 : ĠA 1 ) Ġ= Ġcaptured . invoke ( arg 1 ) Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 > ĠCapt uring Slot < T >. invoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 ) Ġ= ĊĠĠĠ Ġcaptured . invoke ( arg 1 , Ġarg 2 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 > ĠCapt uring Slot < T >. invoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 , Ġarg 3 : ĠA 3 ) Ġ= ĊĠĠĠ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 , Ġarg 1 3 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 , Ġarg 1 3 , Ġarg 1 4 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 Ċ ) Ġ= Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 , Ġarg 1 3 , Ġarg 1 4 , Ġarg 1 5 ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 , ĊĠĠĠ Ġarg 1 8 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 , ĊĠĠĠ Ġarg 1 8 , ĊĠĠĠ Ġarg 1 9 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 , ĊĠĠĠ Ġarg 1 8 , ĊĠĠĠ Ġarg 1 9 , ĊĠĠĠ Ġarg 2 0 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠ Ġarg 2 1 : ĠA 2 1 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 , ĊĠĠĠ Ġarg 1 8 , ĊĠĠĠ Ġarg 1 9 , ĊĠĠĠ Ġarg 2 0 , ĊĠĠĠ Ġarg 2 1 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 > ĠCapt uring Slot < T >. invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠ Ġarg 2 1 : ĠA 2 1 , ĊĠĠĠ Ġarg 2 2 : ĠA 2 2 Ċ ) Ġ= Ġcaptured . invoke ( ĊĠĠĠ Ġarg 1 , ĊĠĠĠ Ġarg 2 , ĊĠĠĠ Ġarg 3 , ĊĠĠĠ Ġarg 4 , ĊĠĠĠ Ġarg 5 , ĊĠĠĠ Ġarg 6 , ĊĠĠĠ Ġarg 7 , ĊĠĠĠ Ġarg 8 , ĊĠĠĠ Ġarg 9 , ĊĠĠĠ Ġarg 1 0 , ĊĠĠĠ Ġarg 1 1 , ĊĠĠĠ Ġarg 1 2 , ĊĠĠĠ Ġarg 1 3 , ĊĠĠĠ Ġarg 1 4 , ĊĠĠĠ Ġarg 1 5 , ĊĠĠĠ Ġarg 1 6 , ĊĠĠĠ Ġarg 1 7 , ĊĠĠĠ Ġarg 1 8 , ĊĠĠĠ Ġarg 1 9 , ĊĠĠĠ Ġarg 2 0 , ĊĠĠĠ Ġarg 2 1 , ĊĠĠĠ Ġarg 2 2 Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ() Ġ-> ĠR , ĠR > ĠCapt uring Slot < T >. co Invoke () Ġ= ĊĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke () Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 ) Ġ-> ĠR , ĠR , ĠA 1 > ĠCapt uring Slot < T >. co Invoke ( arg 1 : ĠA 1 ) Ġ= ĊĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 > ĠCapt uring Slot < T >. co Invoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 ) Ġ= ĊĠĠĠ ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ Ġcaptured . invoke ( arg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 ) Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠ Ġarg 2 1 : ĠA 2 1 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: Ġsuspend Ġ( A 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 ) Ġ-> ĠR , ĠR , ĠA 1 , ĠA 2 , ĠA 3 , ĠA 4 , ĠA 5 , ĠA 6 , ĠA 7 , ĠA 8 , ĠA 9 , ĠA 1 0 , ĠA 1 1 , ĠA 1 2 , ĠA 1 3 , ĠA 1 4 , ĠA 1 5 , ĠA 1 6 , ĠA 1 7 , ĠA 1 8 , ĠA 1 9 , ĠA 2 0 , ĠA 2 1 , ĠA 2 2 > ĠCapt uring Slot < T >. co Invoke ( ĊĠĠĠ Ġarg 1 : ĠA 1 , ĊĠĠĠ Ġarg 2 : ĠA 2 , ĊĠĠĠ Ġarg 3 : ĠA 3 , ĊĠĠĠ Ġarg 4 : ĠA 4 , ĊĠĠĠ Ġarg 5 : ĠA 5 , ĊĠĠĠ Ġarg 6 : ĠA 6 , ĊĠĠĠ Ġarg 7 : ĠA 7 , ĊĠĠĠ Ġarg 8 : ĠA 8 , ĊĠĠĠ Ġarg 9 : ĠA 9 , ĊĠĠĠ Ġarg 1 0 : ĠA 1 0 , ĊĠĠĠ Ġarg 1 1 : ĠA 1 1 , ĊĠĠĠ Ġarg 1 2 : ĠA 1 2 , ĊĠĠĠ Ġarg 1 3 : ĠA 1 3 , ĊĠĠĠ Ġarg 1 4 : ĠA 1 4 , ĊĠĠĠ Ġarg 1 5 : ĠA 1 5 , ĊĠĠĠ Ġarg 1 6 : ĠA 1 6 , ĊĠĠĠ Ġarg 1 7 : ĠA 1 7 , ĊĠĠĠ Ġarg 1 8 : ĠA 1 8 , ĊĠĠĠ Ġarg 1 9 : ĠA 1 9 , ĊĠĠĠ Ġarg 2 0 : ĠA 2 0 , ĊĠĠĠ Ġarg 2 1 : ĠA 2 1 , ĊĠĠĠ Ġarg 2 2 : ĠA 2 2 Ċ ) Ġ= ĠInternal Platform Dsl . run Coroutine Ġ{ ĊĠĠĠ Ġcaptured . invoke ( ĊĠĠĠĠĠĠĠ Ġarg 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 , ĊĠĠĠĠĠĠĠ Ġarg 3 , ĊĠĠĠĠĠĠĠ Ġarg 4 , ĊĠĠĠĠĠĠĠ Ġarg 5 , ĊĠĠĠĠĠĠĠ Ġarg 6 , ĊĠĠĠĠĠĠĠ Ġarg 7 , ĊĠĠĠĠĠĠĠ Ġarg 8 , ĊĠĠĠĠĠĠĠ Ġarg 9 , ĊĠĠĠĠĠĠĠ Ġarg 1 0 , ĊĠĠĠĠĠĠĠ Ġarg 1 1 , ĊĠĠĠĠĠĠĠ Ġarg 1 2 , ĊĠĠĠĠĠĠĠ Ġarg 1 3 , ĊĠĠĠĠĠĠĠ Ġarg 1 4 , ĊĠĠĠĠĠĠĠ Ġarg 1 5 , ĊĠĠĠĠĠĠĠ Ġarg 1 6 , ĊĠĠĠĠĠĠĠ Ġarg 1 7 , ĊĠĠĠĠĠĠĠ Ġarg 1 8 , ĊĠĠĠĠĠĠĠ Ġarg 1 9 , ĊĠĠĠĠĠĠĠ Ġarg 2 0 , ĊĠĠĠĠĠĠĠ Ġarg 2 1 , ĊĠĠĠĠĠĠĠ Ġarg 2 2 ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠChecks Ġif Ġargument Ġis Ġmatching Ġsome Ġcriteria Ċ Ġ*/ Ċ interface ĠMatcher < in ĠT > Ġ{ ĊĠĠĠ Ġfun Ġmatch ( arg : ĠT ?): ĠBoolean ĊĊĠĠĠ Ġfun Ġsubstitute ( map : ĠMap < Any , ĠAny >): ĠMatcher < T > Ġ= Ġthis Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġif Ġargument Ġis Ġof Ġspecific Ġtype Ċ Ġ*/ Ċ interface ĠTyped Matcher Ġ{ ĊĠĠĠ Ġval Ġargument Type : ĠK Class < *> ĊĊĠĠĠ Ġfun Ġcheck Type ( arg : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( argument Type . simple Name Ġ=== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġargument Type . is Instance ( arg ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġto Ġsubstitute Ġmatcher Ġto Ġfind Ġcorrect Ġchained Ġcall Ċ Ġ*/ Ċ interface ĠE quivalent Matcher Ġ{ ĊĠĠĠ Ġfun Ġequivalent (): ĠMatcher < Any > Ċ } Ċ Ċ /** Ċ Ġ* ĠCapt ures Ġthe Ġargument Ċ Ġ*/ Ċ interface ĠCapt uring Matcher Ġ{ ĊĠĠĠ Ġfun Ġcapture ( arg : ĠAny ?) Ċ } Ċ Ċ /** Ċ Ġ* ĠMatcher Ġcomposed Ġfrom Ġseveral Ġother Ġmatch ers . Ċ Ġ* Ċ Ġ* ĠAllows Ġto Ġbuild Ġmatching Ġexpressions . ĠA like Ġ" and ( eq ( 5 ), Ġcapture ( lst )) " Ċ Ġ*/ Ċ interface ĠComposite Matcher < T > Ġ{ ĊĠĠĠ Ġval Ġoperand Values : ĠList < T > ĊĊĠĠĠ Ġvar Ġsub Matchers : ĠList < Matcher < T >> ? Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠProvides Ġreturn Ġvalue Ġfor Ġmocked Ġfunction Ċ Ġ*/ Ċ interface ĠAnswer < out ĠT > Ġ{ ĊĠĠĠ Ġfun Ġanswer ( call : ĠCall ): ĠT ĊĊĠĠĠ Ġsuspend Ġfun Ġco Answer ( call : ĠCall ): ĠT Ġ= Ġanswer ( call ) Ċ } Ċ Ċ /** Ċ Ġ* ĠMan ip ul able Ġfield Ġvalue Ċ Ġ*/ Ċ class ĠBack ing FieldValue ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġgetter : Ġ() Ġ-> ĠAny ?, ĊĠĠĠ Ġval Ġsetter : Ġ( Any ?) Ġ-> ĠUnit Ċ ) Ċ Ċ type alias ĠBack ing FieldValue Provider Ġ= Ġ() Ġ-> ĠBack ing FieldValue ? Ċ Ċ /** Ċ Ġ* ĠCall Ġhappened Ġfor Ġstub bed Ġmock Ċ Ġ*/ Ċ data Ġclass ĠCall ( ĊĠĠĠ Ġval Ġret Type : ĠK Class <* >, ĊĠĠĠ Ġval Ġinvocation : ĠInvocation , ĊĠĠĠ Ġval Ġmatcher : ĠInvocation Matcher , ĊĠĠĠ Ġval Ġfield Value Provider : ĠBack ing FieldValue Provider Ċ ) Ċ Ċ /** Ċ Ġ* ĠProvides Ġinformation Ġabout Ġmethod Ċ Ġ*/ Ċ data Ġclass ĠMethod Description ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval ĠreturnType : ĠK Class <* >, ĊĠĠĠ Ġval ĠreturnType Nullable : ĠBoolean , ĊĠĠĠ Ġval Ġreturns Unit : ĠBoolean , ĊĠĠĠ Ġval Ġreturns Nothing : ĠBoolean , ĊĠĠĠ Ġval Ġis Suspend : ĠBoolean , ĊĠĠĠ Ġval Ġis Fn Call : ĠBoolean , ĊĠĠĠ Ġval Ġdeclaring Class : ĠK Class <* >, ĊĠĠĠ Ġval Ġparam Types : ĠList < K Class <* >>, ĊĠĠĠ Ġval Ġvar Args Arg : ĠInt , ĊĠĠĠ Ġval Ġprivate Call : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"$ name (${ args To Str () })" ĊĊĠĠĠ Ġfun Ġargs To Str () Ġ= Ġparam Types . map ( this :: arg To Str ). join ToString (", Ġ") ĊĊĠĠĠ Ġfun Ġarg To Str ( arg Type : ĠK Class <* >) Ġ= Ġarg Type . simple Name ĊĊĠĠĠ Ġfun Ġis ToString () Ġ= Ġname Ġ== Ġ" toString " Ġ&& Ġparam Types . isEmpty () ĊĠĠĠ Ġfun Ġis HashCode () Ġ= Ġname Ġ== Ġ" hashCode " Ġ&& Ġparam Types . isEmpty () ĊĠĠĠ Ġfun Ġis Equals () Ġ= Ġname Ġ== Ġ" equals " Ġ&& Ġparam Types . size Ġ== Ġ 1 Ġ&& Ġparam Types [ 0 ] Ġ== ĠAny :: class ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠMethod Description ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ!= Ġother . name Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ!= Ġother . returnType Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaring Class Ġ!= Ġother . decl aring Class Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam Types Ġ!= Ġother . param Types Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġname . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ ĠreturnType . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġdeclaring Class . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġparam Types . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠMock Ġinvocation Ċ Ġ*/ Ċ data Ġclass ĠInvocation ( ĊĠĠĠ Ġval Ġself : ĠAny , ĊĠĠĠ Ġval Ġstub : ĠAny , ĊĠĠĠ Ġval Ġmethod : ĠMethod Description , ĊĠĠĠ Ġval Ġargs : ĠList < Any ? >, ĊĠĠĠ Ġval Ġtimestamp : ĠLong , ĊĠĠĠ Ġval Ġcall Stack : Ġ() Ġ-> ĠList < Stack Element >, ĊĠĠĠ Ġval Ġoriginal Call : Ġ() Ġ-> ĠAny ?, ĊĠĠĠ Ġval Ġfield Value Provider : ĠBack ing FieldValue Provider Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġsubstitute ( map : ĠMap < Any , ĠAny >) Ġ= ĠInvocation ( ĊĠĠĠĠĠĠĠ Ġself . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġstub , ĊĠĠĠĠĠĠĠ Ġmethod . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġargs . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġtimestamp , ĊĠĠĠĠĠĠĠ Ġcall Stack , ĊĠĠĠĠĠĠĠ Ġoriginal Call , ĊĠĠĠĠĠĠĠ Ġfield Value Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠInvocation ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Ġ!== Ġother . self Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ!= Ġother . method Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ!= Ġother . args Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠInternal Platform Dsl . identity HashCode ( self ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġmethod . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġargs . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ"$ self .${ method . name } (${ args . join ToString (", Ġ", Ġtransform Ġ= Ġ{ Ġit . to Str () Ġ}) })" Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠElement Ġof Ġstack Ġtrace . Ċ Ġ*/ Ċ data Ġclass ĠStack Element ( ĊĠĠĠ Ġval ĠclassName : ĠString , ĊĠĠĠ Ġval ĠfileName : ĠString , ĊĠĠĠ Ġval ĠmethodName : ĠString , ĊĠĠĠ Ġval Ġline : ĠInt , ĊĠĠĠ Ġval Ġnative Method : ĠBoolean Ċ ) Ċ Ċ /** Ċ Ġ* ĠChecks Ġif Ġinvocation Ġis Ġmatching Ġvia Ġnumber Ġof Ġmatch ers Ċ Ġ*/ Ċ data Ġclass ĠInvocation Matcher ( ĊĠĠĠ Ġval Ġself : ĠAny , ĊĠĠĠ Ġval Ġmethod : ĠMethod Description , ĊĠĠĠ Ġval Ġargs : ĠList < Matcher < Any >>, ĊĠĠĠ Ġval Ġall Any : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġsubstitute ( map : ĠMap < Any , ĠAny >) Ġ= ĠInvocation Matcher ( ĊĠĠĠĠĠĠĠ Ġself . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġmethod . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġargs . internal Subst itute ( map ), ĊĠĠĠĠĠĠĠ Ġall Any ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġmatch ( invocation : ĠInvocation ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( self Ġ!== Ġinvocation . self ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( method Ġ!= Ġinvocation . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( all Any ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . size Ġ< Ġinvocation . args . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . size Ġ!= Ġinvocation . args . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġinvocation . args . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġargs [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġinvocation . args [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher Ġis ĠTyped Matcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! matcher . check Type ( arg )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! matcher . match ( arg )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcapture Answer ( invocation : ĠInvocation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( idx , Ġarg Matcher ) Ġin Ġargs . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg Matcher Ġis ĠCapt uring Matcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg Matcher . capture ( invocation . args [ idx ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠInvocation Matcher ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Ġ!== Ġother . self Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ!= Ġother . method Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ!= Ġother . args Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠInternal Platform Dsl . identity HashCode ( self ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġmethod . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġargs . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ self .${ method . name } (${ args . join ToString (", Ġ" )} )) " ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ /** Ċ Ġ* ĠMat ched Ġcall Ċ Ġ*/ Ċ data Ġclass ĠRe corded Call ( ĊĠĠĠ Ġval Ġret Value : ĠAny ?, ĊĠĠĠ Ġval Ġis Ret Value Mock : ĠBoolean , ĊĠĠĠ Ġval Ġret Type : ĠK Class <* >, ĊĠĠĠ Ġval Ġmatcher : ĠInvocation Matcher , ĊĠĠĠ Ġval Ġself Chain : ĠRe corded Call ?, ĊĠĠĠ Ġval Ġarg Ch ains : ĠList < Any >? Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Re corded Call ( ret Value =${ ret Value . to Str ()}, Ġret Type =${ ret Type . to Str ()}, Ġis Ret Value Mock =$ is Ret Value Mock Ġmatcher =$ matcher )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠRe corded Call ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Value Ġ!== Ġother . ret Value Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ret Value Mock Ġ!= Ġother . is Ret Value Mock Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Type Ġ!= Ġother . ret Type Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher Ġ!= Ġother . matcher Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Chain Ġ!= Ġother . self Chain Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg Ch ains Ġ!= Ġother . arg Ch ains Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġret Value ?. let Ġ{ ĠInternal Platform Dsl . identity HashCode ( it ) Ġ} Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġis Ret Value Mock . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġret Type . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġmatcher . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( self Chain ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( arg Ch ains ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġto Ġdere gister Ġsomething Ġwas Ġregistered Ġbefore Ċ Ġ*/ Ċ interface ĠD ere gister able Ġ{ ĊĠĠĠ Ġfun Ġdere gister () Ċ } ĊĊ Ċ inline Ġfun Ġ< T Ġ: ĠD ere gister able , ĠR > ĠT . use ( block : Ġ( T ) Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock ( this ) ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dere gister () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( close Exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġskip ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T > ĠT . internal Subst itute ( map : ĠMap < Any , ĠAny >): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġ( map [ this Ġas ĠAny ? Ġ?: Ġreturn Ġnull Ġas ĠT ] Ġ?: Ġthis ) Ġas ĠT Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠList < T >. internal Subst itute ( map : ĠMap < Any , ĠAny >) Ġ= Ġthis . map Ġ{ Ġit . internal Subst itute ( map ) Ġ} Ċ