 
 Example: let running = synchronized(self) { return true }
 */
-public func synchronized<T>(lock: AnyObject, closure: () -> T) -> T {
+public func synchronized<T>(lock: AnyObject, @noescape closure: () -> T) -> T {
     objc_sync_enter(lock)
     let result: T = closure()
     objc_sync_exit(lock)

    
    - parameter closure: Closure to execute inside of the lock.
    */
    public func around(closure: () -> Void) {
        OSSpinLockLock(&spinlock)
        closure()
        OSSpinLockUnlock(&spinlock)

    - parameter closure: Closure to execute inside of the lock.
    - returns: The result of the closure.
    */
    public func around<T>(@noescape closure: () -> T) -> T {
        OSSpinLockLock(&spinlock)
        let result: T = closure()
        OSSpinLockUnlock(&spinlock)
