 
 public class Deferred<T>
 {
-  private var r: Result<T>! = nil
+  private var r: Result<T>
   private let group = dispatch_group_create()
 
   // Swift does not have a facility to read and write enum values atomically.


    currentState = DeferredState.Executing.rawValue
    dispatch_async(queue) {
      let result: Result<T>
      do {    result = .Value(try task()) }
      catch { result = .Error(error) }

      do {  try self.setResult(result) }
      catch { /* an error here means this `Deferred` was canceled before `task()` was complete. */ }
    }

  case Canceled(String)
  case AlreadyDetermined(String)
  case CannotDetermine(String)
  case Undetermined
}

/**
