// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ @ file : Jvm Name (" Facet TestUtils ") Ċ package Ġcom . intellij . facet . mock Ċ Ċ import Ġcom . intellij . facet . Facet Type Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . openapi . application . run Write Action And Wait Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ Ċ inline Ġfun Ġ< T > Ġrun With Registered Facet Types ( var arg Ġtypes : ĠFac et Type < *, Ġ* >, Ġaction : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠ Ġval Ġdis posable Ġ= ĠDis poser . new Disposable () ĊĠ Ġfor Ġ( type Ġin Ġtypes ) Ġ{ ĊĠĠĠ Ġregister Facet Type ( type , Ġdis posable ) ĊĠ Ġ} ĊĊĠ Ġtry Ġ{ ĊĠĠĠ Ġreturn Ġaction () ĊĠ Ġ} ĊĠ Ġfinally Ġ{ ĊĠĠĠ ĠDis poser . dispose ( dis posable ) ĊĠ Ġ} Ċ } ĊĊ Ċ fun Ġregister Facet Type ( type : ĠFac et Type < *, Ġ* >, Ġdis posable : ĠDis posable ) Ġ{ ĊĠ Ġval Ġfacet Type Disposable Ġ= ĠDis poser . new Disposable () ĊĠ ĠDis poser . register ( dis posable , ĠDis posable Ġ{ ĊĠĠĠ Ġrun Write Action And Wait Ġ{ ĊĠĠĠĠĠ ĠDis poser . dispose ( facet Type Disposable ) ĊĠĠĠ Ġ} ĊĠ Ġ}) ĊĠ Ġrun Write Action And Wait Ġ{ ĊĠĠĠ ĠFac et Type . EP _ NAME . point . register Extension ( type , Ġfacet Type Disposable ) ĊĠ Ġ} Ċ } Ċ