   private let keyboardWatcher = MDCKeyboardWatcher()
 
   var headerView: HeaderView!
+
+  enum Section {
+    case main
+  }
+
+  @available(iOS 14.0, *)
+  private(set) lazy var dataSource: UICollectionViewDiffableDataSource<Section, CBCNode>! = nil
+  var collectionView: UICollectionView! = nil
 
   init(node: CBCNode) {
     let filteredPresentable = node.children.filter { return $0.isPresentable() }

        return $0.node.title.range(of: searchText, options: .caseInsensitive) != nil
      }
    }
    tableView.reloadData()
  }

  func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searched = results
    tableView.reloadData()
  }

  func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {


  func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    isSearchActive = true
    refreshTable()
  }

  @objc func dismissKeyboard() {
    self.view.endEditing(true)
    isSearchActive = false

  }

  func refreshTable() {
    if #available(iOS 14.0, *) {
      #if compiler(>=5.3)
        applySnapshot()
      #endif
    } else {
      tableView.reloadData()
    }
  }

  @objc(gestureRecognizer:shouldReceiveTouch:)
