package Ġcom . d inh hu y 2 5 8 . v intellij . hover Ċ Ċ import Ġcom . d inh hu y 2 5 8 . v intellij . buffer . Buffer Ċ import Ġcom . d inh hu y 2 5 8 . v intellij . utils . invoke And Wait Ċ import Ġcom . d inh hu y 2 5 8 . v intellij . utils . run Read Action Ċ import Ġcom . d inh hu y 2 5 8 . v intellij . utils . strip Html Ċ import Ġcom . intellij . code Insight . documentation . Documentation Manager Ċ import Ġcom . intellij . openapi . editor . Logical Position Ċ import Ġcom . intellij . openapi . util . Ref Ċ import Ġorg . apache . commons . lang 3 . StringUtils . isBlank Ċ import Ġorg . eclipse . lsp 4 j . Mark edString Ċ import Ġorg . eclipse . lsp 4 j . Position Ċ import Ġorg . eclipse . lsp 4 j . jsonrpc . messages . Either Ċ Ċ fun Ġget Hover Doc ( buffer : ĠBuffer ?, Ġposition : ĠPosition ): ĠList < Either < String , ĠMark edString >> Ġ{ ĊĠĠĠ Ġif Ġ( buffer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġhover Doc Ref Ġ= ĠRef < String >() ĊĠĠĠ Ġinvoke And Wait Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Read Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġbuffer . psi File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġbuffer . editor . editor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġeditor . logical Position To Offset ( Logical Position ( position . line , Ġposition . character )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Reference Ġ= Ġpsi File . find Reference At ( offset ) Ġ?: Ġreturn @ run Read Action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Element Ġ= Ġpsi Reference . resolve () Ġ?: Ġreturn @ run Read Action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Element Ġ= Ġpsi Reference . element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocumentation Manager Ġ= ĠDocumentation Manager . get Provider From Element ( original Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhover Doc Ġ= Ġdocumentation Manager . generate Hover Doc ( psi Element , Ġoriginal Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhover Doc Ref . set ( hover Doc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġhover Doc Ġ= Ġhover Doc Ref . get () ĊĠĠĠ Ġif Ġ( isBlank ( hover Doc )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstripped Hover Doc Ġ= Ġstrip Html ( hover Doc ) ĊĠĠĠ Ġval Ġdocs Ġ= Ġstripped Hover Doc . split ("\\ r ? \\ n ") ĊĊĠĠĠ Ġreturn Ġdocs . map Ġ{ ĊĠĠĠĠĠĠĠ ĠEither . for Left ( it ) ĊĠĠĠ Ġ} Ċ } Ċ