   }
 
   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

  private func handleRemoval(
    changeTreeNode: NSTreeNode, newChildUrls: Set<URL>
  ) {
    let indexPathsToRemove =
      changeTreeNode.children?
        .filter { child in

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

    changeTreeNode.children?
      .filter { child in
        guard let url = child.node?.url else { return true }
        return newChildUrls.contains(url) == false
      }
      .forEach { treeNode in
        self.log.default(treeNode.node)
      }

    self.treeController.removeObjects(
      atArrangedObjectIndexPaths: indexPathsToRemove
    )
