 	
 	
 	private var _children: [TreeNode]?
+	
 	public var children: [TreeNode] {
 		get {
 			if _children == nil {

			return _treeController ?? parent?.treeController
		}
		set {
			_treeController = newValue
			didMoveToTreeController(treeController)
		}
	}
	
	open func didMoveToTreeController(_ treeController: TreeController?) {
		children.forEach {$0.didMoveToTreeController(treeController)}
	}
	
	open var isExpandable: Bool = true
	open var canMove: Bool = false
	
	private var removeRange: CountableRange<Int>?
	open var isExpanded: Bool = true {
		willSet {
			guard treeController != nil else {return}
			guard isExpanded else {return}
			guard newValue != isExpanded else {return}

			self.removeRange = range
		}
		didSet {
			guard !isInBatch else {return}
			if let range = removeRange {
				treeController?.removeNodes(at: range)
				self.removeRange = nil
