This contextualization will allow to have a (more complex) graph that
will contain the information of the parent rule of the current rule.
This will allow calling `getApplicableReplacedBy` and thus remove the
flattening logic, which was imperfect.
On the other hand, this needs to make recursive calls to
`ruleDepsOfRule` in case of a reference node, and thus make the graph
much fatter.
Approx TODO (see `ruleDependencies.ts`):
- [ ] refactor to propagate the `parentRuleNode` in the rule
dependencies
- [ ] build recursive calls into `ruleDepsOfReference`