           themeChanged: state.appearance.theme.mark != self.lastThemeMark,
           usesTheme: state.appearance.usesTheme,
           forTheme: { self.updateTheme(state.appearance.theme) },
-          forDefaultTheme: { self.updateTheme(Marked(Theme.default)) })
+          forDefaultTheme: { self.updateTheme(Marked(Theme.default)) }
+        )
 
         self.usesTheme = state.appearance.usesTheme
 
-        guard self.shouldReloadData(
-          for: state, themeChanged: themeChanged
-        ) else {
-          return
-        }
+        guard self.shouldReloadData(for: state, themeChanged: themeChanged) else { return }
 
         self.showsFileIcon = state.appearance.showsFileIcon
         self.isShowHidden = state.fileBrowserShowHidden

  private(set) var lastThemeMark = Token()
  private(set) var theme = Theme.default

  required init(
    source: Observable<StateType>,
    emitter: ActionEmitter,
    state: StateType
  ) {
    self.emit = emitter.typedEmit()
    self.uuid = state.uuid
    self.root = Node(url: state.cwd)


  @IBAction func doubleClickAction(_: Any?) {
    let clickedTreeNode = self.clickedItem
    guard let node = self.node(from: clickedTreeNode) else { return }

    if node.isDir {
      self.toggle(item: clickedTreeNode)
    } else {
      self.emit(UuidAction(uuid: self.uuid, action: .open(url: node.url, mode: .default)))
    }
  }

  @IBAction func openInNewTab(_: Any?) {
    guard let node = self.node(from: self.clickedItem) else { return }

    self.emit(UuidAction(uuid: self.uuid, action: .open(url: node.url, mode: .newTab)))
  }

  @IBAction func openInCurrentTab(_: Any?) {
    guard let node = self.node(from: self.clickedItem) else { return }

    self.emit(UuidAction(uuid: self.uuid, action: .open(url: node.url, mode: .currentTab)))
  }

  @IBAction func openInHorizontalSplit(_: Any?) {
    guard let node = self.node(from: self.clickedItem) else { return }

    self.emit(UuidAction(uuid: self.uuid, action: .open(url: node.url, mode: .horizontalSplit)))
  }

  @IBAction func openInVerticalSplit(_: Any?) {
    guard let node = self.node(from: self.clickedItem) else { return }

    self.emit(UuidAction(uuid: self.uuid, action: .open(url: node.url, mode: .verticalSplit)))
  }

  @IBAction func setAsWorkingDirectory(_: Any?) {
    guard let node = self.node(from: self.clickedItem) else { return }

    guard node.url.isDir else { return }

    self.emit(UuidAction(uuid: self.uuid, action: .setAsWorkingDirectory(node.url)))
  }
}

// MARK: - NSOutlineViewDelegate
extension FileOutlineView {

  func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
    let view = self.makeView(
      withIdentifier: NSUserInterfaceItemIdentifier("file-row-view"),
      owner: self
    ) as? ThemedTableRow ?? ThemedTableRow(withIdentifier: "file-row-view", themedView: self)

    return view
  }

  func outlineView(_: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
    guard let node = self.node(from: item) else { return nil }

    let cellView = self.makeView(
      withIdentifier: NSUserInterfaceItemIdentifier("file-cell-view"),
