     let address: UInt
     
     var hashValue: Int {
-        return reinterpretCast(address)
+        return unsafeBitCast(address, Int.self)
     }
     
     var description: String {

    return withUnsafePointer(&x) {
        (ptr: UnsafePointer<T>) -> ScanResult in
        
        let firstAddr: Pointer = Pointer(address: reinterpretCast(ptr))
        let firstEntry = ScanEntry(parent: nil, parentOffset: 0, address: firstAddr, index: 0)
        seen[firstAddr] = true
        toScan.append(firstEntry)

    static func dumpObjectClasses(p: Printer, _ obj: AnyObject) {
        var classPtr: AnyClass! = object_getClass(obj)
        while classPtr {
            ObjCClass(address: Pointer(address: unsafeBitCast(classPtr, UInt.self)), name: String.fromCString(class_getName(classPtr))!).dump(p)
            classPtr = class_getSuperclass(classPtr)
        }
    }
