package Ġcom . m ire go . tri kot . datas ources Ċ Ċ @ Suppress (" Equals Or HashCode ") Ċ sealed Ġclass ĠData State < V , ĠE Ġ: ĠThrowable > Ġ{ ĊĠĠĠ Ġdata Ġclass ĠPending < V , ĠE Ġ: ĠThrowable >( val Ġvalue : ĠV ? Ġ= Ġnull ) Ġ: ĠData State < V , ĠE >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġvalue ?. hashCode () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġthis :: class . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠData < V , ĠE Ġ: ĠThrowable >( val Ġvalue : ĠV ) Ġ: ĠData State < V , ĠE >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġvalue ?. hashCode () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġthis :: class . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠError < V , ĠE Ġ: ĠThrowable >( val Ġerror : ĠE , Ġval Ġvalue : ĠV ? Ġ= Ġnull ) Ġ: ĠData State < V , ĠE >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġerror . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( value ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġthis :: class . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< V , ĠE Ġ: ĠThrowable > Ġpending ( value : ĠV ? Ġ= Ġnull ): ĠData State < V , ĠE > Ġ= ĠPending ( value ) ĊĠĠĠĠĠĠĠ Ġfun Ġ< V , ĠE Ġ: ĠThrowable > Ġdata ( value : ĠV ): ĠData State < V , ĠE > Ġ= ĠData ( value ) ĊĠĠĠĠĠĠĠ Ġfun Ġ< V , ĠE Ġ: ĠThrowable > Ġerror ( error : ĠE , Ġvalue : ĠV ? Ġ= Ġnull ): ĠData State < V , ĠE > Ġ= ĠError ( error , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Pending ( pending If Data Is Available : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPending Ġ-> Ġpending If Data Is Available Ġ|| Ġresult . value Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Error ( error If Data Is Available : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Ġ-> Ġerror If Data Is Available Ġ|| Ġresult . value Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Data ( has Data If Pending : ĠBoolean Ġ= Ġtrue , Ġhas Data If Error : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPending Ġ-> Ġhas Data If Pending Ġ&& Ġresult . value Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Ġ-> Ġhas Data If Error Ġ&& Ġresult . value Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ