package Ġrun . smt . k test . util . lambda Ċ Ċ class ĠSingle Argument Lambda < in ĠT , Ġout ĠR > Ġinternal Ġconstructor ( private Ġval Ġoriginal : Ġ( T ?) Ġ-> ĠR ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( param : ĠT ) Ġ= Ġoriginal ( param ) ĊĠĠĠ Ġoperator Ġfun Ġinvoke () Ġ= Ġoriginal ( null ) Ċ } Ċ Ċ class ĠDual Argument Lambda < in ĠA , Ġin ĠB , Ġout ĠR > Ġinternal Ġconstructor ( private Ġval Ġoriginal : Ġ( A ?, ĠB ?) Ġ-> ĠR ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke () Ġ= Ġoriginal ( null , Ġnull ) ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( a : ĠA ) Ġ= Ġoriginal ( a , Ġnull ) ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( a : ĠA ?, Ġb : ĠB ) Ġ= Ġoriginal ( a , Ġb ) Ċ } Ċ Ċ fun Ġ< T , ĠR > Ġ(( T ?) Ġ-> ĠR ). over loaded () Ġ= ĠSingle Argument Lambda ( this ) Ċ fun Ġ< A , ĠB , ĠR > Ġ(( A ?, ĠB ?) Ġ-> ĠR ). over loaded () Ġ= ĠDual Argument Lambda ( this ) Ċ