// Ġ! LANGUAGE : Ġ+ New Inference Ċ // ĠWITH _ RUNTIME Ċ Ċ @ file : Opt In ( Experimental Type Inference :: class ) Ċ Ċ package Ġtest Ċ Ċ import Ġkotlin . experimental . Experimental Type Inference Ċ Ċ interface ĠBuilder < T Ġ: ĠAny > Ġ{ ĊĠĠĠ Ġfun Ġfilter ( filter : Ġ( T ) Ġ-> ĠBoolean ) Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > Ġbuild (@ Builder Inference Ġblock : ĠBuilder < T >. () Ġ-> ĠUnit ): ĠT Ġ{ ĊĠĠĠ Ġval Ġo Ġ= Ġobject Ġ: ĠBuilder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfilter ( filter : Ġ( T ) Ġ-> ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġo . block () ĊĊĠĠĠ Ġreturn Ġ 4 2 Ġas ĠT Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġr Ġ= Ġbuild < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ> Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġif Ġ( r Ġ== Ġ 4 2 ) Ġ" OK " Ġelse Ġ" Fail : Ġ$ r " Ċ }