/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 - 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 . psi . impl . plugin Ċ Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . psi . AST Wrapper Psi Element Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . sequences . children Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . sequences . filter Is ElementType Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . sequences . siblings Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xd m . types . X dm ItemType Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xd m . types . X dm Node Item Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xd m . types . X dm Wildcard Value Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xd m . types . Xs QName Value Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . ast . plugin . Plugin Post fix Lookup Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . ast . xpath . XPath NC Name Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . ast . xpath . XPath StringLiteral Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . ast . xpath . XPath Var Ref Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xpath . lexer . XPath TokenType Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . lang . validation . X pm Syntax Validation Element Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . opt ree . expression . X pm Expression Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . opt ree . expression . impl . X dm Wildcard Expression Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . opt ree . expression . impl . Xs NC Name Expression Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . opt ree . path . X pm Axis Type Ċ Ċ class ĠPlugin Post fix Lookup Psi Impl ( node : ĠAST Node ) Ġ: ĊĠĠĠ ĠAST Wrapper Psi Element ( node ), ĠPlugin Post fix Lookup , ĠX pm Syntax Validation Element Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠKEY _ EXPRESSION Ġ= ĠKey . create < X pm Expression >(" KEY _ EXPRESSION ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġregion ĠPsi Element ĊĊĠĠĠ Ġoverride Ġfun Ġsubtree Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . sub tree Changed () ĊĠĠĠĠĠĠĠ Ġclear UserData ( KEY _ EXPRESSION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion ĠX pm Path Step ĊĊĠĠĠ Ġoverride Ġval Ġaxis Type : ĠX pm Axis Type Ġ= ĠX pm Axis Type . Self ĊĊĠĠĠ Ġoverride Ġval ĠnodeName : ĠX s QName Value ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġnode Type : ĠX dm ItemType Ġ= ĠX dm Node Item ĊĊĠĠĠ Ġoverride Ġval Ġpredicate Expression : ĠX pm Expression ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion ĠX pm Lookup Expression ĊĊĠĠĠ Ġoverride Ġval Ġexpression Element : ĠPsi Element ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġchildren (). filter Is ElementType ( XPath TokenType . OPTIONAL ). first () ĊĊĠĠĠ Ġoverride Ġval Ġcontext Expression : ĠX pm Expression ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfirst Child Ġas ĠX pm Expression ĊĊĠĠĠ Ġoverride Ġval Ġkey Expression : ĠX pm Expression ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcompute UserData If Absent ( KEY _ EXPRESSION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpression Element . siblings (). map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠX pm Expression Ġ-> Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠXPath NC Name Ġ-> ĠX s NC Name Expression ( it . local Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠX dm Wildcard Value Ġ-> ĠX dm Wildcard Expression ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. first () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion ĠX pm Syntax Validation Element ĊĊĠĠĠ Ġoverride Ġval Ġcon formance Element : ĠPsi Element ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( val Ġlookup Ġ= Ġkey Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠXPath StringLiteral Ġ-> Ġlookup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠXPath Var Ref Ġ-> Ġlookup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġexpression Element ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region Ċ } Ċ