úÎ e    (c) Naoto Shimazaki 2017MIT (see the file LICENSE)https://github.com/nshimaza experimentalSafe:<= 3Mutable map containing thread ID and finish marker.{FinishMarker is created as empty MVar when a thread is created. It is automatically filled by () when the thread exits.Create a new empty .-Create a new thread and register it to given .$Kill all thread registered in given .3Create new empty finish marker. Internal use only.`Filling MVar of finish marker to mark thread finished. Only used by cleanup routine internally. TWait for finish marker marked. Only used by killThreadHierarchy routine internally. ÎThread clean up routine automatically installed by newChild. It first killThreadHierarchy all its child threads and unregister itself. This function is not an API function but for internal use only. 8ThreadMap where newly created thread will be registered.&Action executed within the new thread.,newChild returns ThreadId of created thread.)ThreadMap containing threads to be killed    (c) Naoto Shimazaki 2017MIT (see the file LICENSE)https://github.com/nshimaza experimentalSafe     /thread-hierarchy-0.1.0.2-GlYsY5vsYN245mbd6hmWVy$Control.Concurrent.HierarchyInternalControl.Concurrent.Hierarchy ThreadMap FinishMarker newThreadMapnewChildkillThreadHierarchynewFinishMarker markFinish waitFinishcleanup$fEqFinishMarker