     if contains(.SizeIncrease)     { s.append(.SizeIncrease) }
     if contains(.LinkCountChange)  { s.append(.LinkCountChange) }
     if contains(.AccessRevocation) { s.append(.AccessRevocation) }
+    if contains(.Unlock)           { s.append(.Unlock) }
     return s
   }
 }

  case SizeIncrease
  case LinkCountChange
  case AccessRevocation
}

public struct SKQueueNotification: OptionSet {

  }

  public static let None             = SKQueueNotification(rawValue: 0)
  public static let Rename           = SKQueueNotification(rawValue: UInt32(NOTE_RENAME))
  public static let Write            = SKQueueNotification(rawValue: UInt32(NOTE_WRITE))
  public static let Delete           = SKQueueNotification(rawValue: UInt32(NOTE_DELETE))
  public static let AttributeChange  = SKQueueNotification(rawValue: UInt32(NOTE_ATTRIB))
  public static let SizeIncrease     = SKQueueNotification(rawValue: UInt32(NOTE_EXTEND))
  public static let LinkCountChange  = SKQueueNotification(rawValue: UInt32(NOTE_LINK))
  public static let AccessRevocation = SKQueueNotification(rawValue: UInt32(NOTE_REVOKE))
  public static let Unlock           = SKQueueNotification(rawValue: UInt32(NOTE_FUNLOCK))
  public static let Default          = SKQueueNotification(rawValue: UInt32(INT_MAX))

  public func toStrings() -> [SKQueueNotificationString] {
    var s = [SKQueueNotificationString]()
