     // The initial instances are proxies
     // On document deserialization the collection are populated.
 
-    open dynamic var users=UsersCollectionController(){
-        willSet{
-            users.document=self
-        }
-    }
-
-    open dynamic var lockers=LockersCollectionController(){
-        willSet{
-            lockers.document=self
-        }
-    }
-
-    open dynamic var pushOperations=PushOperationsCollectionController(){
-        willSet{
-            pushOperations.document=self
-        }
-    }
-
+	open dynamic var users=UsersCollectionController(){
+		willSet{
+			users.document=self
+		}
+	}
+	
+	open dynamic var lockers=LockersCollectionController(){
+		willSet{
+			lockers.document=self
+		}
+	}
+	
+	open dynamic var pushOperations=PushOperationsCollectionController(){
+		willSet{
+			pushOperations.document=self
+		}
+	}
+	
 
     // MARK: - Array Controllers and automation (OSX)
-    #if os(OSX) && !USE_EMBEDDED_MODULES
+ #if os(OSX) && !USE_EMBEDDED_MODULES
 
 
     // KVO


    // MARK: - OSX specific

    #if os(OSX) && !USE_EMBEDDED_MODULES

    // MARK: KVO


    override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    guard context == &_KVOContext else {
    // If the context does not match, this message
    // must be intended for our superclass.
    super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
    return
    }
    // We prefer to centralize the KVO for selection indexes at the top level
    if let keyPath = keyPath, let object = object {


    if keyPath=="selectionIndexes" && self.usersArrayController == object as? NSArrayController {
    if let users = self.usersArrayController?.selectedObjects as? [User] {
    if let selectedUser = self.selectedUsers{
    if selectedUser == users{
    return // No changes
    }
    }
    self.selectedUsers=users
    }
    return
    }



    if keyPath=="selectionIndexes" && self.lockersArrayController == object as? NSArrayController {
    if let lockers = self.lockersArrayController?.selectedObjects as? [Locker] {
    if let selectedLocker = self.selectedLockers{
    if selectedLocker == lockers{
    return // No changes
    }
    }
    self.selectedLockers=lockers
    }
    return
    }



    if keyPath=="selectionIndexes" && self.pushOperationsArrayController == object as? NSArrayController {
    if let pushOperations = self.pushOperationsArrayController?.selectedObjects as? [PushOperation] {
    if let selectedPushOperation = self.selectedPushOperations{
    if selectedPushOperation == pushOperations{
    return // No changes
    }
    }
    self.selectedPushOperations=pushOperations
    }
    return
    }


    }

    }

    // MARK:  Delete currently selected items

    open func deleteSelectedUsers() {
    // you should override this method if you want to cascade the deletion(s)
    if let selected=self.selectedUsers{
    for item in selected{
    self.users.removeObject(item, commit:true)
    }
    }
    }


    open func deleteSelectedLockers() {
    // you should override this method if you want to cascade the deletion(s)
    if let selected=self.selectedLockers{
    for item in selected{
    self.lockers.removeObject(item, commit:true)
    }
    }
    }


    open func deleteSelectedPushOperations() {
    // you should override this method if you want to cascade the deletion(s)
    if let selected=self.selectedPushOperations{
    for item in selected{
    self.pushOperations.removeObject(item, commit:true)
    }
    }
    }



    #else

        }
    }
    var firstSelectedUser:User? { return self.selectedUsers?.first }
        
        

    
    static open let kSelectedLockersIndexesKey="selectedLockersIndexesKey"
    static open let LOCKERS_SELECTED_INDEXES_CHANGED_NOTIFICATION="LOCKERS_SELECTED_INDEXES_CHANGED_NOTIFICATION"
    dynamic open var selectedLockers:[Locker]?{
        didSet{
            if let lockers = selectedLockers {
                 let indexes:[Int]=lockers.map({ (locker) -> Int in
                    return self.lockers.index(where:{ return $0.UID == locker.UID })!
                })
                self.registryMetadata.stateDictionary[BartlebyDocument.kSelectedLockersIndexesKey]=indexes
