package Ġorg . are nd . int ention Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġorg . are nd . psi . Are nd Expr Ċ import Ġorg . are nd . psi . Are nd File Ċ import Ġorg . are nd . psi . Are nd Literal Ċ Ċ class ĠWrap In Goal Int ention Ġ: ĠSelection Int ention < Are nd Expr >( Are nd Expr :: class . java , Ġ" Wrap Ġselected Ġinto Ġa Ġgoal ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Available ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠAre nd File , Ġelement : ĠAre nd Expr ) Ġ= ĊĠĠĠĠĠĠĠ Ġ( element Ġas ? ĠAre nd Literal )?. goal Ġ== Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠAre nd File , Ġelement : ĠAre nd Expr , Ġselected : ĠText Range ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġbetter Ġto Ġuse ĠPsi Element 's Ġmutation ĠAPI ĠI Ġbelieve ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor . document ĊĠĠĠĠĠĠĠ Ġassert ( document . is Writable ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Range Ġ= Ġelement . text Range ĊĠĠĠĠĠĠĠ Ġval Ġchars Ġ= Ġdocument . immutable CharSequence ĊĠĠĠĠĠĠĠ Ġif Ġ( chars [ text Range . start Offset ] Ġ== Ġ'(' Ġ&& Ġchars [ text Range . end Offset Ġ- Ġ 1 ] Ġ== Ġ') ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( text Range . end Offset , Ġ" }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( text Range . start Offset , Ġ"{ ?") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( text Range . end Offset , Ġ" )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( text Range . start Offset , Ġ"{ ? (" ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }