 
   public func determine(value: T) throws
   {
-    super.setState(.Executing)
     try super.setValue(value)
   }
 
-  public func beginExecution()
+  public override func beginExecution()
   {
-    super.setState(.Executing)
+    super.beginExecution()
   }
 }

  {
    self.init()

    guard setState(.Executing) else { fatalError("Could not start task in \(__FUNCTION__)") }
    dispatch_async(queue) {
      try! self.setValue(task())
    }

import Dispatch

/**
  The possible states of a `Deferred`.

  Must be a top-level type because Deferred is generic.
*/

public enum DeferredState: Int32 { case Waiting = 0, Executing = 1, Determined = 2 }
private let transientState = Int32.max

/**
  These errors can be thrown by a `Deferred`.

  Must be a top-level type because Deferred is generic.
*/
