 
     self.handleRemovals(for: fileBrowserItem, new: newChildren)
     self.handleAdditions(for: fileBrowserItem, new: newChildren)
+    fileBrowserItem.isChildrenScanned = true
+
     fileBrowserItem.children.filter { self.isItemExpanded($0) }.forEach(self.update)
   }
 

    var stack = [self.root]

    while let item = stack.popLast() {
      if item.isChildrenScanned == false {
        item.children = FileUtils.directDescendants(of: item.url).map(FileBrowserItem.init)
        item.isChildrenScanned = true
      }

      itemsToExpand.append(item)

      if item.url.isDirectParent(of: url) {

// MARK: - NSOutlineViewDataSource
extension FileOutlineView {

  fileprivate func scanChildrenIfNecessary(_ fileBrowserItem: FileBroswerItem) {
    guard fileBrowserItem.isChildrenScanned == false else {
      return
    }

    fileBrowserItem.children = self.sortedChildren(of: fileBrowserItem.url)
    fileBrowserItem.isChildrenScanned = true
  }

  fileprivate func prepare(_ children: [FileBrowserItem]) -> [FileBrowserItem] {
    return self.isShowHidden ? children : children.filter { !$0.url.isHidden }
  }

  func outlineView(_: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {
    if item == nil {
      self.scanChildrenIfNecessary(self.root)

      return self.prepare(self.root.children).count
    }
