 	
 	public func beginUpdates() {
 		if UIView.areAnimationsEnabled {
-			tableView.beginUpdates()
+			tableView?.beginUpdates()
 		}
 		updatesCounter += 1
 	}
 	
 	public func endUpdates() {
 		if UIView.areAnimationsEnabled {
-			tableView.endUpdates()
+			tableView?.endUpdates()
 		}
 		updatesCounter -= 1
 		if updatesCounter == 0 {
-			tableView.reloadData()
+			tableView?.reloadData()
 			delegate?.treeControllerDidUpdateContent?(self)
 		}
 	}

					
					switch b.transitionStyle(from: a) {
					case .reload:
						tableView.reloadRows(at: [indexPath], with: animation)
						break
					case .reconfigure:
						if let cell = tableView.cellForRow(at: indexPath) {
							b.configure(cell: cell)
						}
					//tableView.reloadRows(at: [indexPath], with: .none)
					default:
						break
					}

					if nodes[new!].isSelected {
						selections.append(indexPath)
					}
					tableView?.insertRows(at: [indexPath], with: animation)
				case .delete:
					tableView?.deleteRows(at: [IndexPath(row: start + old!, section: 0)], with: animation)
				case .move:
					//				tableView?.moveRow(at: IndexPath(row: start + old!, section: 0), to: IndexPath(row: start + new!, section: 0))
					let indexPath = IndexPath(row: start + new!, section: 0)
					if nodes[new!].isSelected {
						selections.append(indexPath)
					}
					
					tableView?.deleteRows(at: [IndexPath(row: start + old!, section: 0)], with: animation)
					tableView?.insertRows(at: [indexPath], with: animation)
				case .update:
					let indexPath = IndexPath(row: start + old!, section: 0)
					let a = from[old!]
