             }
         }
     }
+    
+    private func validate() {
+        if valid != State.valid {
+            NSException(name: NSInternalInconsistencyException,
+                reason: "Attempting to use invalid DispatchTimer",
+                userInfo: nil).raise()
+        }
+    }
 }
    :param: now     true, if the timer should fire immediately.
    */
    public func start(now: Bool) {
        if OSAtomicCompareAndSwap32Barrier(State.paused, State.running, &running) {
            if now {
                self.shouldFireImmediately = true

    Pauses the timer and does not reset the count.
    */
    public func pause() {
        validate()
        if OSAtomicCompareAndSwap32Barrier(State.running, State.paused, &running) {
            dispatch_suspend(timer)
        }
