package Ġorg . l uk as j . idea . tor ques cript . annot ator Ċ Ċ import Ġcom . intellij . lang . annotation . Annotation Holder Ċ import Ġcom . intellij . lang . annotation . Highlight Severity Ċ import Ġcom . intellij . openapi . editor . markup . Text Attributes Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . l uk as j . idea . tor ques cript . editor . T SS yntax Highlighting Colors Ċ import Ġorg . l uk as j . idea . tor ques cript . engine . Engine ApiService Ċ import Ġorg . l uk as j . idea . tor ques cript . psi . impl . TS Function Call Expression Element Impl Ċ import Ġorg . l uk as j . idea . tor ques cript . reference . Reference Util Ċ import Ġorg . l uk as j . idea . tor ques cript . psi . impl . TS Function Statement Element Impl Ċ import Ġorg . l uk as j . idea . tor ques cript . psi . impl . TS FunctionType Ċ Ċ class ĠTS MethodCall Annot ator Ġ: ĠTS Annot ator () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġannotate ( element : ĠPsi Element , Ġholder : ĠAnnotation Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġengine ApiService Ġ= Ġelement . project . getService ( Engine ApiService :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠTS Function Statement Element Impl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġelement . get Function Identifier () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Element Ġ= Ġidentifier . last Child ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( last Element , Ġholder , ĠT SS yntax Highlighting Colors . FUNCTION _ DECL AR ATION ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Element . prev Sibling ?. prev Sibling Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnamespace Ġ= Ġidentifier . firstChild ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Reference Util . find Object ( element . project , Ġelement . text ). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . OBJECT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( engine ApiService . find Class ( namespace . text ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . BUIL TIN _ CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( element Ġis ĠTS Function Call Expression Element Impl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element . function Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTS FunctionType . GLOBAL _ NS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnamespace Ġ= Ġelement . get Expression (). firstChild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Name Ġ= Ġelement . get Expression (). last Child ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Reference Util . find Object ( element . project , Ġnamespace . text ). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . OBJECT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( engine ApiService . find Class ( namespace . text ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . BUIL TIN _ CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( namespace , Ġholder , ĠT SS yntax Highlighting Colors . CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( engine ApiService . find Function ( function Name . text ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( function Name , Ġholder , ĠT SS yntax Highlighting Colors . BUIL TIN _ FUNCTION _ CALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( function Name , Ġholder , ĠT SS yntax Highlighting Colors . FUNCTION _ CALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTS FunctionType . GLOBAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Name Ġ= Ġelement . get Expression (). firstChild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( engine ApiService . find Function ( function Name . text ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( element . get Expression (). firstChild , Ġholder , ĠT SS yntax Highlighting Colors . BUIL TIN _ FUNCTION _ CALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success Annotation ( element . get Expression (). firstChild , Ġholder , ĠT SS yntax Highlighting Colors . FUNCTION _ CALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }