   }
 
   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

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

    self.treeController.removeObjects(
      atArrangedObjectIndexPaths: indexPathsToRemove
    )

  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
