findAncestorCached<T extends FNode> function

T? findAncestorCached<T extends FNode>(
  1. FluentDocument document,
  2. FNode node
)

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;
}