referenceChain method
Visits static reference targets once per chain.
Implementation
Iterable<LocatedNode> referenceChain(ReferenceGraph graph) sync* {
final seen = <ReferenceLocation>{};
var current = this;
while (seen.add(current.location)) {
yield current;
if (!current.node.fields.containsKey(r'$ref')) {
return;
}
final ReferenceTarget? edge = graph.targetFor(
current.at('${current.node.pointer}/\$ref'),
);
if (edge == null) {
return;
}
current = current.target(edge);
}
}