// Ġ! USE _ EXPERIMENT AL : Ġkotlin . contracts . Experimental Contracts Ċ Ċ /* Ċ Ġ* ĠK OT LIN ĠDI AG NO ST ICS ĠNOT ĠLINK ED ĠSPEC ĠTEST Ġ( NEGATIVE ) Ċ Ġ* Ċ Ġ* ĠSECTION S : Ġcontracts , Ġanalysis , Ġsmart casts Ċ Ġ* ĠNUMBER : Ġ 1 1 Ċ Ġ* ĠDESCRIPTION : ĠSmart cast Ġusing Ġmany Ġof Ġthe Ġvarious ĠReturns Ġeffects Ġon Ġthe Ġsame Ġvalues . Ċ Ġ* ĠHEL PER S : Ġcontract Functions Ċ Ġ*/ Ċ Ċ // ĠFILE : Ġcontracts . kt Ċ Ċ package Ġcontracts Ċ Ċ import Ġkotlin . contracts .* Ċ Ċ // ĠTEST CASE ĠNUMBER : Ġ 1 Ċ fun Ġ< T > ĠT ?. case _ 1 _ 1 (): ĠBoolean Ġ{ ĊĠĠĠ Ġcontract Ġ{ Ġreturns ( false ) Ġimplies Ġ( this @ case _ 1 _ 1 Ġ!= Ġnull ) Ġ} ĊĠĠĠ Ġreturn Ġ!( this @ case _ 1 _ 1 Ġ!= Ġnull ) Ċ } Ċ fun Ġ< T > ĠT ?. case _ 1 _ 2 (): ĠBoolean ? Ġ{ ĊĠĠĠ Ġcontract Ġ{ Ġreturns ( null ) Ġimplies Ġ( this @ case _ 1 _ 2 Ġis ĠString ) Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( this @ case _ 1 _ 2 Ġis ĠString ) Ġnull Ġelse Ġtrue Ċ } Ċ Ċ // ĠTEST CASE ĠNUMBER : Ġ 2 Ċ fun Ġ< T Ġ: ĠNumber ?> ĠT . case _ 2 _ 1 (): ĠBoolean ? Ġ{ ĊĠĠĠ Ġcontract Ġ{ Ġreturns NotNull () Ġimplies Ġ( this @ case _ 2 _ 1 Ġ!= Ġnull ) Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( this @ case _ 2 _ 1 Ġ!= Ġnull ) Ġtrue Ġelse Ġnull Ċ } Ċ fun Ġ< T Ġ: ĠNumber ?> ĠT . case _ 2 _ 2 (): ĠBoolean ? Ġ{ ĊĠĠĠ Ġcontract Ġ{ Ġreturns ( null ) Ġimplies Ġ( this @ case _ 2 _ 2 Ġ!= Ġnull ) Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( this @ case _ 2 _ 2 Ġ!= Ġnull ) Ġnull Ġelse Ġtrue Ċ } Ċ Ċ // ĠFILE : Ġmain . kt Ċ Ċ import Ġcontracts .* Ċ Ċ // ĠTEST CASE ĠNUMBER : Ġ 1 Ċ fun Ġcase _ 1 ( value _ 1 : ĠAny ?) Ġ{ ĊĠĠĠ Ġif Ġ(!( value _ 1 . case _ 1 _ 1 () Ġ|| Ġvalue _ 1 . case _ 1 _ 2 () Ġ== Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ<! AM BIG U ITY !> println <! >( value _ 1 .< ! UN RESOL VED _ REFERENCE !> length <! >) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ Ġ* ĠTEST CASE ĠNUMBER : Ġ 2 Ċ Ġ* ĠDIS CU SS ION : Ġmaybe Ġmake Ġthe Ġcode Ġunreachable Ġin Ġthe Ġsecond Ġcondition ? Ċ Ġ* ĠUN EXPECTED ĠBE HAV IO UR Ċ Ġ*/ Ċ fun Ġcase _ 2 ( value _ 1 : ĠNumber ?) Ġ{ ĊĠĠĠ Ġif Ġ( value _ 1 ?. case _ 2 _ 1 () Ġ!= Ġnull ) Ġprintln ( value _ 1 . to Byte ()) ĊĠĠĠ Ġif Ġ( value _ 1 ?. case _ 2 _ 2 () Ġ!= Ġnull ) Ġprintln ( value _ 1 . to Byte ()) Ċ } Ċ