   private func handleRemoval(
     changeTreeNode: NSTreeNode, newChildUrls: Set<URL>
   ) {
+    // FileOutlineView is deinit'ed a bit after Neovim is closed.
+    // If Neovim deletes for example a temporary file, then handleRemoval is
+    // called after the self.content is frozen. Thus, we make the controller
+    // not editable when unbinding, see FileOutlineView.unbindTreeController,
+    // and check here before modifying.
+    guard self.treeController.isEditable else { return }
+
     let indexPathsToRemove =
       changeTreeNode.children?
         .filter { child in

        }
        .map { $0.indexPath } ?? []

    self.treeController.removeObjects(
      atArrangedObjectIndexPaths: indexPathsToRemove
    )

  }

  private func reloadRoot() {
    // See comment in FileOutlineView.handleRemoval.
    guard self.treeController.isEditable else { return }

    let children = self.childNodes(for: self.root)

    self.root.children = children
