package Ġnn l . ro cks . k act o os . func Ċ Ċ import Ġnn l . ro cks . k act o os . Bi Func Ċ Ċ /** Ċ Ġ* ĠBi Func Ġthat Ġis Ġthread - safe Ġand Ġsticky . Ċ Ġ* Ċ Ġ* ĠObjects Ġof Ġthis Ġclass Ġare Ġthread Ġsafe . Ċ Ġ* Ċ Ġ* Ġ@ param ĠX ĠType Ġof Ġfirst Ġinput Ċ Ġ* Ġ@ param ĠY ĠType Ġof Ġsecond Ġinput Ċ Ġ* Ġ@ param ĠZ ĠType Ġof Ġoutput Ċ Ġ* Ġ@ since Ġ 0 . 4 Ċ Ġ*/ Ċ class ĠSolid Bi Func < in ĠX Ġ: ĠAny , Ġin ĠY Ġ: ĠAny , Ġout ĠZ Ġ: ĠAny >( ĊĠĠĠ Ġprivate Ġval Ġfunc : ĠBi Func < X , ĠY , ĠZ > Ċ ) Ġ: ĠBi Func < X , ĠY , ĠZ > Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġfn c : ĠBi Func < X , ĠY , ĠZ >, ĊĠĠĠĠĠĠĠ Ġmax : ĠInt ĊĠĠĠ Ġ) Ġ: Ġthis ( Sync Bi Func ( Sticky Bi Func ( fn c , Ġmax ))) ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( ĊĠĠĠĠĠĠĠ Ġfirst : ĠX , ĊĠĠĠĠĠĠĠ Ġsecond : ĠY ĊĠĠĠ Ġ): ĠZ Ġ= Ġfunc . apply ( first , Ġsecond ) Ċ } Ċ