         }
     }
 
+    class func revertReplacedPrepareForSegueIfNeeded() {
+        if nil != objc_getAssociatedObject(self, &swc_swizzled_already) {
+            objc_setAssociatedObject(self, &swc_swizzled_already, nil, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
+            let original = class_getInstanceMethod(self, "prepareForSegue:sender:")
+            let replaced = class_getInstanceMethod(self, "swc_wrapped_prepareForSegue:sender:")
+            method_exchangeImplementations(original, replaced)
+        }
+    }
+
     func replacePrepareForSegueIfNeeded() {
         self.dynamicType.replacePrepareForSegueIfNeeded()
+    }
+
+    func revertReplacedPrepareForSegueIfNeeded() {
+        self.dynamicType.revertReplacedPrepareForSegueIfNeeded()
     }
     
     func swc_wrapped_prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
         self.swc_wrapped_prepareForSegue(segue, sender: sender)
         self.swc_prepareForSegue(segue, sender: sender)
+
+        self.revertReplacedPrepareForSegueIfNeeded()
     }
 
     func swc_prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

//

import UIKit

// MARK: - SegueContext

public class SegueContext {
}

// MARK: - Context



        self.performSegueWithIdentifier(identifier, sender: sender)

#if !DISABLE_SWIZZLING
        objc_sync_exit(self.dynamicType)
#endif
    }

    public func presentViewControllerWithStoryboardName(storyboardName: String, identifier: String? = nil, bundle: NSBundle? = nil, animated: Bool = true, transitionStyle: UIModalTransitionStyle? = nil, context: Any? = nil, callback: Any? = nil) {
