package Ġcom . h ari . t mdb . model Ċ Ċ interface ĠError Get table Ġ{ ĊĠĠĠ Ġfun Ġget Error IfExists (): ĠThrowable ? Ċ } Ċ Ċ sealed Ġclass ĠLoad State < out ĠT > Ġ: ĠError Get table Ġ{ ĊĠĠĠ Ġobject ĠLoading Ġ: ĠLoad State < Nothing >() ĊĠĠĠ Ġclass ĠLoaded < T >( val Ġvalue : ĠT ) Ġ: ĠLoad State < T >() ĊĠĠĠ Ġclass ĠError < T >( val Ġe : ĠThrowable ) Ġ: ĠLoad State < T >() ĊĊĠĠĠ Ġval ĠisLoading Ġget () Ġ= Ġthis Ġis ĠLoading ĊĠĠĠ Ġoverride Ġfun Ġget Error IfExists () Ġ= Ġif Ġ( this Ġis ĠError ) Ġe Ġelse Ġnull ĊĠĠĠ Ġfun ĠgetValue OrNull (): ĠT ? Ġ= Ġif Ġ( this Ġis ĠLoaded < T >) Ġvalue Ġelse Ġnull Ċ } Ċ Ċ sealed Ġclass ĠLoading State Ġ: ĠError Get table Ġ{ ĊĠĠĠ Ġobject ĠLoading Ġ: ĠLoading State () ĊĠĠĠ Ġobject ĠLoaded Ġ: ĠLoading State () ĊĠĠĠ Ġclass ĠError ( val Ġe : ĠThrowable ) Ġ: ĠLoading State () ĊĊĠĠĠ Ġval ĠisLoading Ġget () Ġ= Ġthis Ġis ĠLoading ĊĠĠĠ Ġoverride Ġfun Ġget Error IfExists () Ġ= Ġif Ġ( this Ġis ĠError ) Ġe Ġelse Ġnull Ċ } Ċ Ċ sealed Ġclass ĠResult State < T > Ġ: ĠError Get table Ġ{ ĊĠĠĠ Ġclass ĠSuccess < T >( val Ġvalue : ĠT ) Ġ: ĠResult State < T >() ĊĠĠĠ Ġclass ĠError < T >( val Ġe : ĠThrowable ) Ġ: ĠResult State < T >() ĊĊĠĠĠ Ġoverride Ġfun Ġget Error IfExists () Ġ= Ġif Ġ( this Ġis ĠError ) Ġe Ġelse Ġnull ĊĠĠĠ Ġfun Ġget OrDefault ( default : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠSuccess ) Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġreturn Ġdefault ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Error Get table >. first Error OrNull (): ĠThrowable ? Ġ{ ĊĠĠĠ Ġreturn Ġmap NotNull Ġ{ Ġit . getError IfExists () Ġ}. first OrNull () Ċ } Ċ