package Ġio . mock ative Ċ Ċ import Ġio . mock ative . matchers . Arguments Matcher Ċ import Ġio . mock ative . matchers . Specific Arguments Matcher Ċ import Ġkotlin . reflect . K Function Ċ Ċ class ĠGiven Suspend Function 0 Builder < R >( private Ġval Ġmock : ĠMock able , Ġprivate Ġval Ġfunction : ĠK Function < R >) Ġ{ ĊĠĠĠ Ġfun Ġwhen Inv oked (): ĠResult Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠSpecific Arguments Matcher ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult Builder ( arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinner Ġclass ĠResult Builder ( private Ġval Ġarguments : ĠArguments Matcher ) Ġ: ĠAny Suspend Result Builder < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġthen ( block : Ġsuspend Ġ() Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpectation Ġ= ĠExpect ation . Function ( function . name , Ġarguments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstub Ġ= ĠS uspend Stub ( expect ation ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock . add Suspend Stub ( stub ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġthen Invoke ( block : Ġsuspend Ġ() Ġ-> ĠR ) Ġ= Ġthen Ġ{ Ġblock () Ġ} ĊĠĠĠ Ġ} Ċ }