/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠN ie k ĠH aar man Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . n ha ar man . ac orn . navigation Ċ Ċ /** Ċ Ġ* ĠA Ġnon - thread - safe Ġ[ Disposable Handle ] Ġimplementation Ġthat Ġcan Ġserve Ċ Ġ* Ġas Ġa Ġcontainer Ġfor Ġmultiple Ġ[ Disposable Handle ] Ġinstances . Ċ Ġ*/ Ċ class ĠComposite Disposable Handle Ġ: ĠDis posable Handle Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Disposed Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġbag Ġ= Ġset Of < Disposable Handle >() ĊĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( d : ĠDis posable Handle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbag Ġ+= Ġd ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Disposed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbag . forEach Ġ{ Ġit . dispose () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDis poses Ġall Ġthe Ġ[ Disposable Handle ] Ġinstances Ġthis ĠComposite Disposable Handle ĊĠĠĠĠ Ġ* Ġcontains , Ġbut Ġdoes Ġnot Ġdispose Ġof Ġthis ĠComposite Disposable Handle Ġitself . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġbag . forEach Ġ{ Ġit . dispose () Ġ} ĊĠĠĠĠĠĠĠ Ġbag Ġ= Ġempty Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Disposed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Disposed ĊĠĠĠ Ġ} Ċ } Ċ