findAncestorCached<T extends FNode> function
O(depth) ancestor lookup using cached parent chain. Each step is O(1).
Implementation
T? findAncestorCached<T extends FNode>(FluentDocument document, FNode node) {
String? currentId = node.id;
while (currentId != null) {
final current = document.nodeById(currentId);
if (current is T) return current;
currentId = document.findParentCached(currentId);
}
return null;
}