package Ġsoftware . amazon . ion schema . internal Ċ Ċ import Ġsoftware . amazon . ion . Ion Type Ċ import Ġsoftware . amazon . ion . Ion Value Ċ import Ġsoftware . amazon . ion schema . Invalid Schema Exception Ċ import Ġsoftware . amazon . ion schema . Schema Ċ import Ġsoftware . amazon . ion schema . internal . constraint . Constraint Base Ċ import Ġsoftware . amazon . ion schema . Vi olations Ċ Ċ /** Ċ Ġ* Ġ[ Type ] Ġdecorator Ġthat Ġimplements Ġthe Ġnullable :: Ġannotation . Ċ Ġ*/ Ċ internal Ġclass ĠType Nullable ( ĊĠĠĠĠĠĠĠ Ġion : ĠIon Value , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtype : ĠType Internal , ĊĠĠĠĠĠĠĠ Ġschema : ĠSchema Ċ ) Ġ: ĠType Internal Ġby Ġtype , ĠConstraint Base ( ion ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type . getBase Type () Ġ== Ġschema . getType (" document ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Schema Exception (" The Ġ' document ' Ġtype Ġis Ġnot Ġnullable ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate ( value : ĠIon Value , Ġissues : ĠVi olations ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!( value . isNull Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( value . type Ġ== ĠIon Type . NULL Ġ|| Ġtype . isValid For BaseType ( value )))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . validate ( value , Ġissues ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġtype . name Ċ } Ċ