public void LinkLexicalEnvironments(RuleContext context, LexicalEnvironment parentEnvironment)
        {
            if (context is IScopedContext scoped)
            {
                parentEnvironment.AddChild(scoped.LexicalEnvironment);
                parentEnvironment         = scoped.LexicalEnvironment;
                parentEnvironment.Context = context;
            }

            for (int i = 0; i < context.ChildCount; i++)
            {
                var child = context.GetChild(i);

                if (child is RuleContext ruleContext)
                {
                    LinkLexicalEnvironments(ruleContext, parentEnvironment);
                }
            }
        }