package Ġorg . elm . ide . intent ions . ex posure Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . elm . lang . core . psi . Elm Psi Factory Ċ import Ġorg . elm . lang . core . psi . elements . Elm Ex posed Type Ċ Ċ /** Ċ Ġ* ĠFor Ġa Ġcustom Ġtype Ġwhich Ġis Ġalready Ġexposed , Ġbut Ġwhose Ġvariants Ġaren 't , Ġthis Ġexposes Ġthe Ġvariants , Ġi . e . Ġchanges Ċ Ġ* Ġ` ex posing Ġ( My Type )` Ġto Ġ` ex posing Ġ( My Type (.. )) `. Ċ Ġ*/ Ċ class ĠEx pose Variants Int ention Ġ: ĠVariant Exposure Int ention () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetText () Ġ= Ġ" Expose Ġvariants " ĊĊĠĠĠ Ġoverride Ġval ĠEl m Ex posed Type . isValid For Replacement : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! this . ex poses All ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . ex posed Type . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEl m Psi Factory ( project ). create Type With Variants Exposure ( context . ex posed Type . reference Name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ