 					let newIndexPath = IndexPath(row: start + new!, section: 0)
 					let node = nodes[new!]
 					let oldNode = from[old!]
+					
+					node.isExpanded = oldNode.isExpanded
+					node.isSelected = oldNode.isSelected
+					node.estimatedHeight = oldNode.estimatedHeight
 					node.update(from: oldNode)
 					
 					if node.isSelected {

		set {
			let from = _children
			let to = newValue
			for a in to {
				if let i = from?.index(of: a), let b = from?[i] {
					a.isExpanded = b.isExpanded
					a.isSelected = b.isSelected
					a.estimatedHeight = b.estimatedHeight
				}
			}
			
			if from != nil, let treeController = treeController, let index = flatIndex {
				let size = self.size

			}
		}
		else {
			var set = Set(from)
			
			for a in nodes {
				if let b = set.remove(a) {
					a.isExpanded = b.isExpanded
					a.isSelected = b.isSelected
					a.estimatedHeight = b.estimatedHeight
					a.update(from: b)
				}
			}

			tableView?.reloadData()
		}
		
