/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 1 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . migration . actions Ċ Ċ import Ġcom . intellij . code Insight . File Modification Service Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġorg . jetbrains . kotlin . idea . util . application . run Write Action Ċ import Ġorg . jetbrains . migration . core . IR Interface Code Insight Action Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Or Object Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ Ċ class ĠExternal ize Interface Action Ġ: ĠIR Interface Code Insight Action () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠisValid For Class ( target Class : ĠK t Class Or Object ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġtarget Class Ġis ĠK t Class Ġ&& Ġtarget Class . is Interface () Ġ&& Ġtarget Class . has Modifier ( Kt Tokens . EXTERNAL _ KEYWORD ). not () ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Class Ġ= Ġget Target Class OrNull ( editor , Ġfile ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġis ĠK t File Ġ&& ĠFile Modification Service . getInstance (). prepare File For Write ( target Class . containing Kt File )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( target Class . has Modifier ( Kt Tokens . EXTERNAL _ KEYWORD ). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ Ġtarget Class . add Modifier ( Kt Tokens . EXTERNAL _ KEYWORD ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} Ċ }