/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 1 ĠRe ece ĠH . ĠD un n Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġuk . co . re ec ed un n . intellij . plugin . xpath . code Inspection . ij vs Ċ Ċ import Ġcom . intellij . code Inspection . Inspection Manager Ċ import Ġcom . intellij . code Inspection . Problem Descriptor Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . code Inspection . Inspection Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . sequences . walk Tree Ċ import Ġuk . co . re ec ed un n . intellij . plugin . intellij . lang .* Ċ import Ġuk . co . re ec ed un n . intellij . plugin . intellij . resources . X Query Plugin Bundle Ċ import Ġuk . co . re ec ed un n . intellij . plugin . sax on . lang . S ax on EE Ċ import Ġuk . co . re ec ed un n . intellij . plugin . sax on . lang . S ax on HE Ċ import Ġuk . co . re ec ed un n . intellij . plugin . sax on . lang . S ax on PE Ċ import Ġuk . co . re ec ed un n . intellij . plugin . w 3 . lang . W 3 C Spec ifications Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . lang . Full Text Spec Ġas ĠFull Text Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . X pm Language Version Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . X pm Product Version Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . configuration . X pm Language Configuration Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . diagnostics . X pm Diagnostics Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . diagnostics . X pm Inspection Diagnostics Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . validation . X pm Syntax Validation Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x query . ast . x query . X Query Module Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x query . lang . Script ing Spec Ġas ĠScript ing Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x query . lang . Update Facility Spec Ġas ĠUpdate Facility Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x query . lang . X Query Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x query . project . settings . X Query Project Settings Ċ import Ġuk . co . re ec ed un n . intellij . plugin . base x . lang . Base X Ġas ĠBase X Product Ċ import Ġuk . co . re ec ed un n . intellij . plugin . exist db . lang . EX ist DB Ġas ĠEX ist DB Product Ċ import Ġuk . co . re ec ed un n . intellij . plugin . mark logic . lang . Mark Logic Ġas ĠMark Logic Product Ċ Ċ private Ġfun Ġsupports ( a : ĠSpecification , Ġb : ĠVersion ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( a ) Ġ{ ĊĠĠĠĠĠĠĠ ĠX Query Spec . MARK LOGIC _ 0 _ 9 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . MARK LOGIC _ 0 _ 9 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . WD _ 1 _ 0 _ 2 0 0 3 0 5 0 2 ĊĠĠĠĠĠĠĠ ĠX Query Spec . MARK LOGIC _ 1 _ 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb . kind Ġ=== ĠMark Logic Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . MARK LOGIC _ 1 _ 0 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . REC _ 1 _ 0 _ 2 0 0 7 0 1 2 3 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . REC _ 3 _ 0 _ 2 0 1 4 0 4 0 8 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ=== ĠX Query Spec . REC _ 3 _ 1 _ 2 0 1 7 0 3 2 1 ĊĠĠĠĠĠĠĠ ĠX Query Spec . REC _ 1 _ 0 _ 2 0 0 7 0 1 2 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ!== ĠX Query Spec . WD _ 1 _ 0 _ 2 0 0 3 0 5 0 2 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ!== ĠX Query Spec . MARK LOGIC _ 0 _ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . value Ġ>= Ġb . value ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . value Ġ>= Ġb . value ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠI J VS 0 0 0 1 Ġ: ĠIns pection (" ij vs / IJ VS 0 0 0 1 . md ", ĠI J VS 0 0 0 1 :: class . java . class Loader ) Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġget Product Version ( product : ĠProduct , Ġversion : ĠVersion ): ĠX pm Product Version Ġ= Ġwhen Ġ( version ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 6 _ 1 Ġ-> ĠBase X Product . VERSION _ 6 _ 1 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 7 _ 7 Ġ-> ĠBase X Product . VERSION _ 7 _ 7 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 7 _ 8 Ġ-> ĠBase X Product . VERSION _ 7 _ 8 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 8 _ 4 Ġ-> ĠBase X Product . VERSION _ 8 _ 4 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 8 _ 5 Ġ-> ĠBase X Product . VERSION _ 8 _ 5 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 8 _ 6 Ġ-> ĠBase X Product . VERSION _ 8 _ 6 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 9 _ 0 Ġ-> ĠBase X Product . VERSION _ 8 _ 6 ĊĠĠĠĠĠĠĠ ĠBase X . VERSION _ 9 _ 1 Ġ-> ĠBase X Product . VERSION _ 9 _ 1 ĊĠĠĠĠĠĠĠ ĠEX ist DB . VERSION _ 3 _ 0 Ġ-> ĠEX ist DB Product . VERSION _ 3 _ 0 ĊĠĠĠĠĠĠĠ ĠEX ist DB . VERSION _ 3 _ 1 Ġ-> ĠEX ist DB Product . VERSION _ 3 _ 1 ĊĠĠĠĠĠĠĠ ĠEX ist DB . VERSION _ 3 _ 6 Ġ-> ĠEX ist DB Product . VERSION _ 3 _ 6 ĊĠĠĠĠĠĠĠ ĠEX ist DB . VERSION _ 4 _ 0 Ġ-> ĠEX ist DB Product . VERSION _ 4 _ 0 ĊĠĠĠĠĠĠĠ ĠEX ist DB . VERSION _ 4 _ 3 Ġ-> ĠEX ist DB Product . VERSION _ 4 _ 3 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 4 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 6 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 5 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 6 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 6 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 6 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 7 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 7 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 8 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 8 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 9 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 9 ĊĠĠĠĠĠĠĠ ĠMark Logic . VERSION _ 1 0 _ 0 Ġ-> ĠMark Logic Product . VERSION _ 9 ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 4 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 5 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 6 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 7 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 8 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 8 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 9 _ 9 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 9 _ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 9 _ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 9 _ 9 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS ax on . VERSION _ 1 0 _ 0 Ġ-> Ġwhen Ġ( product ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . HE Ġ-> ĠS ax on HE . VERSION _ 1 0 _ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ax on . PE Ġ-> ĠS ax on PE . VERSION _ 1 0 _ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ax on EE . VERSION _ 1 0 _ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠW 3 C Spec ifications . REC ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget X Query Version ( version : ĠSpecification ): ĠX pm Language Version Ġ= Ġwhen Ġ( version ) Ġ{ ĊĠĠĠĠĠĠĠ ĠX Query Spec . WD _ 1 _ 0 _ 2 0 0 3 0 5 0 2 , ĠX Query Spec . MARK LOGIC _ 0 _ 9 Ġ-> ĠX Query . VERSION _ 0 _ 9 _ ML ĊĠĠĠĠĠĠĠ ĠX Query Spec . MARK LOGIC _ 1 _ 0 Ġ-> ĠX Query . VERSION _ 1 _ 0 _ ML ĊĠĠĠĠĠĠĠ ĠX Query Spec . REC _ 1 _ 0 _ 2 0 0 7 0 1 2 3 , ĠX Query Spec . REC _ 1 _ 0 _ 2 0 1 0 1 2 1 4 Ġ-> ĠX Query . VERSION _ 1 _ 0 ĊĠĠĠĠĠĠĠ ĠX Query Spec . REC _ 3 _ 0 _ 2 0 1 4 0 4 0 8 Ġ-> ĠX Query . VERSION _ 3 _ 0 ĊĠĠĠĠĠĠĠ ĠX Query Spec . REC _ 3 _ 1 _ 2 0 1 7 0 3 2 1 , ĠX Query Spec . CR _ 3 _ 1 _ 2 0 1 5 1 2 1 7 Ġ-> ĠX Query . VERSION _ 3 _ 1 ĊĠĠĠĠĠĠĠ ĠX Query Spec . ED _ 4 _ 0 _ 2 0 2 1 0 1 1 3 Ġ-> ĠX Query . VERSION _ 4 _ 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠX Query . VERSION _ 1 _ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Language Configuration ( ĊĠĠĠĠĠĠĠ Ġx query : ĠSpecification , ĊĠĠĠĠĠĠĠ Ġproduct : ĠProduct , ĊĠĠĠĠĠĠĠ Ġversion : ĠVersion ĊĠĠĠ Ġ): ĠX pm Language Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠX pm Language Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget X Query Version ( x query ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Product Version ( product , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( product . con forms To ( version , ĠFull Text Spec . REC _ 1 _ 0 _ 2 0 1 1 0 3 1 7 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . implements ( Full Text . REC _ 1 _ 0 _ 2 0 1 1 0 3 1 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( product . con forms To ( version , ĠFull Text Spec . REC _ 3 _ 0 _ 2 0 1 5 1 1 2 4 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . implements ( Full Text . REC _ 3 _ 0 _ 2 0 1 5 1 1 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( product . con forms To ( version , ĠUpdate Facility Spec . REC _ 1 _ 0 _ 2 0 1 1 0 3 1 7 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . implements ( Update Facility . REC _ 1 _ 0 _ 2 0 1 1 0 3 1 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( product . con forms To ( version , ĠUpdate Facility Spec . NOTE _ 3 _ 0 _ 2 0 1 7 0 1 2 4 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . implements ( Update Facility . NOTE _ 3 _ 0 _ 2 0 1 7 0 1 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( product . con forms To ( version , ĠScript ing Spec . NOTE _ 1 _ 0 _ 2 0 1 4 0 9 1 8 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . implements ( Script ing . NOTE _ 1 _ 0 _ 2 0 1 4 0 9 1 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconfiguration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck File ( file : ĠPsi File , Ġmanager : ĠIns pection Manager , Ġis On The Fly : ĠBoolean ): ĠArray < Problem Descriptor >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ! is ĠX Query Module ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠX Query Project Settings . getInstance ( file . project ) ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġsettings . product ĊĠĠĠĠĠĠĠ Ġval Ġproduct Version Ġ= Ġsettings . product Version ĊĠĠĠĠĠĠĠ Ġval Ġx query Ġ= Ġfile . X Query Version . getVersion OrDefault ( file . project ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdiagnostics Ġ= ĠX pm Inspection Diagnostics ( manager , Ġis On The Fly ) ĊĠĠĠĠĠĠĠ Ġfile . walk Tree (). filter Is Instance < Version Con formance >(). forEach Ġ{ Ġversion ed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequired Ġ= Ġversion ed . requires Con formance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( required . isEmpty ()) Ġreturn @ forEach ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( required . find Ġ{ Ġversion Ġ-> Ġproduct . con forms To ( product Version , Ġversion ) Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġversion ed . con formance Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! context . text Range . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ( versioned Ġas ? ĠVersion Con formance Name )?. con formance Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX Query Plugin Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" inspection . XP ST 0 0 0 3 . unsupported - construct - with - name . message ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired . join ToString (", Ġor Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX Query Plugin Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" inspection . XP ST 0 0 0 3 . unsupported - construct . message ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired . join ToString (", Ġor Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagnostics . error ( context , ĠX pm Diagnostics . XP ST 0 0 0 3 , Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequired X Query Ġ= Ġrequired . filter Ġ{ Ġreq Ġ-> Ġreq Ġis ĠSpecification Ġ|| Ġreq . kind Ġ=== ĠMark Logic Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( required X Query . isEmpty ()) Ġreturn @ forEach ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( required X Query . find Ġ{ Ġversion Ġ-> Ġsupports ( x query , Ġversion ) Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġversion ed . con formance Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! context . text Range . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĠX Query Plugin Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" inspection . XP ST 0 0 0 3 . unsupported - construct - version . message ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx query . version Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired . join ToString (", Ġor Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagnostics . error ( context , ĠX pm Diagnostics . XP ST 0 0 0 3 , Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= ĠX pm Syntax Validation () ĊĠĠĠĠĠĠĠ Ġvalidator . configuration Ġ= Ġget Language Configuration ( x query , Ġproduct , Ġproduct Version ) ĊĠĠĠĠĠĠĠ Ġvalidator . validate ( file , Ġdiagnostics ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdiagnostics . to Typed Array () ĊĠĠĠ Ġ} Ċ } Ċ