 			oldValue?.treeController = nil
 			content?.treeController = self
 			let to = content?.flattened
-			if oldValue == nil || !UIView.areAnimationsEnabled {
+			if oldValue == nil || !UIView.areAnimationsEnabled || (to?.count ?? 0) >= TransitionItemsLimit || flattened.count >= TransitionItemsLimit {
 				flattened = to ?? []
 				updateIndexes()
 				tableView?.reloadData()

				_children = to
				let range = index..<(index + size)
				let to = flattened
				if range.count < 100 && to.count < 100 {
					treeController.replaceNodes(at: range, with: to)
				}
				else {

open class TreeNode: NSObject {
	open var cellIdentifier: String?
	open func configure(cell: UITableViewCell) -> Void {
	}
	
	public init(cellIdentifier: String? = nil) {
