             types["availablePermissions"] = .uiCloudSharingPermissionOptions
         }
 
+        // UIImagePickerController support
+        // Added here so we can avoid referencing UIImagePickerController in the code
+        // as this causes App Store submission issues if the app isn't using the feature
+        if "\(self)" == "UIImagePickerController" {
+            types["cameraCaptureMode"] = .uiImagePickerControllerCameraCaptureMode
+            types["cameraDevice"] = .uiImagePickerControllerCameraDevice
+            types["cameraFlashMode"] = .uiImagePickerControllerCameraFlashMode
+            types["imageExportPreset"] = .uiImagePickerControllerImageURLExportPreset
+            types["sourceType"] = .uiImagePickerControllerSourceType
+            types["videoQuality"] = .uiImagePickerControllerQualityType
+            // TODO: validate media types
+            // TODO: validate videoExportPreset
+            #if arch(i386) || arch(x86_64)
+                // Private properties
+                for name in [
+                    "allowsImageEditing",
+                    "initialViewControllerClassName",
+                    "photosExtension",
+                ] {
+                    types[name] = nil
+                }
+            #endif
+        }
+
         return types
     }
 

            if #available(iOS 11.0, *) {
                navigationItem.largeTitleDisplayMode = value as! UINavigationItem.LargeTitleDisplayMode
            }
        default:
            if name.hasPrefix("navigationItem.leftBarButtonItem."), navigationItem.leftBarButtonItem == nil {
                navigationItem.leftBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
            } else if name.hasPrefix("navigationItem.rightBarButtonItem."), navigationItem.rightBarButtonItem == nil {
                navigationItem.rightBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
            }
            try _setValue(value, ofType: type(of: self).cachedExpressionTypes[name], forKeyPath: name)
        }

    }
}

extension UIInputViewController {
    open override class var expressionTypes: [String: RuntimeType] {
        var types = super.expressionTypes
