/* Ċ Ġ* Ġ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 . idea . intent ions Ċ Ċ import Ġcom . intellij . code Insight . int ention . Low Priority Action Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . core . move Caret Ċ import Ġorg . jetbrains . kotlin . idea . core . re placed Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . psi . Kt Dot Qualified Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Psi Factory Ċ import Ġorg . jetbrains . kotlin . psi . create Expression By Pattern Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . start Offset Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . fq Name OrNull Ċ Ċ class ĠSwap String Equals IgnoreCase Int ention Ġ: ĊĠĠĠ ĠSelf Target ing Range Int ention < Kt Dot Qualified Expression >( Kt Dot Qualified Expression :: class . java , ĠKotlin Bundle . message (" flip . equals ")), ĊĠĠĠ ĠLow Priority Action Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapplic ability Range ( element : ĠK t Dot Qualified Expression ): ĠText Range ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġelement . get Callable Descriptor () Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġfq Name : ĠF q Name Ġ= Ġdescriptor . fq Name OrNull () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( fq Name . asString () Ġ!= Ġ" kotlin . text . equals ") Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġvalue Parameters Ġ= Ġdescriptor . value Parameters . take If Ġ{ Ġit . size Ġ== Ġ 2 Ġ} Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ(! Kotlin Built Ins . isString Or Nullable String ( value Parameters [ 0 ]. type )) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ(! Kotlin Built Ins . is Boolean ( value Parameters [ 1 ]. type )) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġelement . call Expression ?. callee Expression ?. text Range ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Dot Qualified Expression , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Expression Ġ= Ġelement . call Expression Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ( editor ?. caret Model ?. offset Ġ?: Ġ 0 ) Ġ- Ġ( call Expression . callee Expression ?. start Offset Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Expression Ġ= Ġelement . receiver Expression ĊĠĠĠĠĠĠĠ Ġval Ġvalue Arguments Ġ= Ġcall Expression . value Arguments . take If Ġ{ Ġit . size Ġ== Ġ 2 Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew Element Ġ= ĠK t Psi Factory ( element ). create Expression By Pattern ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ 0 . equals ($ 1 , Ġ$ 2 )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Arguments [ 0 ]. get Argument Expression () !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Expression , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Arguments [ 1 ]. text ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġreplaced Element Ġ= Ġelement . re placed ( new Element ) Ġas ? ĠK t Dot Qualified Expression ĊĠĠĠĠĠĠĠ Ġreplaced Element ?. call Expression ?. callee Expression ?. start Offset ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor ?. move Caret ( it Ġ+ Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }