 
 extension Struct {
 
+    var typeName: String {
+        return name.type
+    }
+
     func definition(indentation: Indentation = .default, meta: Meta = .default) -> String {
         let indent = indentation.value
         var lines: [String] = []
-        lines.append("\(indent)struct \(name) {")
+        lines.append("\(indent)struct \(typeName) {")
         properties.forEach {
             $0.nestedDefinition(indentation: indentation, meta: meta).flatMap {
                 lines.append($0)


extension Enum {

    func definition(indentation: Indentation = .default, meta: Meta = .default) -> String {
        let indent = indentation.value
        var lines: [String] = []
        lines.append("\(indent)enum \(name) {")
        lines.append("\(indent)}")
        return lines.joined(separator: "\n")
    }

        case let .primitive(p):
            _name = p.name
        case let .struct(s):
            _name = s.typeName
        case let .enum(e):
            _name = e.typeName
        }
        switch status {
        case .normal: return _name
        case .isOptional:
            if _name.hasSuffix("?") {
                return _name
            } else {
                return _name + "?"
            }
        case .inArray: return "[" + _name + "]"
        }
    }
