package Ġsoftware . amazon . ion schema . internal . util Ċ Ċ import Ġsoftware . amazon . ion . Ion Int Ċ import Ġsoftware . amazon . ion . Ion List Ċ import Ġsoftware . amazon . ion schema . Invalid Schema Exception Ċ import Ġjava . math . BigDecimal Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof ĠRange < Int >, Ġwhich Ġmostly Ġdeleg ates Ġto ĠRange BigDecimal . Ċ Ġ*/ Ċ internal Ġclass ĠRange Int Ġ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġion : ĠIon List , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdelegate : ĠRange BigDecimal Ġ= ĠRange BigDecimal ( ion ) Ċ ) Ġ: ĠRange < Int > Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!( ion [ 0 ] Ġis ĠIon Int Ġ|| Ġis Range Min ( ion [ 0 ]))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Schema Exception (" Invalid Ġlower Ġbound Ġin Ġint Ġ$ ion ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(!( ion [ 1 ] Ġis ĠIon Int Ġ|| Ġis Range Max ( ion [ 1 ]))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Schema Exception (" Invalid Ġupper Ġbound Ġin Ġint Ġ$ ion ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( delegate . lower . value Ġ!= Ġnull Ġ&& Ġdelegate . upper . value Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( delegate . lower . boundary Type Ġ== ĠRange Boundary Type . EXCL USIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdelegate . upper . boundary Type Ġ== ĠRange Boundary Type . EXCL USIVE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Plus One Ġ= Ġdelegate . lower . value . add ( BigDecimal . ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Plus One Ġ== Ġdelegate . upper . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Schema Exception (" No Ġvalid Ġvalues Ġin Ġthe Ġint Ġrange Ġ$ ion ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( value : ĠInt ) Ġ= Ġdelegate . contains ( value . to BigDecimal ()) ĊĊĠĠĠ Ġinternal Ġfun Ġis At Max ( value : ĠInt ) Ġ= Ġdelegate . upper . compareTo ( value . to BigDecimal ()) Ġ== Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġion . toString () Ċ } ĊĊ