package Ġproject . annotation schema Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Sub Types Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeInfo Ċ import Ġcommon . as Any Ċ import Ġcommon . get Nested Key Ċ import Ġdocument . Document Ċ import Ġdocument . annotation . Annotation Ċ import Ġdocument . annotation . Annotation Map Ċ import Ġdocument . annotation . Generated Annotation Data Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġsubclasses Ġthat Ġdefine Ġhow Ġsome Ġdata Ġfrom Ġa Ġ[ Document ] Ġor Ġ[ Generated Annotation Data ] Ġis Ġextracted Ċ Ġ* Ġand Ġused Ġfor ĠEnable Condition Ġor Ġannotation Ġgeneration . Ċ Ġ* Ċ Ġ*/ Ċ @ Json TypeInfo ( ĊĠĠĠ Ġuse Ġ= ĠJson TypeInfo . Id . NAME , ĊĠĠĠ Ġinclude Ġ= ĠJson TypeInfo . As . PROPERTY , ĊĠĠĠ Ġproperty Ġ= Ġ" type " Ċ ) Ċ @ Json Sub Types ( ĊĠĠĠ Ġvalue Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠJson Sub Types . Type ( value Ġ= ĠOriginal Document Key :: class , Ġname Ġ= Ġ" Original Document Key "), ĊĠĠĠĠĠĠĠ ĠJson Sub Types . Type ( value Ġ= ĠAn notations Key :: class , Ġname Ġ= Ġ" Annotations Key ") ĊĠĠĠ Ġ] Ċ ) Ċ sealed Ġclass ĠAnnotation Step Key Ġ{ ĊĠĠĠ Ġabstract Ġfun ĠgetValue ( document : ĠDocument , Ġannotations : ĠAnnotation Map ): ĠAny ? Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġsome Ġdata Ġfrom Ġthe Ġoriginal Document Ġof Ġa Ġ[ Document ] Ċ Ġ*/ Ċ data Ġclass ĠOriginal Document Key ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġkey Ġinside Ġthe ĠDocument . original Document ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġkey : ĠString Ċ ) Ġ: ĠAnnotation Step Key () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( document : ĠDocument , Ġannotations : ĠAnnotation Map ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument . original Document . get Nested Key ( key ). as Any () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġsome Ġdata Ġfrom Ġsome Ġannotations Ċ Ġ*/ Ċ data Ġclass ĠAn notations Key ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġannotation ĠID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġkey : ĠString Ċ ) Ġ: ĠAnnotation Step Key () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( document : ĠDocument , Ġannotations : ĠAnnotation Map ): ĠAnnotation < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġannotations [ key ] ĊĠĠĠ Ġ} Ċ Ċ }