 }
 
 /// Extension customizing how NSDictionaries are wrapped
-extension NSDictionary: WrapCustomizable {
-    public func wrap(context: Any?, dateFormatter: DateFormatter?) -> Any? {
-        return try? Wrapper(context: context, dateFormatter: dateFormatter).wrap(dictionary: self as [NSObject : AnyObject])
-    }
-}
+#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)
+    extension NSDictionary: WrapCustomizable {
+        public func wrap(context: Any?, dateFormatter: DateFormatter?) -> Any? {
+            return try? Wrapper(context: context, dateFormatter: dateFormatter).wrap(dictionary: self as [NSObject : AnyObject])
+        }
+    }
+#endif
 
 /// Extension making Int a WrappableKey
 extension Int: WrappableKey {

public extension WrapCustomizable {
    /// Convert a given property name (assumed to be camelCased) to snake_case
    func convertPropertyNameToSnakeCase(propertyName: String) -> String {
        let regex = try! NSRegularExpression(pattern: "(?<=[a-z])([A-Z])|([A-Z])(?=[a-z])", options: [])
        let range = NSRange(location: 0, length: propertyName.characters.count)
        let camelCasePropertyName = regex.stringByReplacingMatches(in: propertyName, options: [], range: range, withTemplate: "_$1$2")
        return camelCasePropertyName.lowercased()

}

/// Extension making NSdate a WrappableDate
#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)
    extension NSDate: WrappableDate {
        public func wrap(dateFormatter: DateFormatter) -> String {
            return dateFormatter.string(from: self as Date)
        }
    }
#endif

// MARK: - Private

