in src/grammar.ts [1480:1504]
private static _structuralEquals(a: StackElement | null, b: StackElement | null): boolean {
do {
if (a === b) {
return true;
}
if (!a && !b) {
// End of list reached for both
return true;
}
if (!a || !b) {
// End of list reached only for one
return false;
}
if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {
return false;
}
// Go to previous pair
a = a.parent;
b = b.parent;
} while (true);
}