     return nil
 }
 
-open class Thread: NSObject {
+open class Thread : NSObject {
     
     static internal var _currentThread = NSThreadSpecific<Thread>()
-    public static var current: Thread {
+    open class var current: Thread {
         return Thread._currentThread.get() {
             return Thread(thread: pthread_self())
         }
     }
+    
+    open class var isMainThread: Bool { NSUnimplemented() }
+    
+    // !!! NSThread's mainThread property is incorrectly exported as "main", which conflicts with its "main" method.
+    open class var mainThread: Thread { NSUnimplemented() }
 
     /// Alternative API for detached thread creation
     /// - Experiment: This is a draft API currently under consideration for official import into Foundation as a suitable alternative to creation via selector
     /// - Note: Since this API is under consideration it may be either removed or revised in the near future
-    open class func detachNewThread(_ main: @escaping (Void) -> Void) {
-        let t = Thread(main)
+    open class func detachNewThread(_ block: @escaping () -> Swift.Void) {
+        let t = Thread(block: block)
         t.start()
     }
     

        return true
    }
    
    open class func sleepUntilDate(_ date: Date) {
        let start_ut = CFGetSystemUptime()
        let start_at = CFAbsoluteTimeGetCurrent()
        let end_at = date.timeIntervalSinceReferenceDate

        }
    }

    open var isExecuting: Bool {
        return _status == .executing
    }

    open var isFinished: Bool {
        return _status == .finished
    }
    
    open var isCancelled: Bool {
        return _cancelled
    }
    
    open var isMainThread: Bool {
        NSUnimplemented()
    }
    
    open func cancel() {
        _cancelled = true
    }

    open class var callStackReturnAddresses: [NSNumber] {
        NSUnimplemented()
    }
    
    open class var callStackSymbols: [String] {
        NSUnimplemented()
    }
}

extension NSNotification.Name {
    public static let NSWillBecomeMultiThreaded = NSNotification.Name(rawValue: "") // NSUnimplemented
    public static let NSDidBecomeSingleThreaded = NSNotification.Name(rawValue: "") // NSUnimplemented
    public static let NSThreadWillExit = NSNotification.Name(rawValue: "") // NSUnimplemented
}
