package Ġcom . val b 3 r . bpmn . intellij . plugin . commons . lang injection Ċ Ċ import Ġcom . intellij . lang . Language Ċ import Ġcom . intellij . lang . injection . Multi Host Injector Ċ import Ġcom . intellij . lang . injection . Multi Host Registrar Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Psi Language Injection Host Ċ import Ġcom . intellij . psi . Psi Literal Expression Ċ import Ġjava . util .* Ċ Ċ private Ġval Ġcurrent File Ġ= ĠCollections . synchronized Map ( Weak HashMap < Project , Ġ ĠPsi File >()) Ċ Ċ fun Ġregister Current File ( project : ĠProject , Ġfile : ĠPsi File ) Ġ{ ĊĠĠĠ Ġcurrent File [ project ] Ġ= Ġfile Ċ } Ċ Ċ fun ĠgetCurrent File ( project : ĠProject ): ĠPsi File Ġ{ ĊĠĠĠ Ġreturn Ġcurrent File [ project ] !! Ċ } Ċ Ċ abstract Ġclass ĠDefault Delegate Expression Ui Injector : ĠMulti Host Injector Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġelements To Inject In (): ĠMutable List < out ĠClass < out ĠPsi Element >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf ( Psi Literal Expression :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Language sTo Inject ( regist rar : ĠMulti Host Registrar , Ġcontext : ĠPsi Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠPsi Language Injection Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected File Ġ= Ġcurrent File . get ( context . project ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( context . containing File Ġ!= Ġexpected File Ġ&& Ġcontext . containing File ?. context ?. containing File Ġ!= Ġexpected File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! context . text . contains (" [$ # ]\\ { ". to Regex ()) Ġ|| Ġ! context . text . contains (" } ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinject Sp el ( context , Ġregist rar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject Sp el ( context : ĠPsi Language Injection Host , Ġregist rar : ĠMulti Host Registrar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġcontext . text ĊĠĠĠĠĠĠĠ Ġval Ġbean Name Ġ= ĠLanguage . get Registered Languages (). first Ġ{ Ġit . id Ġ== Ġ" Sp EL " Ġ} !! ĊĠĠĠĠĠĠĠ Ġregist rar . start Inject ing ( bean Name ) ĊĠĠĠĠĠĠĠ Ġregist rar . add Place ("", Ġ"", Ġcontext , ĠText Range ( 3 , Ġtext . length Ġ- Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġregist rar . done Inject ing () ĊĠĠĠ Ġ} Ċ }