package Ġsu . nl q . idea . external izable . extractor Ċ Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Common Data Keys Ċ import Ġcom . intellij . psi . Psi Class Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Supplier Ċ Ċ class ĠPsi Class Extractor ( private Ġval Ġevent : ĠAn ActionEvent ) Ġ: ĠSupplier < Optional < Psi Class >> Ġ{ ĊĊĠ Ġoverride Ġfun Ġget (): ĠOptional < Psi Class > Ġ{ ĊĠĠĠ Ġreturn Ġoffset (). flatMap Ġ{ Ġelement ( it ) Ġ}. map Ġ{ ĠPsi Tree Util . getParent OfType ( it , ĠPsi Class :: class . java ) Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġoffset (): ĠOptional < Int > Ġ{ ĊĠĠĠ Ġreturn ĠOptional . of Nullable ( event . getData ( Common Data Keys . EDITOR )?. caret Model ?. offset ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġelement ( offset : ĠInt ): ĠOptional < Psi Element > Ġ{ ĊĠĠĠ Ġreturn ĠPsi Java File Extractor ( event ). get (). flatMap Ġ{ ĠOptional . of Nullable ( it . findElement At ( offset )) Ġ} ĊĠ Ġ} Ċ } Ċ