     }
     func didChange(itemsToLoad: URLItem.ItemsToLoad?, sortOrder: URLItem.SortOrder?, filter: URLItem.ArchiveFilter?, sender: ViewControllerSender) {
         switch sender {
-        case .sourceListVC, .tertiaryVC:
+        case .tertiaryVC:
             fatalError()
+        case .sourceListVC:
+            self.changingSelectionProgrammaticaly = true
+            fallthrough
         case .contentVC:
             guard let itemsToLoad = itemsToLoad else { return }
             switch itemsToLoad {

        self.data = self.realmController?.tag_loadAll()
        self.notificationToken = self.data?.addNotificationBlock(self.realmResultsChangeClosure)
    }
    
    private lazy var realmResultsChangeClosure: ((RealmCollectionChange<Results<TagItem>>) -> Void) = { [weak self] changes in
        switch changes {

        }
    }
    
    // MARK: Selection Super Hack
    
    // Normally programmatically causing something to change does not cause delegate callbacks for that change to be called
    // However, for Outline view, programatically selecting things does cause the selectionDidChange callback to be called
    // So now I am storing some state that says whether the selection was changed programatically or not
    
    // // https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/TableView/RowSelection/RowSelection.html
    // // The selectRowIndexes:byExtendingSelection: method expects an NSIndexSet containing the indexes (zero-based) of 
    // // the rows to be selected, and a parameter that specifies whether the current selection should be extended. 
    // // If the extending selection parameter is YES, the specified row indexes are selected in addition to any previously selected rows; 
    // // if it’s NO, the selection is changed to the newly specified rows. When this method is called, the delegate receives 
    // // only the tableViewSelectionDidChange: notification.
    
    func outlineViewSelectionDidChange(_ notification: Notification) {
        defer {
            self.changingSelectionProgrammaticaly = false
        }
        guard let selection = self.selection, self.changingSelectionProgrammaticaly == false else { return }
        self.selectionDelegate?.didChange(itemsToLoad: selection.itemsToLoad, sortOrder: selection.sortOrder, filter: selection.filter, sender: .sourceListVC)
    }
}
