package Ġdev . mean mail . psi Ċ Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġcom . intellij . psi . Psi Reference Base Ċ import Ġdev . mean mail . resolve File Ċ Ċ interface ĠReference Element Ġ: ĠNamed Element Ġ{ ĊĠĠĠ Ġval Ġref : ĠString Ċ } Ċ Ċ class ĠReference ( element : ĠReference Element ) Ġ: ĊĠĠĠ ĠPsi Reference Base < Reference Element >( element , Ġnull , Ġfalse ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġresolve (): ĠPsi Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve File ( element . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve File ( ref : ĠString ): ĠPsi Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= Ġelement . containing File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . containing Directory ?. virtual File Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġresolve File ( ref , Ġdirectory ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPsi Manager . getInstance ( element . project ). find File ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Range In Element (): ĠText Range Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠText Range ( 0 , Ġelement . text Length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Element Rename ( new ElementName : ĠString ): ĠPsi Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Element Ġ= Ġelement . setName ( new ElementName ) ĊĠĠĠĠĠĠĠ Ġelement . parent . node . replace Child ( element . node , Ġnew Element . node ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Element ĊĠĠĠ Ġ} Ċ } Ċ