 case Done
 }
 
-final class ChannelSemaphore
+// MARK: ChannelSemaphore
+
+final public class ChannelSemaphore
 {
   private var svalue: Int32
   private var semp = semaphore_t()
 
   private var currentState = ChannelSemaphoreState.Ready.rawValue
   private var pointer: UnsafeMutablePointer<Void> = nil
+
+  // MARK: init/deinit
 
   private init(value: Int32)
   {

  var info = mach_timebase_info(numer: 0, denom: 0)
  mach_timebase_info(&info)
  return info
  }()

// more or less copied from libdispatch/Source/time.c, _dispatch_timeout()


    }
  }

  // MARK: State Handling

  var rawState: Int32 { return currentState }
  var state: ChannelSemaphoreState { return ChannelSemaphoreState(rawValue: currentState)! }

