 
 import UIKit
 fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (l?, r?):
-    return l < r
-  case (nil, _?):
-    return true
-  default:
-    return false
-  }
+    switch (lhs, rhs) {
+    case let (l?, r?):
+        return l < r
+    case (nil, _?):
+        return true
+    default:
+        return false
+    }
 }
 
 fileprivate func > <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (l?, r?):
-    return l > r
-  default:
-    return rhs < lhs
-  }
+    switch (lhs, rhs) {
+    case let (l?, r?):
+        return l > r
+    default:
+        return rhs < lhs
+    }
 }
 
 

                                    let value = array[0] as! AnyObject
                                    if value.isKind(of: NSDictionary.self) {
                                        if let mirror = propertyMirrorFor(object, name: propertyKey) {
                                            if mirror.displayStyle == .optional {
                                                var typeName = unwrappedClassName(String(describing: mirror.subjectType))
                                                typeName = unwrappedArrayElementClassName(typeName)
                                                var mirrorClass = NSClassFromString(typeName!)
                                                if mirrorClass == nil {
                                                    var appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
                                                    appName = appName.replacingOccurrences(of: " ", with: "_")
                                                    mirrorClass = NSClassFromString(appName + "." + typeName!)
                                                }
                                                let mirrorType: NSObject.Type = mirrorClass.self as! NSObject.Type
                                                setValueOfObject(object, value: fromJsonArray(json[key] as? [[String: AnyObject]], clazz: mirrorType)! as AnyObject, key: propertyKey)
                                            }else{
                                                let typeName = unwrappedArrayElementClassName(String(describing: mirror.subjectType))
                                                var mirrorClass = NSClassFromString(typeName!)
                                                if mirrorClass == nil {
                                                    var appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
                                                    appName = appName.replacingOccurrences(of: " ", with: "_")
                                                    mirrorClass = NSClassFromString(appName + "." + typeName!)
                                                }
                                                let mirrorType: NSObject.Type = mirrorClass.self as! NSObject.Type
                                                setValueOfObject(object, value: fromJsonArray(json[key] as? [[String: AnyObject]], clazz: mirrorType)! as AnyObject, key: propertyKey)
                                            }
                                        }else{

        return unwrappedClassName
    }
    
    func unwrappedImplicitClassName(_ string: String?) -> String? {
        var unwrappedClassName: String? = string
        if string?.characters.count > 29 {
            if (string?.substring(to: (string?.characters.index((string?.startIndex)!, offsetBy: 28))!))! == "ImplicitlyUnwrappedOptional<" {
                unwrappedClassName = string?.substring(to: (string?.characters.index((string?.startIndex)!, offsetBy: (string?.characters.count)! - 1))!)
                unwrappedClassName = unwrappedClassName?.substring(from: (unwrappedClassName?.characters.index((unwrappedClassName?.startIndex)!, offsetBy: 28))!)
            }
        }
        return unwrappedClassName
    }
    
    func unwrappedArrayElementClassName(_ string: String?) -> String? {
        var unwrappedClassName: String? = string
        if string?.characters.count > 6 {
