         get { return objc_getAssociatedObject(self, &ckmHiddenRegular) as? [Constraint] ?? [Constraint]() }
         set(newValue) { objc_setAssociatedObject(self, &ckmHiddenRegular, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) }
     }
-    
+
     fileprivate var hiddenCompactConstraints: [Constraint]! {
         get { return objc_getAssociatedObject(self, &ckmHiddenCompact) as? [Constraint] ?? [Constraint]() }
         set(newValue) { objc_setAssociatedObject(self, &ckmHiddenCompact, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) }
     }
-    
-    private dynamic func keyboardWillShow(notification: Notification){
-        let duration = (notification as NSNotification).userInfo![UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval
-        let option = (notification as NSNotification).userInfo![UIKeyboardAnimationCurveUserInfoKey] as! NSNumber
-        
+
+    @objc private dynamic func keyboardWillShow(notification: Notification) {
+        let duration = (notification as NSNotification).userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
+        let option = (notification as NSNotification).userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! NSNumber
+
         switch traitCollection.verticalSizeClass {
         case .regular:
             hiddenRegularConstraints.forEach { $0.deactivate() }

    func keyboard(_ shown: Bool, in view: UIView) -> ConstraintMakerEditable {
        switch view.traitCollection.verticalSizeClass {
        case .regular:
            if shown { view.shownRegularConstraints.append(constraint) }
            else { view.hiddenRegularConstraints.append(constraint) }
        case .compact:
            if shown { view.shownCompactConstraints.append(constraint) }
            else { view.hiddenCompactConstraints.append(constraint) }
        case .unspecified: break
        }
        return self

            shownCompactConstraints.forEach { $0.activate() }
        case .unspecified: break
        }

        UIView.animate(withDuration: duration, delay: 0,
                       options: UIView.AnimationOptions(rawValue: option.uintValue), animations: {
                        self.layoutIfNeeded()
        }, completion: nil)
    }

    @objc private dynamic func keyboardWillHide(notification: Notification) {
        let duration = (notification as NSNotification).userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
        let option = (notification as NSNotification).userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! NSNumber

        switch traitCollection.verticalSizeClass {
        case .regular:
            shownRegularConstraints.forEach { $0.deactivate() }
