     dispatch_semaphore_wait(threadLock, DISPATCH_TIME_FOREVER)
 
     // got awoken
-    let context = UnsafePointer<T>(dispatch_get_context(threadLock))
+    let context = dispatch_get_context(threadLock)
     dispatch_set_context(threadLock, nil)
     SemaphorePool.enqueue(threadLock)
 

    dispatch_semaphore_wait(threadLock, DISPATCH_TIME_FOREVER)

    // got awoken
    let context = UnsafeMutablePointer<T>(dispatch_get_context(threadLock))
    dispatch_set_context(threadLock, nil)
    SemaphorePool.enqueue(threadLock)


      OSSpinLockUnlock(&lock)

      // attach a new copy of our data to the reader's semaphore
      let context = UnsafeMutablePointer<T>(dispatch_get_context(rs))
      switch context
      {
      case nil:
        preconditionFailure(__FUNCTION__)

      default:
        context.initialize(newElement)
        dispatch_semaphore_signal(rs)
        return true
      }
    }

    if closed
