package Ġutils Ċ Ċ import Ġcom . intellij . openapi . progress . run Background able Task Ċ import Ġdocker . volumes . Docker Volumes Bundle . message Pointer Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ inline Ġfun Ġ< K , ĠV > ĠMap < K , ĠV >. filter If ( do Filter : ĠBoolean , Ġpredicate : Ġ( Map . Entry < K , ĠV >) Ġ-> ĠBoolean ): ĠMap < K , ĠV > Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( do Filter ) Ġthis . filter ( predicate ) Ġelse Ġthis Ċ } Ċ Ċ inline Ġfun Ġ< V > ĠArray < V > ?. first Or ( or : Ġ() Ġ-> ĠV ) Ġ= Ġthis ?. first OrNull () Ġ?: Ġor () Ċ Ċ inline Ġfun Ġ< V > ĠCollection < V >. first Or ( or : Ġ() Ġ-> ĠV ): ĠV Ġ= Ġif Ġ( this . isEmpty ()) Ġor () Ġelse Ġthis . first () Ċ Ċ fun Ġ< V > ĠMutable List < V >. add If ( add : ĠBoolean , Ġelement : ĠV ) Ġ{ ĊĠĠĠ Ġif Ġ( add ) Ġthis . add ( element ) Ċ } Ċ Ċ fun Ġ< V > ĠSet < V >. minus If NotNull ( element : ĠV ?) Ġ= Ġif Ġ( element Ġ!= Ġnull ) Ġthis . minus ( element ) Ġelse Ġthis Ċ Ċ fun Ġrun Background Process ( process Builder : ĠProcess Builder , Ġtimeout : ĠLong ): ĠResult < Process > Ġ{ ĊĠĠĠ Ġval Ġprocess Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess Builder . start () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFailure ( e . message Ġ?: Ġ" Error Ġwhile Ġrunning Ġ${ process Builder . command (). join ToString ()} Ġcommand ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrun Background able Task ( message Pointer (" docker . background . task . title "), Ġnull , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess . waitFor ( timeout , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprocess . waitFor ( timeout , ĠTimeUnit . SECONDS ) ĊĊĠĠĠ Ġreturn ĠSuccess ( process ) Ċ } Ċ