/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . nj 2 k . conversions Ċ Ċ import Ġorg . jetbrains . kotlin . nj 2 k . New J 2 k Converter Context Ċ import Ġorg . jetbrains . kotlin . nj 2 k . equals Expression Ċ import Ġorg . jetbrains . kotlin . nj 2 k . symbols . dee pe st Fq Name Ċ import Ġorg . jetbrains . kotlin . nj 2 k . tree .* Ċ import Ġorg . jetbrains . kotlin . nj 2 k . tree . impl . JK Parent hesized Expression Impl Ċ Ċ class ĠEquals Operator Conversion ( private Ġval Ġcontext : ĠNew J 2 k Converter Context ) Ġ: ĠRecursive Applicable Conversion Base () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply To Element ( element : ĠJ K Tree Element ): ĠJ K Tree Element Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġ! is ĠJ K Qualified Expression ) Ġreturn Ġrecurse ( element ) ĊĠĠĠĠĠĠĠ Ġif Ġ( element . receiver Ġis ĠJ KS uper Expression ) Ġreturn Ġrecurse ( element ) ĊĠĠĠĠĠĠĠ Ġval Ġselector Ġ= Ġelement . selector Ġas ? ĠJ K MethodCall Expression Ġ?: Ġreturn Ġ( element ) ĊĠĠĠĠĠĠĠ Ġval Ġargument Ġ= Ġselector . arguments . arguments . single OrNull () Ġ?: Ġreturn Ġrecurse ( element ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selector . identifier . dee pe st Fq Name () Ġ== Ġ" java . lang . Object . equals ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrecurse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ K Parent hesized Expression Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequals Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement :: receiver . det ached (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument :: value . det ached (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . symbol Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrecurse ( element ) ĊĠĠĠ Ġ} Ċ }