         return try getNumber().intValue
     }
     
+    public func getInt64() throws -> Int64 {
+        return try getNumber().int64Value
+    }
+    
     public func getString() throws -> String {
         guard let value = source as? String else {
             throw JAYSONError.FailedToGetString(source, self)

    case FailedToGetNumber(Any, JAYSON)
    case FailedToGetArray(Any, JAYSON)
    case InvalidJSONObject
}

public struct JAYSON: CustomDebugStringConvertible {

extension JAYSON {

    public func get<T>(_ s: (JAYSON) throws -> T) rethrows -> T {
        do {
            return try s(self)
        } catch {
            throw JAYSONError.DecodeError(source, self, error)
        }
    }
    
    public func get<T>(with decoder: Decoder<T>) throws -> T {
        do {
            return try decoder.decode(self)
        } catch {
            throw JAYSONError.DecodeError(source, self, error)
        }
    }
}

