 import Dispatch
 
 /**
-  An evocative name for a closure type sent back by a selectReceive() method.
-  Upon being run, a Signal should try to resume the thread spawned by selectReceive()
+  An evocative name for a closure type sent back by a selectNotify() method.
+  Upon being run, a Signal should try to resume the thread spawned by selectNotify()
   if said thread happens to be blocked.
 
-  This attempt may not always be successful, but if such cases the thread should
+  This attempt may not always be directly successful, but in such cases the thread should
   eventually be resumed, because there would be several threads contending for the channel.
   There are situations where the Signal could be the only hope to resume the thread,
-  because it is the only one waiting on its channel. In those cases the attempt should
+  because it is the only one waiting on its channel. In all such cases the attempt must
   unblock the thread successfully.
 */
 
 public typealias Signal = () -> ()
+
+/**
+  A useful fake pointer for use with dispatch_set_context() in Signal closures.
+*/
+
 public let abortSelect = UnsafeMutablePointer<Void>(bitPattern: 1)
 
 /**

  func selectNotify(semaphore: SingletonChan<dispatch_semaphore_t>, selectionID: Selectable) -> Signal

  /**
    If it makes no sense to invoke the selectReceive() method at this time, return false.
    If every Selectable in the list returns false, Select will assume that it should stop.
  */

  var selectable: Bool { get }
}

/**
  A particular kind of Anything.
*/

//public protocol SelectionType: class
//{
////  var selectable: Selectable { get }
////  func getMessageID() -> Selectable
//}

/**
  A channel that is Selectable should know how to extract data from one of these.
  After all, it should have created the object in its selectReceive() method.
*/

protocol SelectableChannelType: ChannelType
{

//  func insert(item: Selection) -> Bool
}


/**
  You can put anything in a Selection.
  It has a convenient, non-generic type,
  coupled to a decidedly generic accessor method.
*/

public class Selection
