 public func =<|<T: JSONStaticCreatable>(inout lhs: T?, value: JSONDictionary.Value?) {
     lhs = <|value
 }
+    
+public func =<|<T: JSONCreatable>(inout lhs: [T], value: JSONDictionary.Value?) {
+    if let val: Array<T.JSONType> = <|value { lhs = <|val }
+}
+
+public func =<|<T: JSONStaticCreatable>(inout lhs: [T], value: JSONDictionary.Value?) {
+    if let val: Array<T.JSONType> = <|value,
+        let arr: Array<T> = <|val { lhs = arr }
+}
+
+public func =<|<T: JSONCreatable>(inout lhs: [T]?, value: JSONDictionary.Value?) {
+    if let val = value { lhs =<| val }
+}
+
+public func =<|<T: JSONStaticCreatable>(inout lhs: [T]?, value: JSONDictionary.Value?) {
+    if let val = value { lhs =<| val }
+}
 
 public func =<|<T: JSONCreatable>(inout lhs: T, value: T.JSONType) {
     lhs = <|value

public func =<|<T: JSONStaticCreatable>(lhs: inout T?, value: T.JSONType?) {
    lhs = <|value
}
#else
public func =<|<T>(inout lhs: T, value: JSONDictionary.Value?) {
    if let v: T = <|value { lhs = v }
}

        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: JSONObject?, to output: inout T) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: JSONObject?, to output: inout T) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: JSONObject?, to output: inout T?) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: JSONObject?, to output: inout T?) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: JSONObject?, to output: inout [T]) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: JSONObject?, to output: inout [T]) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: JSONObject?, to output: inout [T]?) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: JSONObject?, to output: inout [T]?) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: T.JSONType, to output: inout T) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: T.JSONType, to output: inout T) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: T.JSONType?, to output: inout T?) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: T.JSONType?, to output: inout T?) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: [T.JSONType], to output: inout [T]) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: [T.JSONType], to output: inout [T]) {
        output =<| value
    }
    
    public static func map<T: JSONCreatable>(value: [T.JSONType]?, to output: inout [T]?) {
        output =<| value
    }
    
    public static func map<T: JSONStaticCreatable>(value: [T.JSONType]?, to output: inout [T]?) {
        output =<| value
    }
    #else
    public static func convert<T: JSONCreatable>(value: Array<T.JSONType>) -> [T] {
        return <|value
    }
    
    public static func convert<T: JSONCreatable>(value: Array<T.JSONType>?) -> [T]? {
        return <|value
    }
    
    public static func convert<T: JSONStaticCreatable>(value: Array<T.JSONType>?) -> [T]? {
        return <|value
    }
    
