     // Note the use of static var in a private nested struct—this pattern creates the static associated object key we need but doesn’t muck up the global namespace.
     // From http://nshipster.com/swift-objc-runtime/
 
-    struct AssociatedKeys {
-        static var AO: Any?
+    struct _fy_associatedKeys {
+        static var ao: Any?
     }
 
     class AssociateObject {


extension UIButton {

    struct uibutton_once {
        static var token: dispatch_once_t = 0
    }

    override public class func initialize() {
        dispatch_once(&uibutton_once.token) {
            _swizzle_layoutSubviews()
        }
    }


    override class func _swizzle_layoutSubviews() {
        let originalSelector = #selector(layoutSubviews)
        let swizzledSelector = #selector(_swizzled_layoutSubviews)
        let originalMethod = class_getInstanceMethod(self, originalSelector)
        let swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
        method_exchangeImplementations(originalMethod, swizzledMethod)
    }

    override func _swizzled_layoutSubviews() {
        _swizzled_layoutSubviews()
        ConstraintManager.layout(self)
    }
}
