 
 public extension ActionTrailing where Self: UIControl {
 
-    public final func addAction(block: Self -> Void, forControlEvents events: UIControlEvents) {
+    func addAction(block: Self -> Void, forControlEvents events: UIControlEvents) {
         self.setAction(block)
         self.addTarget(self, action: #selector(handleBlock), forControlEvents: events)
     }


public extension ActionTrailing where Self: UIGestureRecognizer {

    public final func addAction(block: Self -> Void) {
        self.setAction(block)
        self.addTarget(self, action: #selector(handleBlock))
    }
}
#endif

private extension ActionTrailing {

    func setAction(block: Self -> Void) {
        let obj: AnyObject = unsafeBitCast(ActionWrapper(f: block), AnyObject.self)
        objc_setAssociatedObject(self, &token, obj, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
    }
}

extension NSObject {
