 /// - `Dictionary` - this case have an associated value, a dictionary with `NSString` type for keys and `LBJSON` objects for values.
 /// - `Number` - this case have an associated value, an `NSNumber` object.
 /// - `String` - this case have an associated value, an `NSString` object.
-/// - `Null` - this case doesn't have an associated value and is used where `NSNull` if found in the parsed `JSON` object.
-/// - `Nil` - this case doesn't have an associated value and is used in the failable initializer when the `JSON` param is `nil` and as a default case.
+/// - `Nil` - this case doesn't have an associated value and is used in the failable initializer when the `JSON` param is `NSNull` or `nil` and as a default case.
 public enum LBJSON {
     
-    case Array([LBJSON])
-    case Dictionary([NSString:LBJSON])
+    indirect case Array([LBJSON])
+    indirect case Dictionary([NSString:LBJSON])
     case Number(NSNumber)
     case String(NSString)
-    case Null
     case Nil
     
     

            return nrObject.description
        case .String(let strObject):
            return strObject.description
        case .Null:
            return "NSNull"
        default:
            return "Nil"
        }

            case let theObject as NSString:
                self = LBJSON.String(theObject)
            case _ as NSNull:
                self = LBJSON.Nil
            default:
                self = Nil
            }
