package Ġcom . world turn er . me de ia . schema . model Ċ Ċ import Ġcom . world turn er . me de ia . parser . TreeNode Ċ import Ġcom . world turn er . me de ia . pointer . Json Pointer Ċ import Ġcom . world turn er . me de ia . pointer . has Json Pointer Fragment Ċ import Ġcom . world turn er . me de ia . schema . validation . Array Unique Items Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Array Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Boolean Value Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Const Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Content Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Enum Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Exist ential Operation . ALL _ OF Ċ import Ġcom . world turn er . me de ia . schema . validation . Exist ential Operation . ANY _ OF Ċ import Ġcom . world turn er . me de ia . schema . validation . Exist ential Operation . ONE _ OF Ċ import Ġcom . world turn er . me de ia . schema . validation . Exist ential Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Format Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . If Then Else Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Not Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Number Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Object Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Ref Schema Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Schema Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . String Validator Ċ import Ġcom . world turn er . me de ia . schema . validation . Type Validator Ċ import Ġcom . world turn er . me de ia . types . Altern atives Ċ import Ġcom . world turn er . me de ia . types . Single Or List Ċ import Ġcom . world turn er . util . has Any Other Than Fragment Ċ import Ġcom . world turn er . util . has Fragment Ċ import Ġcom . world turn er . util . or Null Ċ import Ġcom . world turn er . util . replace Fragment Ċ import Ġcom . world turn er . util . resolve Safe Ċ import Ġcom . world turn er . util . with Empty Fragment Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . net . URI Ċ import Ġjava . util . Enum Set Ċ import Ġjava . util . Locale Ċ Ċ data Ġclass ĠJson Schema Ġconstructor ( ĊĠĠĠ Ġval Ġschema : ĠURI ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġid : ĠURI ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġref : ĠURI ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcomment : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtitle : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdefault : ĠTreeNode ? Ġ= Ġnull , ĊĠĠĠ Ġval ĠreadOnly : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġexamples : ĠList < TreeNode >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmultiple Of : ĠBigDecimal ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmaximum : ĠBigDecimal ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġexclusive Maximum : ĠBigDecimal ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġminimum : ĠBigDecimal ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġexclusive Minimum : ĠBigDecimal ? Ġ= Ġnull , ĊĠĠĠ Ġval ĠmaxLength : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmin Length : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġpattern : ĠRegex ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġadditional Items : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġitems : ĠSingle Or List < Json Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmax Items : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmin Items : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġunique Items : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcontains : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmax Properties : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmin Properties : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġrequired : ĠSet < String >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġadditional Properties : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġproperties : ĠMap < String , ĠJson Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġpattern Properties : ĠMap < Regex , ĠJson Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdependencies : ĠMap < String , ĠProperty Names Or Json Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġproperty Names : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġconst : ĠTreeNode ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġenum : ĠSet < TreeNode >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtype : ĠEnum Set < Simple Type >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġformat : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcontent MediaType : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcontent Encoding : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdefinitions : ĠMap < String , ĠJson Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġif Schema : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġthen Schema : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġelse Schema : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġall Of : ĠList < Json Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġany Of : ĠList < Json Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġone Of : ĠList < Json Schema >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġnot : ĠJson Schema ? Ġ= Ġnull , ĊĠĠĠ Ġ// ĠWhen Ġa Ġschema Ġis Ġparsed Ġas Ġa Ġboolean Ġ( mean ing Ġnothing Ġor Ġ" everything ") ĊĠĠĠ Ġval Ġaccept All Or Nothing : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġjson Pointer : ĠJson Pointer Ċ ) Ġ: ĠSchema Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġresolved Id : ĠURI ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġfun Ġrecord Ids ( ĊĠĠĠĠĠĠĠ Ġvalidator : ĠSchema Validator , ĊĠĠĠĠĠĠĠ Ġcontext : ĠValidation Builder Context ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresolved Id ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull Ġ|| Ġcontext . root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . put ( it , Ġthis , Ġvalidator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . has Fragment ()) Ġcontext . put ( it . with Empty Fragment (), Ġthis , Ġvalidator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAlso Ġmake Ġcontext Ġaccessible Ġby Ġbase Uri Ġif Ġthe Ġbase Uri Ġis Ġdifferent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTo Ġallow Ġa Ġstable Ġexternal ĠURI Ġthat Ġis Ġknown Ġwithout Ġlooking Ġinto Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġschema . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . root Ġ&& Ġcontext . base Uri Ġ!= Ġresolved Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . put ( context . base Uri , Ġthis , Ġvalidator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext . parents . forEach Indexed Ġ{ Ġindex , Ġparent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . resolved Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has Any Other Than Fragment () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( index Ġ== Ġcontext . parents . last Index Ġ&& Ġit . fragment . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelative Json Pointer Ġ= Ġparent . json Pointer . rel ativ ize ( this . json Pointer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġit . replace Fragment ( relative Json Pointer . toString (), Ġencoded Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . put ( uri , Ġthis , Ġvalidator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefinitions ?. forEach Ġ{ Ġ(_, Ġschema ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Context Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Id ?. let Ġ{ Ġcontext . with Base Uri ( it ). with Parent ( this ) Ġ} Ġ?: Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema . build Validator ( sub Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Validator ( context : ĠValidation Builder Context ): ĠSchema Validator Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull Ġ&& Ġid . has Json Pointer Fragment ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id . has Any Other Than Fragment () Ġ|| Ġid . fragment Ġ!= Ġjson Pointer . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote Ġif Ġthe Ġid Ġis Ġsimply Ġtrying Ġto Ġdefine Ġthe Ġcurrent Ġjson Ġpointer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( which Ġis Ġinvalid Ġbut Ġstrange ly , Ġcommonly Ġdone ) Ġthen Ġjust Ġignore Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid Ġ\$ id Ġwith Ġnon - plain Ġname Ġfragment Ġ( see Ġsection Ġ 8 . 2 . 3 Ġof Ġjson - schema - core ): Ġ'$ id '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Id Ġ= Ġid ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . base Uri . resolve Safe ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġif Ġ( context . root ) Ġcontext . base Uri Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġref ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= ĠRef Schema Validator ( context . base Uri . resolve Safe ( ref ), Ġcontext . schema Validators ById ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Ids ( validator , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalidator ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsub Context Ġ= Ġcontext . with Base Uri ( context . base Uri ( id )). with Parent ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvalidator List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean Value Validator . create ( accept All Or Nothing ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Validator . create ( type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNumber Validator . create ( multiple Of , Ġmaximum , Ġexclusive Maximum , Ġminimum , Ġexclusive Minimum ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Validator . create ( maxLength , Ġmin Length , Ġpattern ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . options . validate Format . or Null Ġ{ ĠFormat Validator . create ( format , Ġcontext . options . custom Formats ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . options . validate Content . or Null Ġ{ ĠContent Validator . create ( content MediaType , Ġcontent Encoding ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Items ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ?. list ?. let Ġ{ Ġit . build Validators ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ?. single ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Unique Items Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Items Ġ= Ġunique Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġcontext . options . unique Items Validation Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConst Validator . create ( const ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Validator . create ( enum ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Properties , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Properties , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Properties ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties ?. let Ġ{ Ġit . build Validators ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpattern Properties ?. let Ġ{ Ġit . build Validators ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Names ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies ?. let Ġ{ Ġit . build Validators 2 ( sub Context ) Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEx ist ential Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠANY _ OF , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany Of ?. map Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . options . optimize Exist ential Validators ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEx ist ential Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ OF , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Of ?. map Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . options . optimize Exist ential Validators ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEx ist ential Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠONE _ OF , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of ?. map Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . options . optimize Exist ential Validators ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNot Validator . create ( not ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIf Then Else Validator . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Schema ?. build Validator ( sub Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthen Schema ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Schema ?. let Ġ{ Ġit . build Validator ( sub Context ) Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( validator List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠBoolean Value Validator ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġvalidator List . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠEx ist ential Validator . create ( ALL _ OF , Ġvalidator List , Ġtrue ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrecord Ids ( validator , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġreturn Ġvalidator ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠSimple Type Ġ{ ĊĠĠĠ ĠARRAY , ĊĠĠĠ ĠBOOLEAN , ĊĠĠĠ ĠINTEGER , ĊĠĠĠ ĠNULL , ĊĠĠĠ ĠNUMBER , ĊĠĠĠ ĠOBJECT , ĊĠĠĠ ĠSTRING ; ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString (). toLowerCase ( Locale . US ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠProperty Names Or Json Schema ( a : ĠSet < String >? Ġ= Ġnull , Ġb : ĠJson Schema ? Ġ= Ġnull ) Ġ: ĊĠĠĠ ĠAltern atives < Set < String >, ĠJson Schema >( a , Ġb ) Ċ Ċ fun ĠProperty Names Or Json Schema . build Validator ( context : ĠValidation Builder Context ): ĠSchema Validator Ġ{ ĊĠĠĠ Ġa ?. let Ġ{ Ġreturn ĠObject Validator ( required Ġ= Ġa ) Ġ} ĊĠĠĠ Ġb ?. let Ġ{ Ġreturn Ġb . build Validator ( context ) Ġ} ĊĠĠĠ Ġthrow ĠIllegalStateException () Ċ } Ċ