     fileprivate var rawNumber: NSNumber = 0
     fileprivate var rawNull: NSNull = NSNull()
     fileprivate var rawBool: Bool = false
-    /// Private type
-    fileprivate var _type: Type = .null
-    /// Private error
-    fileprivate var _error: SwiftyJSONError?
+    
+    /// JSON type, fileprivate setter
+    public fileprivate(set) var type: Type = .null
+    
+    /// Error in JSON, fileprivate setter
+    public fileprivate(set) var error: SwiftyJSONError?
 
     /// Object in JSON
     public var object: Any {

                if let o = self.rawDictionary[key] {
                    r = JSON(o)
                } else {
                    r._error = SwiftyJSONError.notExist
                }
            } else {
                r._error = self._error ?? SwiftyJSONError.wrongType
            }
            return r
        }

            }
        }
        set {
            error = nil
            switch unwrap(newValue) {
            case let number as NSNumber:
                if number.isBool {
                    type = .bool
                    self.rawBool = number.boolValue
                } else {
                    type = .number
                    self.rawNumber = number
                }
            case let string as String:
                type = .string
                self.rawString = string
            case _ as NSNull:
                type = .null
            case nil:
                type = .null
            case let array as [Any]:
                type = .array
                self.rawArray = array
            case let dictionary as [String : Any]:
                type = .dictionary
                self.rawDictionary = dictionary
            default:
                type = .unknown
                error = SwiftyJSONError.unsupportedType
            }
        }
    }

    /// The static null JSON
    @available(*, unavailable, renamed:"null")
