 		
 	}
 	
+	open var separatorInset: UIEdgeInsets {
+		return parent?.separatorInset ?? .zero
+	}
+	
+	var isLeaf: Bool {
+		return parent?.children.last === self
+	}
+	
 	private weak var _treeController: TreeController?
 	fileprivate var isViewable: Bool {
 		return cellIdentifier != nil

		}
	}
	
//	fileprivate var _isSelected: Bool = false
//	open var isSelected: Bool {
//		get {
//			return _isSelected
//		}
//		set {
//			_isSelected = newValue
//			if newValue {
//				treeController?.selectCell(for: self, animated: true, scrollPosition: .none)
//			}
//			else {
//				treeController?.deselectCell(for: self, animated: true)
//			}
//		}
//	}
	
	open func loadChildren() {
	}
	
	open func update(from node: TreeNode) {
		isExpanded = node.isExpanded
//		isSelected = node.isSelected
		estimatedHeight = node.estimatedHeight
		
		if let to = _children, let from = node._children {

		}
	}
	
	open var indentationLevel: Int {
		return parent?.isViewable == true ? parent!.indentationLevel + 1 : parent?.indentationLevel ?? 0
	}
	
