package Ġcom . github . km iz u . kot bin ator Ċ Ċ import Ġcom . github . km iz u . kot bin ator . util . block Ċ Ċ sealed Ġclass ĠParse Result < out ĠT > Ġ{ ĊĠĠĠ Ġclass ĠParse Success < T >( val Ġvalue : ĠT , Ġval Ġrest : ĠString ): ĠParse Result < T >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParse Success < *> Ġ-> Ġvalue Ġ== Ġother . value Ġ&& Ġrest Ġ== Ġother . rest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvalue ?. hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġrest . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġv . hashCode () Ġ+ Ġrest . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Success ($ value , Ġ$ rest )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġclass ĠParse Failure ( val Ġrest : ĠString ) Ġ: ĠParse Result < Nothing >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParse Failure Ġ-> Ġrest Ġ== Ġother . rest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest . hashCode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġblock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failure ($ rest )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ