// ĠIG NORE _ BACKEND _ FI R : ĠJVM _ IR Ċ // ĠWITH _ RUNTIME Ċ // ĠFILE : ĠPromise . java Ċ import Ġorg . jetbrains . annotations . NotNull ; Ċ Ċ interface ĠConsumer < T > Ġ{ ĊĠĠĠ Ġvoid Ġconsume ( T Ġt ); Ċ } Ċ Ċ public Ġabstract Ġclass ĠPromise < T > Ġ{ ĊĠĠĠ Ġ@ NotNull ĊĠĠĠ Ġpublic Ġabstract ĠPromise < T > Ġdone (@ NotNull ĠConsumer <? Ġsuper ĠT > Ġdone ); Ċ } Ċ Ċ // ĠFILE : Ġ 1 . kt Ċ class ĠUser Ġ{ ĊĠĠĠ Ġfun Ġuse ( promise : ĠPromise < *> ): ĠPromise < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġpromise . done Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpromise ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠ ĠUser (). use ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPromise < CharSequence >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdone ( x : ĠConsumer < in ĠCharSequence ?> ): ĠPromise < CharSequence > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġx . java Class . generic Interfaces [ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( result Ġ!= Ġ" Consumer < java . lang . Object >") Ġreturn Ġ" fail : Ġ$ result " ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ