             }
         }
     }
+
+    private func generateStructOrdinaryPropertyInArray(with key: String, debug: Bool, level: Int, into string: inout String) {
+        if case .null(let optionalValue) = self {
+            indent(with: level, into: &string)
+            let type: String
+            if let value = optionalValue {
+                type = "\(value.type)"
+            } else {
+                type = "UnknownType"
+            }
+            string += "let \(key.coolie_lowerCamelCase) = info[\"\(key)\"] as? [\(type)]\n"
+        } else {
+            if isHyperString {
+                indent(with: level, into: &string)
+                string += "guard let \(key.coolie_lowerCamelCase)Strings = info[\"\(key)\"] as? [String] else { "
+                string += debug ? "print(\"Not found url key: \(key)\"); return nil }\n" : "return nil }\n"
+                indent(with: level, into: &string)
+                string += "let \(key.coolie_lowerCamelCase) = \(key.coolie_lowerCamelCase)Strings.map({ URL(string: $0) }).flatMap({ $0 })"
+            } else {
+                indent(with: level, into: &string)
+                string += "guard let \(key.coolie_lowerCamelCase) = info[\"\(key)\"] as? \(type) else { "
+                string += debug ? "print(\"Not found key: \(key)\"); return nil }\n" : "return nil }\n"
+            }
+        }
+    }
+
+    private func generateStructOptionalOrdinaryPropertyInArray(with key: String, debug: Bool, level: Int, into string: inout String) {
+        if case .null(let optionalValue) = self {
+            indent(with: level, into: &string)
+            let type: String
+            if let value = optionalValue {
+                type = "\(value.type)"
+            } else {
+                type = "UnknownType"
+            }
+            string += "let \(key.coolie_lowerCamelCase) = info[\"\(key)\"] as? [\(type)]\n"
+        } else {
+            if isHyperString {
+                indent(with: level, into: &string)
+                string += "guard let \(key.coolie_lowerCamelCase)Strings = info[\"\(key)\"] as? [String?] else { "
+                string += debug ? "print(\"Not found url key: \(key)\"); return nil }\n" : "return nil }\n"
+                indent(with: level, into: &string)
+                string += "let \(key.coolie_lowerCamelCase) = \(key.coolie_lowerCamelCase)Strings.map({ $0.flatMap({ URL(string: $0) })"
+            } else {
+                indent(with: level, into: &string)
+                string += "let \(key.coolie_lowerCamelCase) = info[\"\(key)\"] as? [\(type)?]\n"
+            }
+        }
+    }*/
 }

                        string += "let \(key.coolie_lowerCamelCase) = \(key.coolie_lowerCamelCase)JSONArray.map({ \(key.capitalized.coolie_dropLastCharacter)(\(trueArgumentLabel)$0) }).flatMap({ $0 })\n"
                    }
                } else {
                    unionValue.generateStructOrdinaryProperty(with: key, debug: debug, level: level, into: &string)
                }
            }
        } else { // no union value

                generateStructArrayProperty(with: key, jsonDictionaryName: jsonDictionaryName, constructorName: constructorName, trueArgumentLabel: trueArgumentLabel, debug: debug, level: level + 2, into: &string)
            }
        } else {
            generateStructOrdinaryProperty(of: .normal, with: key, debug: debug, level: level + 2, into: &string)
        }
    }

