/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . jetbrains . kotlin . idea . intent ions Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġorg . jetbrains . kotlin . psi . Kt Dot Qualified Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Expression Ċ Ċ class ĠReplace Substring With Substring After Int ention Ġ: ĠReplace Substring Int ention (" Replace Ġ' substring ' Ġcall Ġwith Ġ' substring After ' Ġcall ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapplic ability Range Inner ( element : ĠK t Dot Qualified Expression ): ĠText Range ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġelement . call Expression ?. value Arguments Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ== Ġ 1 Ġ&& Ġis IndexOf Call ( arguments [ 0 ]. get Argument Expression (), Ġelement . receiver Expression )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetText Range ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Dot Qualified Expression , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . replace With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ 0 . substring After ($ 1 )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . get Argument Expression ( 0 ) Ġas ĠK t Dot Qualified Expression ). get Argument Expression ( 0 )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠReplace Substring With Substring Before Int ention Ġ: ĠReplace Substring Int ention (" Replace Ġ' substring ' Ġcall Ġwith Ġ' substring Before ' Ġcall ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapplic ability Range Inner ( element : ĠK t Dot Qualified Expression ): ĠText Range ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġelement . call Expression ?. value Arguments Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ== Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġelement . is First Argument Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġis IndexOf Call ( arguments [ 1 ]. get Argument Expression (), Ġelement . receiver Expression )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetText Range ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Dot Qualified Expression , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . replace With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ 0 . substring Before ($ 1 )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . get Argument Expression ( 1 ) Ġas ĠK t Dot Qualified Expression ). get Argument Expression ( 0 )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠK t Dot Qualified Expression . get Argument Expression ( index : ĠInt ): ĠK t Expression Ġ{ ĊĠĠĠ Ġreturn Ġcall Expression !!. value Arguments [ index ]. get Argument Expression () !! Ċ } Ċ