             var swiftOutput = ""
             for key in object.children.keys {
                 if let value: JSONValueNode = object.children[key] {
-                    if let array = value as? JSONArrayNode {
-                        swiftOutput += "var \(key.camelCased): [\(array.elementType)]\n"
+                    if let object = value as? JSONObjectNode {
+                        swiftOutput += self.indentString + "var \(key.camelCased): \(object.name)\n"
+                    } else if let array = value as? JSONArrayNode {
+                        swiftOutput += self.indentString + "var \(key.camelCased): [\(array.elementType)]\n"
                     } else {
-                        swiftOutput += "var \(key.camelCased): \(value.type)\n"
+                        swiftOutput += self.indentString + "var \(key.camelCased): \(value.type)\n"
                     }
                 }
             }

            var swiftOutput: String = ""
            for key in object.children.keys {
                if let value = object.children[key] as? JSONObjectNode {
                    swiftOutput += swiftifyObject(value)
                }
            }
            return swiftOutput
        }
        
        var swiftOutput = ""
        swiftOutput += "class \(object.name) {\n"
        swiftOutput += swiftifyVariableDeclarations()
        swiftOutput += swiftifyInit()
        swiftOutput += swiftifyClassDeclarations()
        swiftOutput += "}\n"
        return swiftOutput
    }
}

    }
    
    var swiftifiedJSON: String = ""
    var indentLevel = 0
    var indentString: String {
        return String(repeating: " ", count: self.indentLevel * 4)
    }
    
    func swiftifyJSON(_ value: JSONValueNode, with name: String?) throws {
        var swiftOutput = ""
