package Ġmb . pie . api Ċ Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* ĠType Ġfor Ġtask Ġoutputs . ĠIt Ġmust Ġad here Ġto Ġthe Ġfollowing Ġproperties : Ċ Ġ* Ċ Ġ* Ġ* ĠImplements Ġ[ Serializable ]. Ċ Ġ* Ġ* ĠImplements Ġ[ equals ][ Object . equals ] Ġand Ġ[ hashCode ][ Object . hashCode ]. Ċ Ġ* Ċ Ġ* ĠFailure Ġto Ġad here Ġto Ġthese Ġproperties Ġwill Ġcause Ġun sound Ġincrement ality . Ċ Ġ*/ Ċ type alias ĠOut Ġ= ĠSerializable ? ĊĊ Ċ /** Ċ Ġ* ĠWrapper Ġfor Ġtransient Ġoutputs ; Ġoutputs Ġthat Ġcannot Ġbe Ġserialized . ĠA Ġtransient Ġoutput Ġwill Ġbe Ġre created Ġwhen Ġan Ġattempt Ġis Ġmade Ġto Ċ Ġ* Ġdeserialize Ġit , Ġand Ġthen Ġcached . Ċ Ġ*/ Ċ interface ĠOut Transient < out ĠT Ġ: ĠAny ?> Ġ: ĠOut Ġ{ ĊĠ Ġval Ġv : ĠT ĊĠ Ġval Ġconsistent : ĠBoolean Ċ } Ċ Ċ data Ġclass ĠOut Transient Impl < out ĠT Ġ: ĠAny ? >( ĊĠ Ġ@ Transient Ġoverride Ġval Ġv : ĠT , ĊĠ Ġ@ Transient Ġoverride Ġval Ġconsistent : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠOut Transient < T > Ġ{ ĊĠ Ġconstructor ( v : ĠT ) Ġ: Ġthis ( v , Ġtrue ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠSpecial ization Ġof Ġ[ Out Transient ], Ġwhere Ġa Ġserial izable Ġvalue Ġ[ e ] Ġis Ġused Ġfor Ġchange Ġdetection Ġthrough Ġequality . Ċ Ġ*/ Ċ interface ĠOut Transient Equ atable < out ĠT Ġ: ĠAny ?, Ġout ĠE Ġ: ĠOut > Ġ: ĠOut Transient < T > Ġ{ ĊĠ Ġval Ġe : ĠE Ċ } Ċ Ċ data Ġclass ĠOut Transient Equ atable Impl < out ĠT Ġ: ĠAny ?, Ġout ĠE Ġ: ĠOut >( ĊĠ Ġ@ Transient Ġoverride Ġval Ġv : ĠT , ĊĠ Ġ@ Transient Ġoverride Ġval Ġconsistent : ĠBoolean Ġ= Ġfalse , ĊĠ Ġoverride Ġval Ġe : ĠE Ċ ) Ġ: ĠOut Transient Equ atable < T , ĠE > Ġ{ ĊĠ Ġconstructor ( v : ĠT , Ġe : ĠE ) Ġ: Ġthis ( v , Ġtrue , Ġe ) Ċ } Ċ