     if true {
       let selector = #selector(setTargetRect(_:in:))
       let origIMP = class_getMethodImplementation(self, selector)
-      typealias IMPType = @convention(c) (AnyObject, Selector, CGRect, UIView) -> ()
-      let origIMPC = unsafeBitCast(origIMP, to: IMPType.self)
-      let block: @convention(block) (AnyObject, CGRect, UIView) -> () = {
-        if let firstResp = UIResponder.mik_firstResponder {
-          swizzle(type(of: firstResp.mik_responderToSwizzle))
-        } else {
-          // Must call `becomeFirstResponder` since there's no firstResponder yet
-          if let n = $2.mik_viewControllerInChain {
-            swizzle(type(of: n))
-            n.becomeFirstResponder()
-          } else {
-            swizzle(type(of: $2))
-            $2.becomeFirstResponder()
-          }
-        }
-
+      typealias IMPType = @convention(c) (AnyObject, Selector, CGRect, UIView) -> Void
+      let origIMPC = unsafeBitCast(origIMP, to: IMPType.self)
+      let block: @convention(block) (AnyObject, CGRect, UIView) -> Void = {
+        swizzleUIObject($2);
+        origIMPC($0, selector, $1, $2)
+      }
+
+      setNewIMPWithBlock(block, forSelector: selector, toClass: self)
+    }
+
+    if #available(iOS 13.0, *) {
+      let selector = #selector(showMenu(from:rect:))
+      let origIMP = class_getMethodImplementation(self, selector)
+      typealias IMPType = @convention(c) (AnyObject, Selector, UIView, CGRect) -> Void
+      let origIMPC = unsafeBitCast(origIMP, to: IMPType.self)
+      let block: @convention(block) (AnyObject, UIView, CGRect) -> Void = {
+        swizzleUIObject($1);
         origIMPC($0, selector, $1, $2)
       }
 

    if true {
      let selector = #selector(setter: frame)
      let origIMP = class_getMethodImplementation(self, selector)
      typealias IMPType = @convention(c) (UILabel, Selector, CGRect) -> ()
      let origIMPC = unsafeBitCast(origIMP, to: IMPType.self)
      let block: @convention(block) (UILabel, CGRect) -> () = { label, rect in
        let isImageItem = UIMenuController.shared.findImageItemByTitle(label.text)?.imageBox.value != nil
        let rect = isImageItem ? label.superview?.bounds ?? rect : rect
        origIMPC(label, selector, rect)

    if true {
      let selector = #selector(drawText(in:))
      let origIMP = class_getMethodImplementation(self, selector)
      typealias IMPType = @convention(c) (UILabel, Selector, CGRect) -> Void
      let origIMPC = unsafeBitCast(origIMP, to: IMPType.self)
      let block: @convention(block) (UILabel, CGRect) -> Void = { label, rect in
        guard
          let item = UIMenuController.shared.findImageItemByTitle(label.text),
          let _ = item.imageBox.value
