     public init(dictionaryLiteral elements: (String, Any) ...) {
         var dictionary = [String: Any](minimumCapacity: elements.count)
         for (key, value) in elements {
-            dictionary[key] = (value as? Json)?.value! ?? value
+            dictionary[key] = Json.unwrap(value)
         }
         self.init(value: dictionary)
     }

        self.value = value
    }
    public init<S : Sequence>(_ elements: S) {
        self.value = elements.map { ($0 as? Json)?.value! ?? $0 }
    }
    public init(_ elements: [String: Any]) {
        var dictionary = [String: Any](minimumCapacity: elements.count)
        for (key, value) in elements {
            dictionary[key] = (value as? Json)?.value! ?? value
        }
        self.value = dictionary
    }

    fileprivate init(value: Any?) {
        self.value = value
    }
    
    static func unwrap(_ value: Any) -> Any? {
        if let json = value as? Json {
            return json.value
        }
        return value
    }
}

extension Json {
