 
   public func extract(selection: Selection) -> Void?
   {
+    assertionFailure("\(__FUNCTION__) shouldn't be getting called")
     return self.receive()
   }
 }

/**
  A timer class implemented as a `ReceiverType`.

  The timer takes either a dispatch_time_t or a positive time offset in nanoseconds.
  The `ReceiverType` will close after that amount of time has passed.
  In the meantime, the channel has no capacity, therefore any attempt to receive from it will block.
  However, as soon as the channel closes receiving operations will unblock and return `nil`.
*/

  }


  public var selectable: Bool { return closedState == 0 }

  public func selectNotify(select: ChannelSemaphore, selection: Selection)
  {
    dispatch_after(closingTime, dispatch_get_global_queue(qos_class_self(), 0)) {
      [weak self] in
      guard let this = self else { return }

      this.close()
      if select.setState(.Invalidated)
      {
        select.signal()
      }
    }
